diff options
author | Tobias Klausmann <[email protected]> | 2016-05-08 22:44:08 +0200 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2016-05-14 08:28:23 +1000 |
commit | 8f45f4f3cafa678292a87f316d2729da7800bab5 (patch) | |
tree | 72db5dd20f7dff87552fa10c78119955fe92402b /src/mesa | |
parent | 2be258ea1826b2bee2173efafa98af9874cfddfa (diff) |
mesa/st: Add support for GL_ARB_cull_distance (v2)
v2: don't bother with cull dist varyings except to assert.
Signed-off-by: Tobias Klausmann <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/mesa')
-rw-r--r-- | src/mesa/state_tracker/st_extensions.c | 1 | ||||
-rw-r--r-- | src/mesa/state_tracker/st_program.c | 26 |
2 files changed, 27 insertions, 0 deletions
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 746f4fcdd9e..4b9a3bd2858 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -574,6 +574,7 @@ void st_init_extensions(struct pipe_screen *screen, { o(ARB_color_buffer_float), PIPE_CAP_VERTEX_COLOR_UNCLAMPED }, { o(ARB_conditional_render_inverted), PIPE_CAP_CONDITIONAL_RENDER_INVERTED }, { o(ARB_copy_image), PIPE_CAP_COPY_BETWEEN_COMPRESSED_AND_PLAIN_FORMATS }, + { o(ARB_cull_distance), PIPE_CAP_CULL_DISTANCE }, { o(ARB_depth_clamp), PIPE_CAP_DEPTH_CLIP_DISABLE }, { o(ARB_depth_texture), PIPE_CAP_TEXTURE_SHADOW_MAP }, { o(ARB_derivative_control), PIPE_CAP_TGSI_FS_FINE_DERIVATIVE }, diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index 444e5aac7bd..4e37a1707c2 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -310,6 +310,11 @@ st_translate_vertex_program(struct st_context *st, output_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; output_semantic_index[slot] = 1; break; + case VARYING_SLOT_CULL_DIST0: + case VARYING_SLOT_CULL_DIST1: + /* these should have been lowered by GLSL */ + assert(0); + break; case VARYING_SLOT_EDGE: assert(0); break; @@ -366,6 +371,9 @@ st_translate_vertex_program(struct st_context *st, if (stvp->Base.Base.ClipDistanceArraySize) ureg_property(ureg, TGSI_PROPERTY_NUM_CLIPDIST_ENABLED, stvp->Base.Base.ClipDistanceArraySize); + if (stvp->Base.Base.CullDistanceArraySize) + ureg_property(ureg, TGSI_PROPERTY_NUM_CULLDIST_ENABLED, + stvp->Base.Base.CullDistanceArraySize); if (ST_DEBUG & DEBUG_MESA) { _mesa_print_program(&stvp->Base.Base); @@ -627,6 +635,11 @@ st_translate_fragment_program(struct st_context *st, input_semantic_index[slot] = 1; interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; break; + case VARYING_SLOT_CULL_DIST0: + case VARYING_SLOT_CULL_DIST1: + /* these should have been lowered by GLSL */ + assert(0); + break; /* In most cases, there is nothing special about these * inputs, so adopt a convention to use the generic * semantic name and the mesa VARYING_SLOT_ number as the @@ -1044,6 +1057,9 @@ st_translate_program_common(struct st_context *st, if (prog->ClipDistanceArraySize) ureg_property(ureg, TGSI_PROPERTY_NUM_CLIPDIST_ENABLED, prog->ClipDistanceArraySize); + if (prog->CullDistanceArraySize) + ureg_property(ureg, TGSI_PROPERTY_NUM_CULLDIST_ENABLED, + prog->CullDistanceArraySize); /* * Convert Mesa program inputs to TGSI input register semantics. @@ -1089,6 +1105,11 @@ st_translate_program_common(struct st_context *st, input_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; input_semantic_index[slot] = 1; break; + case VARYING_SLOT_CULL_DIST0: + case VARYING_SLOT_CULL_DIST1: + /* these should have been lowered by GLSL */ + assert(0); + break; case VARYING_SLOT_PSIZ: input_semantic_name[slot] = TGSI_SEMANTIC_PSIZE; input_semantic_index[slot] = 0; @@ -1191,6 +1212,11 @@ st_translate_program_common(struct st_context *st, output_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; output_semantic_index[slot] = 1; break; + case VARYING_SLOT_CULL_DIST0: + case VARYING_SLOT_CULL_DIST1: + /* these should have been lowered by GLSL */ + assert(0); + break; case VARYING_SLOT_LAYER: output_semantic_name[slot] = TGSI_SEMANTIC_LAYER; output_semantic_index[slot] = 0; |