From: Timothy Arceri Date: Sun, 20 Nov 2016 12:05:42 +0000 (+1100) Subject: mesa/glsl: set {clip,cull}_distance_array_size directly in gl_program X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=fc707f570f918ab0defd33405c8c82f307196d17;p=mesa.git mesa/glsl: set {clip,cull}_distance_array_size directly in gl_program There are some line wrapping violations here but those lines will get deleted in the following patch. Reviewed-by: Nicolai Hähnle --- diff --git a/src/compiler/glsl/glsl_to_nir.cpp b/src/compiler/glsl/glsl_to_nir.cpp index faf62100120..fde6a018750 100644 --- a/src/compiler/glsl/glsl_to_nir.cpp +++ b/src/compiler/glsl/glsl_to_nir.cpp @@ -169,8 +169,6 @@ glsl_to_nir(const struct gl_shader_program *shader_prog, shader->info->name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name); if (shader_prog->Label) shader->info->label = ralloc_strdup(shader, shader_prog->Label); - shader->info->clip_distance_array_size = sh->Program->ClipDistanceArraySize; - shader->info->cull_distance_array_size = sh->Program->CullDistanceArraySize; shader->info->has_transform_feedback_varyings = shader_prog->TransformFeedback.NumVarying > 0; diff --git a/src/compiler/glsl/linker.cpp b/src/compiler/glsl/linker.cpp index 846f77f4c7d..261ac236551 100644 --- a/src/compiler/glsl/linker.cpp +++ b/src/compiler/glsl/linker.cpp @@ -634,8 +634,8 @@ analyze_clip_cull_usage(struct gl_shader_program *prog, /** * Verify that a vertex shader executable meets all semantic requirements. * - * Also sets prog->Vert.ClipDistanceArraySize and - * prog->Vert.CullDistanceArraySize as a side effect. + * Also sets info.clip_distance_array_size and + * info.cull_distance_array_size as a side effect. * * \param shader Vertex shader executable to be verified */ @@ -690,8 +690,8 @@ validate_vertex_shader_executable(struct gl_shader_program *prog, } analyze_clip_cull_usage(prog, shader, ctx, - &prog->Vert.ClipDistanceArraySize, - &prog->Vert.CullDistanceArraySize); + &shader->Program->info.clip_distance_array_size, + &shader->Program->info.cull_distance_array_size); } void @@ -703,8 +703,8 @@ validate_tess_eval_shader_executable(struct gl_shader_program *prog, return; analyze_clip_cull_usage(prog, shader, ctx, - &prog->TessEval.ClipDistanceArraySize, - &prog->TessEval.CullDistanceArraySize); + &shader->Program->info.clip_distance_array_size, + &shader->Program->info.cull_distance_array_size); } @@ -735,8 +735,8 @@ validate_fragment_shader_executable(struct gl_shader_program *prog, /** * Verify that a geometry shader executable meets all semantic requirements * - * Also sets prog->Geom.VerticesIn, and prog->Geom.ClipDistanceArraySize and - * prog->Geom.CullDistanceArraySize as a side effect. + * Also sets prog->Geom.VerticesIn, and info.clip_distance_array_sizeand + * info.cull_distance_array_size as a side effect. * * \param shader Geometry shader executable to be verified */ @@ -752,8 +752,8 @@ validate_geometry_shader_executable(struct gl_shader_program *prog, prog->Geom.VerticesIn = num_vertices; analyze_clip_cull_usage(prog, shader, ctx, - &prog->Geom.ClipDistanceArraySize, - &prog->Geom.CullDistanceArraySize); + &shader->Program->info.clip_distance_array_size, + &shader->Program->info.cull_distance_array_size); } /** @@ -4776,14 +4776,14 @@ link_shaders(struct gl_context *ctx, struct gl_shader_program *prog) } if (num_shaders[MESA_SHADER_GEOMETRY] > 0) { - prog->LastClipDistanceArraySize = prog->Geom.ClipDistanceArraySize; - prog->LastCullDistanceArraySize = prog->Geom.CullDistanceArraySize; + prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->info.clip_distance_array_size; + prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_GEOMETRY]->Program->info.cull_distance_array_size; } else if (num_shaders[MESA_SHADER_TESS_EVAL] > 0) { - prog->LastClipDistanceArraySize = prog->TessEval.ClipDistanceArraySize; - prog->LastCullDistanceArraySize = prog->TessEval.CullDistanceArraySize; + prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->info.clip_distance_array_size; + prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_TESS_EVAL]->Program->info.cull_distance_array_size; } else if (num_shaders[MESA_SHADER_VERTEX] > 0) { - prog->LastClipDistanceArraySize = prog->Vert.ClipDistanceArraySize; - prog->LastCullDistanceArraySize = prog->Vert.CullDistanceArraySize; + prog->LastClipDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_VERTEX]->Program->info.clip_distance_array_size; + prog->LastCullDistanceArraySize = prog->_LinkedShaders[MESA_SHADER_VERTEX]->Program->info.cull_distance_array_size; } else { prog->LastClipDistanceArraySize = 0; /* Not used */ prog->LastCullDistanceArraySize = 0; /* Not used */ diff --git a/src/mesa/drivers/dri/i965/brw_vs.c b/src/mesa/drivers/dri/i965/brw_vs.c index 3bcd7c67ee6..a8225801858 100644 --- a/src/mesa/drivers/dri/i965/brw_vs.c +++ b/src/mesa/drivers/dri/i965/brw_vs.c @@ -294,7 +294,7 @@ brw_vs_populate_key(struct brw_context *brw, if (ctx->Transform.ClipPlanesEnabled != 0 && (ctx->API == API_OPENGL_COMPAT || ctx->API == API_OPENGLES) && - vp->program.ClipDistanceArraySize == 0) { + vp->program.info.clip_distance_array_size == 0) { key->nr_userclip_plane_consts = _mesa_logbase2(ctx->Transform.ClipPlanesEnabled) + 1; } diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h index e8eddce0603..274dbd534b4 100644 --- a/src/mesa/main/mtypes.h +++ b/src/mesa/main/mtypes.h @@ -1933,10 +1933,6 @@ struct gl_program GLbitfield ShadowSamplers; /**< Texture units used for shadow sampling. */ GLbitfield ExternalSamplersUsed; /**< Texture units used for samplerExternalOES */ - /* Vertex and geometry shaders fields */ - unsigned ClipDistanceArraySize; - unsigned CullDistanceArraySize; - /* Fragement shader only fields */ GLboolean OriginUpperLeft; GLboolean PixelCenterInteger; @@ -2747,20 +2743,6 @@ struct gl_shader_program /** Post-link gl_FragDepth layout for ARB_conservative_depth. */ enum gl_frag_depth_layout FragDepthLayout; - /** - * Tessellation Evaluation shader state from layout qualifiers. - */ - struct { - /** - * True if gl_ClipDistance is written to. Copied into - * gl_program by _mesa_copy_linked_program_data(). - */ - GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or - 0 if not present. */ - GLuint CullDistanceArraySize; /**< Size of the gl_CullDistance array, or - 0 if not present. */ - } TessEval; - /** * Geometry shader state - copied into gl_program by * _mesa_copy_linked_program_data(). @@ -2768,30 +2750,10 @@ struct gl_shader_program struct { GLint VerticesIn; - /** - * True if gl_ClipDistance is written to. Copied into - * gl_program by _mesa_copy_linked_program_data(). - */ - GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or - 0 if not present. */ - GLuint CullDistanceArraySize; /**< Size of the gl_CullDistance array, or - 0 if not present. */ bool UsesEndPrimitive; bool UsesStreams; } Geom; - /** Vertex shader state */ - struct { - /** - * True if gl_ClipDistance is written to. Copied into gl_program - * by _mesa_copy_linked_program_data(). - */ - GLuint ClipDistanceArraySize; /**< Size of the gl_ClipDistance array, or - 0 if not present. */ - GLuint CullDistanceArraySize; /**< Size of the gl_CullDistance array, or - 0 if not present. */ - } Vert; - /** * Compute shader state - copied into gl_program by * _mesa_copy_linked_program_data(). diff --git a/src/mesa/main/shaderapi.c b/src/mesa/main/shaderapi.c index 8ad4e36a309..889ac0fad86 100644 --- a/src/mesa/main/shaderapi.c +++ b/src/mesa/main/shaderapi.c @@ -2202,17 +2202,11 @@ _mesa_copy_linked_program_data(const struct gl_shader_program *src, dst->info.separate_shader = src->SeparateShader; switch (dst_sh->Stage) { - case MESA_SHADER_VERTEX: - dst->ClipDistanceArraySize = src->Vert.ClipDistanceArraySize; - dst->CullDistanceArraySize = src->Vert.CullDistanceArraySize; - break; case MESA_SHADER_TESS_EVAL: { dst->info.tess.primitive_mode = dst_sh->info.TessEval.PrimitiveMode; dst->info.tess.spacing = dst_sh->info.TessEval.Spacing; dst->info.tess.ccw = dst_sh->info.TessEval.VertexOrder == GL_CCW; dst->info.tess.point_mode = dst_sh->info.TessEval.PointMode; - dst->ClipDistanceArraySize = src->TessEval.ClipDistanceArraySize; - dst->CullDistanceArraySize = src->TessEval.CullDistanceArraySize; break; } case MESA_SHADER_GEOMETRY: { @@ -2221,8 +2215,6 @@ _mesa_copy_linked_program_data(const struct gl_shader_program *src, dst->info.gs.invocations = dst_sh->info.Geom.Invocations; dst->info.gs.input_primitive = dst_sh->info.Geom.InputType; dst->info.gs.output_primitive = dst_sh->info.Geom.OutputType; - dst->ClipDistanceArraySize = src->Geom.ClipDistanceArraySize; - dst->CullDistanceArraySize = src->Geom.CullDistanceArraySize; dst->info.gs.uses_end_primitive = src->Geom.UsesEndPrimitive; dst->info.gs.uses_streams = src->Geom.UsesStreams; break; diff --git a/src/mesa/state_tracker/st_program.c b/src/mesa/state_tracker/st_program.c index fb0a138c245..94204d7bd32 100644 --- a/src/mesa/state_tracker/st_program.c +++ b/src/mesa/state_tracker/st_program.c @@ -404,12 +404,12 @@ st_translate_vertex_program(struct st_context *st, if (ureg == NULL) return false; - if (stvp->Base.ClipDistanceArraySize) + if (stvp->Base.info.clip_distance_array_size) ureg_property(ureg, TGSI_PROPERTY_NUM_CLIPDIST_ENABLED, - stvp->Base.ClipDistanceArraySize); - if (stvp->Base.CullDistanceArraySize) + stvp->Base.info.clip_distance_array_size); + if (stvp->Base.info.cull_distance_array_size) ureg_property(ureg, TGSI_PROPERTY_NUM_CULLDIST_ENABLED, - stvp->Base.CullDistanceArraySize); + stvp->Base.info.cull_distance_array_size); if (ST_DEBUG & DEBUG_MESA) { _mesa_print_program(&stvp->Base); @@ -1219,12 +1219,12 @@ st_translate_program_common(struct st_context *st, memset(outputMapping, 0, sizeof(outputMapping)); memset(out_state, 0, sizeof(*out_state)); - if (prog->ClipDistanceArraySize) + if (prog->info.clip_distance_array_size) ureg_property(ureg, TGSI_PROPERTY_NUM_CLIPDIST_ENABLED, - prog->ClipDistanceArraySize); - if (prog->CullDistanceArraySize) + prog->info.clip_distance_array_size); + if (prog->info.cull_distance_array_size) ureg_property(ureg, TGSI_PROPERTY_NUM_CULLDIST_ENABLED, - prog->CullDistanceArraySize); + prog->info.cull_distance_array_size); /* * Convert Mesa program inputs to TGSI input register semantics.