From: Marek Olšák <marek.ol...@amd.com> The combined limits should only include shader stages that can be active at the same time. --- src/mesa/state_tracker/st_extensions.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c index 5287dff6703..5e580aad2e4 100644 --- a/src/mesa/state_tracker/st_extensions.c +++ b/src/mesa/state_tracker/st_extensions.c @@ -315,22 +315,21 @@ void st_init_limits(struct pipe_screen *screen, c->LowerTessLevel = true; c->LowerCsDerivedVariables = true; c->PrimitiveRestartForPatches = screen->get_param(screen, PIPE_CAP_PRIMITIVE_RESTART_FOR_PATCHES); c->MaxCombinedTextureImageUnits = _min(c->Program[MESA_SHADER_VERTEX].MaxTextureImageUnits + c->Program[MESA_SHADER_TESS_CTRL].MaxTextureImageUnits + c->Program[MESA_SHADER_TESS_EVAL].MaxTextureImageUnits + c->Program[MESA_SHADER_GEOMETRY].MaxTextureImageUnits + - c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits + - c->Program[MESA_SHADER_COMPUTE].MaxTextureImageUnits, + c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, MAX_COMBINED_TEXTURE_IMAGE_UNITS); /* This depends on program constants. */ c->MaxTextureCoordUnits = _min(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, MAX_TEXTURE_COORD_UNITS); c->MaxTextureUnits = _min(c->Program[MESA_SHADER_FRAGMENT].MaxTextureImageUnits, c->MaxTextureCoordUnits); @@ -389,22 +388,21 @@ void st_init_limits(struct pipe_screen *screen, c->UniformBufferOffsetAlignment = screen->get_param(screen, PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT); if (can_ubo) { extensions->ARB_uniform_buffer_object = GL_TRUE; c->MaxCombinedUniformBlocks = c->MaxUniformBufferBindings = c->Program[MESA_SHADER_VERTEX].MaxUniformBlocks + c->Program[MESA_SHADER_TESS_CTRL].MaxUniformBlocks + c->Program[MESA_SHADER_TESS_EVAL].MaxUniformBlocks + c->Program[MESA_SHADER_GEOMETRY].MaxUniformBlocks + - c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks + - c->Program[MESA_SHADER_COMPUTE].MaxUniformBlocks; + c->Program[MESA_SHADER_FRAGMENT].MaxUniformBlocks, assert(c->MaxCombinedUniformBlocks <= MAX_COMBINED_UNIFORM_BUFFERS); } c->GLSLFragCoordIsSysVal = screen->get_param(screen, PIPE_CAP_TGSI_FS_POSITION_IS_SYSVAL); c->GLSLFrontFacingIsSysVal = screen->get_param(screen, PIPE_CAP_TGSI_FS_FACE_IS_INTEGER_SYSVAL); /* GL_ARB_get_program_binary * @@ -455,22 +453,21 @@ void st_init_limits(struct pipe_screen *screen, c->MaxCombinedShaderStorageBlocks; c->MaxShaderStorageBlockSize = 1 << 27; extensions->ARB_shader_storage_buffer_object = GL_TRUE; } c->MaxCombinedImageUniforms = c->Program[MESA_SHADER_VERTEX].MaxImageUniforms + c->Program[MESA_SHADER_TESS_CTRL].MaxImageUniforms + c->Program[MESA_SHADER_TESS_EVAL].MaxImageUniforms + c->Program[MESA_SHADER_GEOMETRY].MaxImageUniforms + - c->Program[MESA_SHADER_FRAGMENT].MaxImageUniforms + - c->Program[MESA_SHADER_COMPUTE].MaxImageUniforms; + c->Program[MESA_SHADER_FRAGMENT].MaxImageUniforms; c->MaxCombinedShaderOutputResources += c->MaxCombinedImageUniforms; c->MaxImageUnits = MAX_IMAGE_UNITS; if (c->MaxCombinedImageUniforms) { extensions->ARB_shader_image_load_store = GL_TRUE; extensions->ARB_shader_image_size = GL_TRUE; } /* ARB_framebuffer_no_attachments */ c->MaxFramebufferWidth = c->MaxViewportWidth; c->MaxFramebufferHeight = c->MaxViewportHeight; -- 2.17.1 _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev