Commit 1edbe015 authored by Ilia Mirkin's avatar Ilia Mirkin

st/mesa: enable GL image extensions when backend supports them

This enables ARB_shader_image_load_store and ARB_shader_image_size when
the backend claims support for these. It will also implicitly enable the
image component of ARB_shader_texture_image_samples.
Signed-off-by: Ilia Mirkin's avatarIlia Mirkin <imirkin@alum.mit.edu>
Reviewed-by: default avatarMarek Olšák <marek.olsak@amd.com>
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
parent 2e0a8420
......@@ -226,6 +226,9 @@ void st_init_limits(struct pipe_screen *screen,
screen, sh, PIPE_SHADER_CAP_MAX_SHADER_BUFFERS) / 2;
pc->MaxShaderStorageBlocks = pc->MaxAtomicBuffers;
pc->MaxImageUniforms = screen->get_shader_param(
screen, sh, PIPE_SHADER_CAP_MAX_SHADER_IMAGES);
/* Gallium doesn't really care about local vs. env parameters so use the
* same limits.
*/
......@@ -371,6 +374,20 @@ void st_init_limits(struct pipe_screen *screen,
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->MaxImageUnits = MAX_IMAGE_UNITS;
c->MaxImageSamples = 0; /* XXX */
if (c->MaxCombinedImageUniforms) {
extensions->ARB_shader_image_load_store = GL_TRUE;
extensions->ARB_shader_image_size = GL_TRUE;
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment