diff options
author | Paul Berry <stereotype441@gmail.com> | 2013-10-08 13:02:45 -0700 |
---|---|---|
committer | Paul Berry <stereotype441@gmail.com> | 2013-10-08 13:02:45 -0700 |
commit | 5425ec2b42769588f423f76570695eb93b16d464 (patch) | |
tree | 20212cd9a27628006c8a5c13d43f3b5ec40b7222 | |
parent | 4d280e0c2e9ad12e06adb6f1a657af059f7ba000 (diff) |
Check off some mesa tasks related to the following commits:
commit d14fcd7db7501cc5dbbcefac166238d9a49ccd84
Author: Paul Berry <stereotype441@gmail.com>
Date: Fri Jul 12 20:17:13 2013 -0700
i965/gs: Fixup gl_PointSize on entry to geometry shaders.
gl_PointSize is stored in the w component of VARYING_SLOT_PSIZ, but
the geometry shader infrastructure assumes that it should look for all
geometry shader inputs of type float in the x component. So when
compiling a geomtery shader that uses a gl_PointSize input, fix it up
during the shader prolog by moving the w component to the x component.
This is similar to how we emit fixups and workarounds for vertex
shader attributes.
Fixes piglit test spec/glsl-1.50/execution/geometry/core-inputs.
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
commit 8f758b0b92f6105c9615740096fa1206befe343b
Author: Bryan Cain <bryancain3@gmail.com>
Date: Fri Feb 15 09:30:51 2013 -0600
glsl/gs: handle gl_ClipDistance geometry input in lower_clip_distance.
This corresponds to the lowering of gl_ClipDistance to
gl_ClipDistanceMESA for vertex and geometry shader outputs. Since
this lowering pass occurs after lower_named_interface blocks, it deals
with 2D arrays (gl_ClipDistance[vertex][clip_plane]) rather than 1D
arrays in an interface block
(gl_in[vertex].gl_ClipDistance[clip_plane]).
v2 (Paul Berry <stereotype441@gmail.com>): Fix indexing order for
gl_ClipDistance input lowering. Properly lower bulk assignment of
gl_ClipDistance inputs. Rework for GLSL 1.50 style geometry shaders.
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
v3 (Paul Berry <stereotype441@gmail.com>): Add comments and assertions
to clarify that the 2D version of clip distance is only used for
geometry shader inputs.
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
commit c09adcb21bd2c3993f1e8a4997d718d9fee89e6d
Author: Paul Berry <stereotype441@gmail.com>
Date: Fri Aug 2 18:12:23 2013 -0700
glsl/gs: add gl_in support to builtin_variables.cpp.
Previously, builtin_variables.cpp was written assuming that we
supported ARB_geometry_shader4 style geometry shader inputs, meaning
that each built-in varying input to a geometry was supplied via an
array variable whose name ended in "In", e.g. gl_PositionIn or
gl_PointSizeIn.
However, in GLSL 1.50 style geometry shaders, things work
differently--built-in inputs are supplied to geometry shaders via a
built-in interface block called gl_in, which contains all the built-in
inputs using their usual names (e.g. the gl_Position input is supplied
to the geometry shader as gl_in[i].gl_Position).
This patch adds the necessary logic to builtin_variables.cpp to create
the gl_in interface block and populate it accordingly for geometry
shader inputs. The old ARB_geometry_shader4 style varyings are
removed, though they can easily be added back in the future if we
decide to support ARB_geometry_shader4.
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
commit 378ff1dbac8c01f2524282b5caa81e4296ee296e
Author: Paul Berry <stereotype441@gmail.com>
Date: Mon Sep 9 16:39:47 2013 -0700
glsl: Keep track of location for interface block fields.
This patch adds a "location" element to struct glsl_struct_field, so
that we can keep track of the gl_varying_slot associated with each
built-in geometry shader input.
In lower_named_interface_blocks, we use this value to populate the
"location" field in the ir_variable that stores each geometry shader
input.
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Jordan Justen <jordan.l.justen@intel.com>
-rw-r--r-- | gl32.xml | 6 |
1 files changed, 3 insertions, 3 deletions
@@ -531,7 +531,7 @@ Writing to gl_Position from either the vertex or geometry shader is optional. </task> - <task name="GS39" specref="GL 3.2 2.12.4" piglit="done"> + <task name="GS39" specref="GL 3.2 2.12.4" piglit="done" mesa="done"> gl_in[] receives values from built-in output variables written by the vertex shader. </task> @@ -1075,7 +1075,7 @@ Not necessary to test since the value is undefined. </task> - <task name="GS128" specref="GLSL 1.50 7.1" piglit="done"> + <task name="GS128" specref="GLSL 1.50 7.1" piglit="done" mesa="done"> The gl_PerVertex interface block also appears as a geometry shader input interface block, having block-name gl_PerVertex, instance_name gl_in, and an implicit array size. @@ -1388,7 +1388,7 @@ is redeclared as e.g. "flat in vec4 gl_FrontColor". No "gl_in[]" is used. </task> - <task name="IB38" specref="GLSL 1.50 7.1" piglit="done"> + <task name="IB38" specref="GLSL 1.50 7.1" piglit="done" mesa="done"> The output variables gl_Position, gl_PointSize, and gl_ClipDistance are now considered to be nested within an interface block having block-name gl_PerVertex and no |