mesa: add support for NV_pixel_buffer_object
authorSimon Ser <contact@emersion.fr>
Thu, 2 Apr 2020 20:53:41 +0000 (22:53 +0200)
committerMarge Bot <eric+marge@anholt.net>
Tue, 7 Apr 2020 16:52:15 +0000 (16:52 +0000)
Signed-off-by: Simon Ser <contact@emersion.fr>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
Reviewed-by: Ian Romanick <ian.d.romanick@intel.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4422>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4422>

src/mesa/main/bufferobj.c
src/mesa/main/extensions_table.h

index f4c8bd8bd85d48c912c98f2844423f65472e3f3f..222b91eb6c1dbdd73e1c8f20e25729964be4f944 100644 (file)
@@ -105,11 +105,21 @@ static struct gl_buffer_object DummyBufferObject;
 static inline struct gl_buffer_object **
 get_buffer_target(struct gl_context *ctx, GLenum target)
 {
-   /* Other targets are only supported in desktop OpenGL and OpenGL ES 3.0.
-    */
-   if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx)
-       && target != GL_ARRAY_BUFFER && target != GL_ELEMENT_ARRAY_BUFFER)
-      return NULL;
+   /* Other targets are only supported in desktop OpenGL and OpenGL ES 3.0. */
+   if (!_mesa_is_desktop_gl(ctx) && !_mesa_is_gles3(ctx)) {
+      switch (target) {
+      case GL_ARRAY_BUFFER:
+      case GL_ELEMENT_ARRAY_BUFFER:
+         break;
+      case GL_PIXEL_PACK_BUFFER:
+      case GL_PIXEL_UNPACK_BUFFER:
+         if (!ctx->Extensions.EXT_pixel_buffer_object)
+            return NULL;
+         break;
+      default:
+         return NULL;
+      }
+   }
 
    switch (target) {
    case GL_ARRAY_BUFFER_ARB:
index 75733b0eaee5864e18d222bae6ad44a6d9131462..9a678e247b8aece8ff925cc3d942494dbcf8981d 100644 (file)
@@ -388,6 +388,7 @@ EXT(NV_fragment_shader_interlock            , ARB_fragment_shader_interlock
 EXT(NV_image_formats                        , ARB_shader_image_load_store            ,  x ,  x ,  x ,  31, 2014)
 EXT(NV_light_max_exponent                   , dummy_true                             , GLL,  x ,  x ,  x , 1999)
 EXT(NV_packed_depth_stencil                 , dummy_true                             , GLL, GLC,  x ,  x , 2000)
+EXT(NV_pixel_buffer_object                  , EXT_pixel_buffer_object                ,  x ,  x ,  x , ES2, 2012)
 EXT(NV_point_sprite                         , NV_point_sprite                        , GLL, GLC,  x ,  x , 2001)
 EXT(NV_primitive_restart                    , NV_primitive_restart                   , GLL,  x ,  x ,  x , 2002)
 EXT(NV_read_buffer                          , dummy_true                             ,  x ,  x ,  x , ES2, 2011)