[Mesa-dev] [PATCH] mesa/st: fix number of ubos being declared in a shader
Brian Paul
brianp at vmware.com
Wed May 14 12:45:04 PDT 2014
On 05/14/2014 01:07 PM, sroland at vmware.com wrote:
> From: Roland Scheidegger <sroland at vmware.com>
>
> Previously the code used the total number of ubos being declared in the
> linked program (so the ubos of all shaders combined), use the number
> from the particular shader instead.
> This fixes an assertion failure with piglit arb_uniform_buffer_object-maxblocks
> seen in llvmpipe since 8a9f5ecdb116d0449d63f7b94efbfa8b205d826f as it now emits
> code for each declared buffer, not just the ones actually used.
> ---
> src/mesa/state_tracker/st_glsl_to_tgsi.cpp | 8 +++++---
> 1 file changed, 5 insertions(+), 3 deletions(-)
>
> diff --git a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> index f3535c5..79d013d 100644
> --- a/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> +++ b/src/mesa/state_tracker/st_glsl_to_tgsi.cpp
> @@ -325,6 +325,7 @@ public:
> struct gl_context *ctx;
> struct gl_program *prog;
> struct gl_shader_program *shader_program;
> + struct gl_shader *shader;
> struct gl_shader_compiler_options *options;
>
> int next_temp;
> @@ -5096,11 +5097,11 @@ st_translate_program(
> }
> }
>
> - if (program->shader_program) {
> - unsigned num_ubos = program->shader_program->NumUniformBlocks;
> + if (program->shader) {
> + unsigned num_ubos = program->shader->NumUniformBlocks;
>
> for (i = 0; i < num_ubos; i++) {
> - ureg_DECL_constant2D(t->ureg, 0, program->shader_program->UniformBlocks[i].UniformBufferSize / 4, i + 1);
> + ureg_DECL_constant2D(t->ureg, 0, program->shader->UniformBlocks[i].UniformBufferSize / 4, i + 1);
> }
> }
>
> @@ -5221,6 +5222,7 @@ get_mesa_program(struct gl_context *ctx,
> v->ctx = ctx;
> v->prog = prog;
> v->shader_program = shader_program;
> + v->shader = shader;
> v->options = options;
> v->glsl_version = ctx->Const.GLSLVersion;
> v->native_integers = ctx->Const.NativeIntegers;
>
LGTM.
Reviewed-by: Brian Paul <brianp at vmware.com>
Should this fix go into the 10.2 or 10.1 branches?
-Brian
More information about the mesa-dev
mailing list