From: Samuel Iglesias Gonsalvez Date: Tue, 23 Jun 2015 06:53:36 +0000 (+0200) Subject: glsl: shader storage blocks use different max block size values than uniforms X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=203cd1bf28b88e041a693c867b4dd705236b0d5f;p=mesa.git glsl: shader storage blocks use different max block size values than uniforms Signed-off-by: Samuel Iglesias Gonsalvez Reviewed-by: Kristian Høgsberg --- diff --git a/src/glsl/linker.cpp b/src/glsl/linker.cpp index 9be957a3f80..aebf2560dab 100644 --- a/src/glsl/linker.cpp +++ b/src/glsl/linker.cpp @@ -2803,13 +2803,23 @@ check_resources(struct gl_context *ctx, struct gl_shader_program *prog) unsigned total_shader_storage_blocks = 0; for (unsigned i = 0; i < prog->NumUniformBlocks; i++) { - if (prog->UniformBlocks[i].UniformBufferSize > ctx->Const.MaxUniformBlockSize) { + /* Don't check SSBOs for Uniform Block Size */ + if (!prog->UniformBlocks[i].IsShaderStorage && + prog->UniformBlocks[i].UniformBufferSize > ctx->Const.MaxUniformBlockSize) { linker_error(prog, "Uniform block %s too big (%d/%d)\n", prog->UniformBlocks[i].Name, prog->UniformBlocks[i].UniformBufferSize, ctx->Const.MaxUniformBlockSize); } + if (prog->UniformBlocks[i].IsShaderStorage && + prog->UniformBlocks[i].UniformBufferSize > ctx->Const.MaxShaderStorageBlockSize) { + linker_error(prog, "Shader storage block %s too big (%d/%d)\n", + prog->UniformBlocks[i].Name, + prog->UniformBlocks[i].UniformBufferSize, + ctx->Const.MaxShaderStorageBlockSize); + } + for (unsigned j = 0; j < MESA_SHADER_STAGES; j++) { if (prog->UniformBlockStageIndex[j][i] != -1) { struct gl_shader *sh = prog->_LinkedShaders[j];