glsl: shader storage blocks use different max block size values than uniforms
Signed-off-by: Samuel Iglesias Gonsalvez <siglesias@igalia.com> Reviewed-by: Kristian Høgsberg <krh@bitplanet.net>
This commit is contained in:
parent
eb9a9b62b1
commit
203cd1bf28
|
@ -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];
|
||||
|
|
Loading…
Reference in New Issue