diff options
author | marha <marha@users.sourceforge.net> | 2014-04-13 14:28:06 +0200 |
---|---|---|
committer | marha <marha@users.sourceforge.net> | 2014-04-13 14:28:06 +0200 |
commit | 0bd141efd4832e01c8b269b8566dd5749e30ed55 (patch) | |
tree | cdad95c688236c6e2e36f13a3495c498393dabc8 /mesalib/src/glsl/link_uniform_blocks.cpp | |
parent | feab85024204c7db3ad243697fe06bf3960349a9 (diff) | |
parent | d2ad10d03be8e6d4b150bbdf2a28ea3d5a18a2ed (diff) | |
download | vcxsrv-0bd141efd4832e01c8b269b8566dd5749e30ed55.tar.gz vcxsrv-0bd141efd4832e01c8b269b8566dd5749e30ed55.tar.bz2 vcxsrv-0bd141efd4832e01c8b269b8566dd5749e30ed55.zip |
Merge remote-tracking branch 'origin/released'
Diffstat (limited to 'mesalib/src/glsl/link_uniform_blocks.cpp')
-rw-r--r-- | mesalib/src/glsl/link_uniform_blocks.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/mesalib/src/glsl/link_uniform_blocks.cpp b/mesalib/src/glsl/link_uniform_blocks.cpp index 72d6c5323..1a0e64318 100644 --- a/mesalib/src/glsl/link_uniform_blocks.cpp +++ b/mesalib/src/glsl/link_uniform_blocks.cpp @@ -251,7 +251,17 @@ link_uniform_blocks(void *mem_ctx, blocks[i].Name = ralloc_asprintf(blocks, "%s[%u]", name, b->array_elements[j]); blocks[i].Uniforms = &variables[parcel.index]; - blocks[i].Binding = 0; + + /* The GL_ARB_shading_language_420pack spec says: + * + * "If the binding identifier is used with a uniform block + * instanced as an array then the first element of the array + * takes the specified block binding and each subsequent + * element takes the next consecutive uniform block binding + * point." + */ + blocks[i].Binding = (b->has_binding) ? b->binding + j : 0; + blocks[i].UniformBufferSize = 0; blocks[i]._Packing = gl_uniform_block_packing(block_type->interface_packing); @@ -269,7 +279,7 @@ link_uniform_blocks(void *mem_ctx, } else { blocks[i].Name = ralloc_strdup(blocks, block_type->name); blocks[i].Uniforms = &variables[parcel.index]; - blocks[i].Binding = 0; + blocks[i].Binding = (b->has_binding) ? b->binding : 0; blocks[i].UniformBufferSize = 0; blocks[i]._Packing = gl_uniform_block_packing(block_type->interface_packing); |