Reviewed-by: Marek Olšák <marek.ol...@amd.com> Marek
On Sun, May 8, 2016 at 10:44 PM, Tobias Klausmann <tobias.johannes.klausm...@mni.thm.de> wrote: > Signed-off-by: Tobias Klausmann <tobias.johannes.klausm...@mni.thm.de> > --- > src/mesa/state_tracker/st_extensions.c | 1 + > src/mesa/state_tracker/st_program.c | 40 > ++++++++++++++++++++++++++++++++++ > 2 files changed, 41 insertions(+) > > diff --git a/src/mesa/state_tracker/st_extensions.c > b/src/mesa/state_tracker/st_extensions.c > index 746f4fc..4b9a3bd 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 444e5aa..02dbf2d 100644 > --- a/src/mesa/state_tracker/st_program.c > +++ b/src/mesa/state_tracker/st_program.c > @@ -310,6 +310,14 @@ 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: > + output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + output_semantic_index[slot] = 0; > + break; > + case VARYING_SLOT_CULL_DIST1: > + output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + output_semantic_index[slot] = 1; > + break; > case VARYING_SLOT_EDGE: > assert(0); > break; > @@ -366,6 +374,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 +638,16 @@ st_translate_fragment_program(struct st_context *st, > input_semantic_index[slot] = 1; > interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; > break; > + case VARYING_SLOT_CULL_DIST0: > + input_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + input_semantic_index[slot] = 0; > + interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; > + break; > + case VARYING_SLOT_CULL_DIST1: > + input_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + input_semantic_index[slot] = 1; > + interpMode[slot] = TGSI_INTERPOLATE_PERSPECTIVE; > + 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 +1065,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 +1113,14 @@ 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: > + input_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + input_semantic_index[slot] = 0; > + break; > + case VARYING_SLOT_CULL_DIST1: > + input_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + input_semantic_index[slot] = 1; > + break; > case VARYING_SLOT_PSIZ: > input_semantic_name[slot] = TGSI_SEMANTIC_PSIZE; > input_semantic_index[slot] = 0; > @@ -1191,6 +1223,14 @@ 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: > + output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + output_semantic_index[slot] = 0; > + break; > + case VARYING_SLOT_CULL_DIST1: > + output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; > + output_semantic_index[slot] = 1; > + break; > case VARYING_SLOT_LAYER: > output_semantic_name[slot] = TGSI_SEMANTIC_LAYER; > output_semantic_index[slot] = 0; > -- > 2.8.2 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev