Module: Mesa
Branch: master
Commit: 1edbe0157d72c7ec6374e25ecfd8af895a54ac0c
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=1edbe0157d72c7ec6374e25ecfd8af895a54ac0c

Author: Ilia Mirkin <[email protected]>
Date:   Fri Jan  8 23:01:01 2016 -0500

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 <[email protected]>
Reviewed-by: Marek Olšák <[email protected]>
Reviewed-by: Dave Airlie <[email protected]>

---

 src/mesa/state_tracker/st_extensions.c | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/src/mesa/state_tracker/st_extensions.c 
b/src/mesa/state_tracker/st_extensions.c
index bdfbded..57eeed6 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -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;
+   }
 }
 
 

_______________________________________________
mesa-commit mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to