aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPierre-Eric Pelloux-Prayer <[email protected]>2019-07-12 15:46:27 +0200
committerMarek Olšák <[email protected]>2019-08-06 17:40:52 -0400
commit71e619a82549d9212c58a91ac0de53c0f21059dd (patch)
treee5ec8383d3fbc1192ddaefc49d3010f61dd61835
parent91924453eedf3d4e0d57e0c2458db4560122b096 (diff)
glapi: add EXT_shader_image_load_store
Reviewed-by: Marek Olšák <[email protected]>
-rw-r--r--src/mapi/glapi/gen/EXT_shader_image_load_store.xml82
-rw-r--r--src/mapi/glapi/gen/gl_API.xml3
-rw-r--r--src/mapi/glapi/gen/meson.build1
-rw-r--r--src/mesa/main/extensions_table.h1
-rw-r--r--src/mesa/main/mtypes.h1
-rw-r--r--src/mesa/state_tracker/st_extensions.c4
6 files changed, 92 insertions, 0 deletions
diff --git a/src/mapi/glapi/gen/EXT_shader_image_load_store.xml b/src/mapi/glapi/gen/EXT_shader_image_load_store.xml
new file mode 100644
index 00000000000..2a69357efa5
--- /dev/null
+++ b/src/mapi/glapi/gen/EXT_shader_image_load_store.xml
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_EXT_shader_image_load_store" number="386">
+
+<enum name="VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT" value="0x00000001"/>
+<enum name="ELEMENT_ARRAY_BARRIER_BIT_EXT" value="0x00000002"/>
+<enum name="UNIFORM_BARRIER_BIT_EXT" value="0x00000004"/>
+<enum name="TEXTURE_FETCH_BARRIER_BIT_EXT" value="0x00000008"/>
+<enum name="SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT" value="0x00000020"/>
+<enum name="COMMAND_BARRIER_BIT_EXT" value="0x00000040"/>
+<enum name="PIXEL_BUFFER_BARRIER_BIT_EXT" value="0x00000080"/>
+<enum name="TEXTURE_UPDATE_BARRIER_BIT_EXT" value="0x00000100"/>
+<enum name="BUFFER_UPDATE_BARRIER_BIT_EXT" value="0x00000200"/>
+<enum name="FRAMEBUFFER_BARRIER_BIT_EXT" value="0x00000400"/>
+<enum name="TRANSFORM_FEEDBACK_BARRIER_BIT_EXT" value="0x00000800"/>
+<enum name="ATOMIC_COUNTER_BARRIER_BIT_EXT" value="0x00001000"/>
+<enum name="ALL_BARRIER_BITS_EXT" value="0xFFFFFFFF"/>
+<enum name="MAX_IMAGE_UNITS_EXT_EXT" value="0x8F38"/>
+<enum name="MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT" value="0x8F39"/>
+<enum name="IMAGE_BINDING_NAME_EXT" value="0x8F3A"/>
+<enum name="IMAGE_BINDING_LEVEL_EXT" value="0x8F3B"/>
+<enum name="IMAGE_BINDING_LAYERED_EXT" value="0x8F3C"/>
+<enum name="IMAGE_BINDING_LAYER_EXT" value="0x8F3D"/>
+<enum name="IMAGE_BINDING_ACCESS_EXT" value="0x8F3E"/>
+<enum name="IMAGE_1D_EXT" value="0x904C"/>
+<enum name="IMAGE_2D_EXT" value="0x904D"/>
+<enum name="IMAGE_3D_EXT" value="0x904E"/>
+<enum name="IMAGE_2D_RECT_EXT" value="0x904F"/>
+<enum name="IMAGE_CUBE_EXT" value="0x9050"/>
+<enum name="IMAGE_BUFFER_EXT" value="0x9051"/>
+<enum name="IMAGE_1D_ARRAY_EXT" value="0x9052"/>
+<enum name="IMAGE_2D_ARRAY_EXT" value="0x9053"/>
+<enum name="IMAGE_CUBE_MAP_ARRAY_EXT" value="0x9054"/>
+<enum name="IMAGE_2D_MULTISAMPLE_EXT" value="0x9055"/>
+<enum name="IMAGE_2D_MULTISAMPLE_ARRAY_EXT" value="0x9056"/>
+<enum name="INT_IMAGE_1D_EXT" value="0x9057"/>
+<enum name="INT_IMAGE_2D_EXT" value="0x9058"/>
+<enum name="INT_IMAGE_3D_EXT" value="0x9059"/>
+<enum name="INT_IMAGE_2D_RECT_EXT" value="0x905A"/>
+<enum name="INT_IMAGE_CUBE_EXT" value="0x905B"/>
+<enum name="INT_IMAGE_BUFFER_EXT" value="0x905C"/>
+<enum name="INT_IMAGE_1D_ARRAY_EXT" value="0x905D"/>
+<enum name="INT_IMAGE_2D_ARRAY_EXT" value="0x905E"/>
+<enum name="INT_IMAGE_CUBE_MAP_ARRAY_EXT" value="0x905F"/>
+<enum name="INT_IMAGE_2D_MULTISAMPLE_EXT" value="0x9060"/>
+<enum name="INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT" value="0x9061"/>
+<enum name="UNSIGNED_INT_IMAGE_1D_EXT" value="0x9062"/>
+<enum name="UNSIGNED_INT_IMAGE_2D_EXT" value="0x9063"/>
+<enum name="UNSIGNED_INT_IMAGE_3D_EXT" value="0x9064"/>
+<enum name="UNSIGNED_INT_IMAGE_2D_RECT_EXT" value="0x9065"/>
+<enum name="UNSIGNED_INT_IMAGE_CUBE_EXT" value="0x9066"/>
+<enum name="UNSIGNED_INT_IMAGE_BUFFER_EXT" value="0x9067"/>
+<enum name="UNSIGNED_INT_IMAGE_1D_ARRAY_EXT" value="0x9068"/>
+<enum name="UNSIGNED_INT_IMAGE_2D_ARRAY_EXT" value="0x9069"/>
+<enum name="UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT" value="0x906A"/>
+<enum name="UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT" value="0x906B"/>
+<enum name="UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT" value="0x906C"/>
+<enum name="MAX_IMAGE_SAMPLES_EXT" value="0x906D"/>
+<enum name="IMAGE_BINDING_FORMAT_EXT" value="0x906E"/>
+
+<!--
+<function name="BindImageTextureEXT">
+ <param name="index" type="GLuint"/>
+ <param name="texture" type="GLuint"/>
+ <param name="level" type="GLint"/>
+ <param name="layered" type="GLboolean"/>
+ <param name="layer" type="GLint"/>
+ <param name="access" type="GLenum"/>
+ <param name="format" type="GLint"/>
+</function>
+-->
+
+<function name="MemoryBarrierEXT" alias="MemoryBarrier" >
+ <param name="barriers" type="GLbitfield"/>
+</function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index f6128f1a36e..c5e6a066ac6 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -12971,6 +12971,9 @@
<xi:include href="EXT_direct_state_access.xml"
xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="EXT_shader_image_load_store.xml"
+ xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
<category name="GL_EXT_texture_sRGB_decode" number="402">
<enum name="TEXTURE_SRGB_DECODE_EXT" value="0x8A48"/>
<enum name="DECODE_EXT" value="0x8A49"/>
diff --git a/src/mapi/glapi/gen/meson.build b/src/mapi/glapi/gen/meson.build
index c36e49fbf94..1e69242e042 100644
--- a/src/mapi/glapi/gen/meson.build
+++ b/src/mapi/glapi/gen/meson.build
@@ -120,6 +120,7 @@ api_xml_files = files(
'EXT_packed_depth_stencil.xml',
'EXT_provoking_vertex.xml',
'EXT_separate_shader_objects.xml',
+ 'EXT_shader_image_load_store.xml',
'EXT_texture_array.xml',
'EXT_texture_integer.xml',
'EXT_transform_feedback.xml',
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index af321131654..3f313db870d 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -274,6 +274,7 @@ EXT(EXT_separate_specular_color , dummy_true
EXT(EXT_shader_framebuffer_fetch , EXT_shader_framebuffer_fetch , GLL, GLC, x , ES2, 2013)
EXT(EXT_shader_framebuffer_fetch_non_coherent, EXT_shader_framebuffer_fetch_non_coherent, GLL, GLC, x, ES2, 2018)
EXT(EXT_shader_image_load_formatted , EXT_shader_image_load_formatted , GLL, GLC, x , x , 2014)
+EXT(EXT_shader_image_load_store , EXT_shader_image_load_store , GLL, GLC, x , x , 2010)
EXT(EXT_shader_implicit_conversions , dummy_true , x , x , x , 31, 2013)
EXT(EXT_shader_integer_mix , EXT_shader_integer_mix , GLL, GLC, x , 30, 2013)
EXT(EXT_shader_io_blocks , dummy_true , x , x , x , 31, 2014)
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index 56a63589182..30fe50affc0 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -4289,6 +4289,7 @@ struct gl_extensions
GLboolean EXT_semaphore;
GLboolean EXT_semaphore_fd;
GLboolean EXT_shader_image_load_formatted;
+ GLboolean EXT_shader_image_load_store;
GLboolean EXT_shader_integer_mix;
GLboolean EXT_shader_samples_identical;
GLboolean EXT_sRGB;
diff --git a/src/mesa/state_tracker/st_extensions.c b/src/mesa/state_tracker/st_extensions.c
index c146c8d9902..abc816ed0d4 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -725,6 +725,7 @@ void st_init_extensions(struct pipe_screen *screen,
{ o(ARB_shader_draw_parameters), PIPE_CAP_DRAW_PARAMETERS },
{ o(ARB_shader_group_vote), PIPE_CAP_TGSI_VOTE },
{ o(EXT_shader_image_load_formatted), PIPE_CAP_IMAGE_LOAD_FORMATTED },
+ { o(EXT_shader_image_load_store), PIPE_CAP_TGSI_ATOMINC_WRAP },
{ o(ARB_shader_stencil_export), PIPE_CAP_SHADER_STENCIL_EXPORT },
{ o(ARB_shader_texture_image_samples), PIPE_CAP_TGSI_TXQS },
{ o(ARB_shader_texture_lod), PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD },
@@ -1179,6 +1180,9 @@ void st_init_extensions(struct pipe_screen *screen,
extensions->OES_sample_variables = extensions->ARB_sample_shading &&
extensions->ARB_gpu_shader5;
+ extensions->EXT_shader_image_load_store &=
+ screen->get_param(screen, PIPE_CAP_IMAGE_LOAD_FORMATTED);
+
/* Maximum sample count. */
{
static const enum pipe_format color_formats[] = {