Signed-off-by: Tobias Klausmann <tobias.johannes.klausm...@mni.thm.de> --- src/mesa/state_tracker/st_extensions.c | 4 ++++ src/mesa/state_tracker/st_program.c | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+)
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 23a4588..63f3334 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -466,6 +466,7 @@ void st_init_extensions(struct pipe_screen *screen, { o(ARB_conditional_render_inverted), PIPE_CAP_CONDITIONAL_RENDER_INVERTED }, { o(ARB_texture_view), PIPE_CAP_SAMPLER_VIEW_TARGET }, { o(ARB_clip_control), PIPE_CAP_CLIP_HALFZ }, + { o(ARB_cull_distance), PIPE_CAP_CULL_DISTANCE }, { o(EXT_polygon_offset_clamp), PIPE_CAP_POLYGON_OFFSET_CLAMP }, }; @@ -678,6 +679,9 @@ void st_init_extensions(struct pipe_screen *screen, if (glsl_feature_level >= 410) extensions->ARB_shader_precision = GL_TRUE; + if (glsl_feature_level >= 130) + extensions->ARB_cull_distance = GL_TRUE; + /* This extension needs full OpenGL 3.2, but we don't know if that's * supported at this point. Only check the GLSL version. */ if (consts->GLSLVersion >= 150 && diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index a9110d3..79e8ad7 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -253,6 +253,14 @@ st_prepare_vertex_program(struct gl_context *ctx, stvp->output_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; stvp->output_semantic_index[slot] = 1; break; + case VARYING_SLOT_CULL_DIST0: + stvp->output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; + stvp->output_semantic_index[slot] = 0; + break; + case VARYING_SLOT_CULL_DIST1: + stvp->output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; + stvp->output_semantic_index[slot] = 1; + break; case VARYING_SLOT_EDGE: assert(0); break; @@ -606,6 +614,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 @@ -941,6 +959,14 @@ st_translate_geometry_program(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; @@ -1028,6 +1054,14 @@ st_translate_geometry_program(struct st_context *st, gs_output_semantic_name[slot] = TGSI_SEMANTIC_CLIPDIST; gs_output_semantic_index[slot] = 1; break; + case VARYING_SLOT_CULL_DIST0: + gs_output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; + gs_output_semantic_index[slot] = 0; + break; + case VARYING_SLOT_CULL_DIST1: + gs_output_semantic_name[slot] = TGSI_SEMANTIC_CULLDIST; + gs_output_semantic_index[slot] = 1; + break; case VARYING_SLOT_LAYER: gs_output_semantic_name[slot] = TGSI_SEMANTIC_LAYER; gs_output_semantic_index[slot] = 0; -- 2.4.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev