nir: Get the number of SSBOs and UBOs right
authorIago Toral Quiroga <itoral@igalia.com>
Thu, 15 Oct 2015 06:47:09 +0000 (08:47 +0200)
committerIago Toral Quiroga <itoral@igalia.com>
Fri, 16 Oct 2015 08:12:44 +0000 (10:12 +0200)
Before d31f98a272e429d and 56e2bdbca36a20 we had a sigle index space for UBOs
and SSBOs, so NumBufferInterfaceBlocks would contain the combined number of
blocks, not just one kind. This means that for shader programs using both
UBOs and SSBOs, we were setting num_ssbos and num_ubos to a larger number than
we should. Since the above commits  we have separate index spaces for each
so we can just get the right numbers.

Reviewed-by: Jason Ekstrand <jason.ekstrand@intel.com>
src/glsl/nir/glsl_to_nir.cpp

index 5aba8f80b6b002bb5a47b94ea52dc6b838b5aa75..cf5bb9360c8338e10983812db914aa86bcc8ecfc 100644 (file)
@@ -152,9 +152,9 @@ glsl_to_nir(const struct gl_shader_program *shader_prog,
 
    shader->info.name = ralloc_asprintf(shader, "GLSL%d", shader_prog->Name);
    shader->info.num_textures = num_textures;
-   shader->info.num_ubos = sh->NumBufferInterfaceBlocks;
+   shader->info.num_ubos = sh->NumUniformBlocks;
    shader->info.num_abos = shader_prog->NumAtomicBuffers;
-   shader->info.num_ssbos = shader_prog->NumBufferInterfaceBlocks;
+   shader->info.num_ssbos = sh->NumShaderStorageBlocks;
    shader->info.num_images = sh->NumImages;
    shader->info.inputs_read = sh->Program->InputsRead;
    shader->info.outputs_written = sh->Program->OutputsWritten;