_mesa_VertexArrayVertexBuffer_no_error crashes if vaobj == 0. _mesa_VertexArrayVertexBuffer doesn't have this issue.
Marek On Fri, Aug 24, 2018 at 7:06 AM, Timothy Arceri <tarc...@itsqueeze.com> wrote: > We could enable it for lower versions of GL but this allows us > to just use the existing version/extension checks that are already > used by the core profile. > --- > src/mapi/glapi/gen/apiexec.py | 194 +++++++++++++++---------------- > src/mesa/main/extensions_table.h | 2 +- > src/mesa/main/fbobject.c | 13 ++- > 3 files changed, 105 insertions(+), 104 deletions(-) > > diff --git a/src/mapi/glapi/gen/apiexec.py b/src/mapi/glapi/gen/apiexec.py > index b163d88549b..e2fc124be22 100644 > --- a/src/mapi/glapi/gen/apiexec.py > +++ b/src/mapi/glapi/gen/apiexec.py > @@ -152,103 +152,103 @@ functions = { > > # OpenGL 4.5 / GL_ARB_direct_state_access. Mesa can expose the > extension > # with core profile. > - "CreateTransformFeedbacks": exec_info(compatibility=45, core=31), > - "TransformFeedbackBufferBase": exec_info(compatibility=45, core=31), > - "TransformFeedbackBufferRange": exec_info(compatibility=45, core=31), > - "GetTransformFeedbackiv": exec_info(compatibility=45, core=31), > - "GetTransformFeedbacki_v": exec_info(compatibility=45, core=31), > - "GetTransformFeedbacki64_v": exec_info(compatibility=45, core=31), > - "CreateBuffers": exec_info(compatibility=45, core=31), > - "NamedBufferStorage": exec_info(compatibility=45, core=31), > - "NamedBufferData": exec_info(compatibility=45, core=31), > - "NamedBufferSubData": exec_info(compatibility=45, core=31), > - "CopyNamedBufferSubData": exec_info(compatibility=45, core=31), > - "ClearNamedBufferData": exec_info(compatibility=45, core=31), > - "ClearNamedBufferSubData": exec_info(compatibility=45, core=31), > - "MapNamedBuffer": exec_info(compatibility=45, core=31), > - "MapNamedBufferRange": exec_info(compatibility=45, core=31), > - "UnmapNamedBuffer": exec_info(compatibility=45, core=31), > - "FlushMappedNamedBufferRange": exec_info(compatibility=45, core=31), > - "GetNamedBufferParameteriv": exec_info(compatibility=45, core=31), > - "GetNamedBufferParameteri64v": exec_info(compatibility=45, core=31), > - "GetNamedBufferPointerv": exec_info(compatibility=45, core=31), > - "GetNamedBufferSubData": exec_info(compatibility=45, core=31), > - "CreateFramebuffers": exec_info(compatibility=45, core=31), > - "NamedFramebufferRenderbuffer": exec_info(compatibility=45, core=31), > - "NamedFramebufferParameteri": exec_info(compatibility=45, core=31), > - "NamedFramebufferTexture": exec_info(compatibility=45, core=31), > - "NamedFramebufferTextureLayer": exec_info(compatibility=45, core=31), > - "NamedFramebufferDrawBuffer": exec_info(compatibility=45, core=31), > - "NamedFramebufferDrawBuffers": exec_info(compatibility=45, core=31), > - "NamedFramebufferReadBuffer": exec_info(compatibility=45, core=31), > - "InvalidateNamedFramebufferData": exec_info(compatibility=45, core=31), > - "InvalidateNamedFramebufferSubData": exec_info(compatibility=45, > core=31), > - "ClearNamedFramebufferiv": exec_info(compatibility=45, core=31), > - "ClearNamedFramebufferuiv": exec_info(compatibility=45, core=31), > - "ClearNamedFramebufferfv": exec_info(compatibility=45, core=31), > - "ClearNamedFramebufferfi": exec_info(compatibility=45, core=31), > - "BlitNamedFramebuffer": exec_info(compatibility=45, core=31), > - "CheckNamedFramebufferStatus": exec_info(compatibility=45, core=31), > - "GetNamedFramebufferParameteriv": exec_info(compatibility=45, core=31), > - "GetNamedFramebufferAttachmentParameteriv": exec_info(compatibility=45, > core=31), > - "CreateRenderbuffers": exec_info(compatibility=45, core=31), > - "NamedRenderbufferStorage": exec_info(compatibility=45, core=31), > - "NamedRenderbufferStorageMultisample": exec_info(compatibility=45, > core=31), > - "GetNamedRenderbufferParameteriv": exec_info(compatibility=45, core=31), > - "CreateTextures": exec_info(compatibility=45, core=31), > - "TextureBuffer": exec_info(compatibility=45, core=31), > - "TextureBufferRange": exec_info(compatibility=45, core=31), > - "TextureStorage1D": exec_info(compatibility=45, core=31), > - "TextureStorage2D": exec_info(compatibility=45, core=31), > - "TextureStorage3D": exec_info(compatibility=45, core=31), > - "TextureStorage2DMultisample": exec_info(compatibility=45, core=31), > - "TextureStorage3DMultisample": exec_info(compatibility=45, core=31), > - "TextureSubImage1D": exec_info(compatibility=45, core=31), > - "TextureSubImage2D": exec_info(compatibility=45, core=31), > - "TextureSubImage3D": exec_info(compatibility=45, core=31), > - "CompressedTextureSubImage1D": exec_info(compatibility=45, core=31), > - "CompressedTextureSubImage2D": exec_info(compatibility=45, core=31), > - "CompressedTextureSubImage3D": exec_info(compatibility=45, core=31), > - "CopyTextureSubImage1D": exec_info(compatibility=45, core=31), > - "CopyTextureSubImage2D": exec_info(compatibility=45, core=31), > - "CopyTextureSubImage3D": exec_info(compatibility=45, core=31), > - "TextureParameterf": exec_info(compatibility=45, core=31), > - "TextureParameterfv": exec_info(compatibility=45, core=31), > - "TextureParameteri": exec_info(compatibility=45, core=31), > - "TextureParameterIiv": exec_info(compatibility=45, core=31), > - "TextureParameterIuiv": exec_info(compatibility=45, core=31), > - "TextureParameteriv": exec_info(compatibility=45, core=31), > - "GenerateTextureMipmap": exec_info(compatibility=45, core=31), > - "BindTextureUnit": exec_info(compatibility=45, core=31), > - "GetTextureImage": exec_info(compatibility=45, core=31), > - "GetCompressedTextureImage": exec_info(compatibility=45, core=31), > - "GetTextureLevelParameterfv": exec_info(compatibility=45, core=31), > - "GetTextureLevelParameteriv": exec_info(compatibility=45, core=31), > - "GetTextureParameterfv": exec_info(compatibility=45, core=31), > - "GetTextureParameterIiv": exec_info(compatibility=45, core=31), > - "GetTextureParameterIuiv": exec_info(compatibility=45, core=31), > - "GetTextureParameteriv": exec_info(compatibility=45, core=31), > - "CreateVertexArrays": exec_info(compatibility=45, core=31), > - "DisableVertexArrayAttrib": exec_info(compatibility=45, core=31), > - "EnableVertexArrayAttrib": exec_info(compatibility=45, core=31), > - "VertexArrayElementBuffer": exec_info(compatibility=45, core=31), > - "VertexArrayVertexBuffer": exec_info(compatibility=45, core=31), > - "VertexArrayVertexBuffers": exec_info(compatibility=45, core=31), > - "VertexArrayAttribFormat": exec_info(compatibility=45, core=31), > - "VertexArrayAttribIFormat": exec_info(compatibility=45, core=31), > - "VertexArrayAttribLFormat": exec_info(compatibility=45, core=31), > - "VertexArrayAttribBinding": exec_info(compatibility=45, core=31), > - "VertexArrayBindingDivisor": exec_info(compatibility=45, core=31), > - "GetVertexArrayiv": exec_info(compatibility=45, core=31), > - "GetVertexArrayIndexediv": exec_info(compatibility=45, core=31), > - "GetVertexArrayIndexed64iv": exec_info(compatibility=45, core=31), > - "CreateSamplers": exec_info(compatibility=45, core=31), > - "CreateProgramPipelines": exec_info(compatibility=45, core=31), > - "CreateQueries": exec_info(compatibility=45, core=31), > - "GetQueryBufferObjectiv": exec_info(compatibility=45, core=31), > - "GetQueryBufferObjectuiv": exec_info(compatibility=45, core=31), > - "GetQueryBufferObjecti64v": exec_info(compatibility=45, core=31), > - "GetQueryBufferObjectui64v": exec_info(compatibility=45, core=31), > + "CreateTransformFeedbacks": exec_info(compatibility=31, core=31), > + "TransformFeedbackBufferBase": exec_info(compatibility=31, core=31), > + "TransformFeedbackBufferRange": exec_info(compatibility=31, core=31), > + "GetTransformFeedbackiv": exec_info(compatibility=31, core=31), > + "GetTransformFeedbacki_v": exec_info(compatibility=31, core=31), > + "GetTransformFeedbacki64_v": exec_info(compatibility=31, core=31), > + "CreateBuffers": exec_info(compatibility=31, core=31), > + "NamedBufferStorage": exec_info(compatibility=31, core=31), > + "NamedBufferData": exec_info(compatibility=31, core=31), > + "NamedBufferSubData": exec_info(compatibility=31, core=31), > + "CopyNamedBufferSubData": exec_info(compatibility=31, core=31), > + "ClearNamedBufferData": exec_info(compatibility=31, core=31), > + "ClearNamedBufferSubData": exec_info(compatibility=31, core=31), > + "MapNamedBuffer": exec_info(compatibility=31, core=31), > + "MapNamedBufferRange": exec_info(compatibility=31, core=31), > + "UnmapNamedBuffer": exec_info(compatibility=31, core=31), > + "FlushMappedNamedBufferRange": exec_info(compatibility=31, core=31), > + "GetNamedBufferParameteriv": exec_info(compatibility=31, core=31), > + "GetNamedBufferParameteri64v": exec_info(compatibility=31, core=31), > + "GetNamedBufferPointerv": exec_info(compatibility=31, core=31), > + "GetNamedBufferSubData": exec_info(compatibility=31, core=31), > + "CreateFramebuffers": exec_info(compatibility=31, core=31), > + "NamedFramebufferRenderbuffer": exec_info(compatibility=31, core=31), > + "NamedFramebufferParameteri": exec_info(compatibility=31, core=31), > + "NamedFramebufferTexture": exec_info(compatibility=31, core=31), > + "NamedFramebufferTextureLayer": exec_info(compatibility=31, core=31), > + "NamedFramebufferDrawBuffer": exec_info(compatibility=31, core=31), > + "NamedFramebufferDrawBuffers": exec_info(compatibility=31, core=31), > + "NamedFramebufferReadBuffer": exec_info(compatibility=31, core=31), > + "InvalidateNamedFramebufferData": exec_info(compatibility=31, core=31), > + "InvalidateNamedFramebufferSubData": exec_info(compatibility=31, > core=31), > + "ClearNamedFramebufferiv": exec_info(compatibility=31, core=31), > + "ClearNamedFramebufferuiv": exec_info(compatibility=31, core=31), > + "ClearNamedFramebufferfv": exec_info(compatibility=31, core=31), > + "ClearNamedFramebufferfi": exec_info(compatibility=31, core=31), > + "BlitNamedFramebuffer": exec_info(compatibility=31, core=31), > + "CheckNamedFramebufferStatus": exec_info(compatibility=31, core=31), > + "GetNamedFramebufferParameteriv": exec_info(compatibility=31, core=31), > + "GetNamedFramebufferAttachmentParameteriv": exec_info(compatibility=31, > core=31), > + "CreateRenderbuffers": exec_info(compatibility=31, core=31), > + "NamedRenderbufferStorage": exec_info(compatibility=31, core=31), > + "NamedRenderbufferStorageMultisample": exec_info(compatibility=31, > core=31), > + "GetNamedRenderbufferParameteriv": exec_info(compatibility=31, core=31), > + "CreateTextures": exec_info(compatibility=31, core=31), > + "TextureBuffer": exec_info(compatibility=31, core=31), > + "TextureBufferRange": exec_info(compatibility=31, core=31), > + "TextureStorage1D": exec_info(compatibility=31, core=31), > + "TextureStorage2D": exec_info(compatibility=31, core=31), > + "TextureStorage3D": exec_info(compatibility=31, core=31), > + "TextureStorage2DMultisample": exec_info(compatibility=31, core=31), > + "TextureStorage3DMultisample": exec_info(compatibility=31, core=31), > + "TextureSubImage1D": exec_info(compatibility=31, core=31), > + "TextureSubImage2D": exec_info(compatibility=31, core=31), > + "TextureSubImage3D": exec_info(compatibility=31, core=31), > + "CompressedTextureSubImage1D": exec_info(compatibility=31, core=31), > + "CompressedTextureSubImage2D": exec_info(compatibility=31, core=31), > + "CompressedTextureSubImage3D": exec_info(compatibility=31, core=31), > + "CopyTextureSubImage1D": exec_info(compatibility=31, core=31), > + "CopyTextureSubImage2D": exec_info(compatibility=31, core=31), > + "CopyTextureSubImage3D": exec_info(compatibility=31, core=31), > + "TextureParameterf": exec_info(compatibility=31, core=31), > + "TextureParameterfv": exec_info(compatibility=31, core=31), > + "TextureParameteri": exec_info(compatibility=31, core=31), > + "TextureParameterIiv": exec_info(compatibility=31, core=31), > + "TextureParameterIuiv": exec_info(compatibility=31, core=31), > + "TextureParameteriv": exec_info(compatibility=31, core=31), > + "GenerateTextureMipmap": exec_info(compatibility=31, core=31), > + "BindTextureUnit": exec_info(compatibility=31, core=31), > + "GetTextureImage": exec_info(compatibility=31, core=31), > + "GetCompressedTextureImage": exec_info(compatibility=31, core=31), > + "GetTextureLevelParameterfv": exec_info(compatibility=31, core=31), > + "GetTextureLevelParameteriv": exec_info(compatibility=31, core=31), > + "GetTextureParameterfv": exec_info(compatibility=31, core=31), > + "GetTextureParameterIiv": exec_info(compatibility=31, core=31), > + "GetTextureParameterIuiv": exec_info(compatibility=31, core=31), > + "GetTextureParameteriv": exec_info(compatibility=31, core=31), > + "CreateVertexArrays": exec_info(compatibility=31, core=31), > + "DisableVertexArrayAttrib": exec_info(compatibility=31, core=31), > + "EnableVertexArrayAttrib": exec_info(compatibility=31, core=31), > + "VertexArrayElementBuffer": exec_info(compatibility=31, core=31), > + "VertexArrayVertexBuffer": exec_info(compatibility=31, core=31), > + "VertexArrayVertexBuffers": exec_info(compatibility=31, core=31), > + "VertexArrayAttribFormat": exec_info(compatibility=31, core=31), > + "VertexArrayAttribIFormat": exec_info(compatibility=31, core=31), > + "VertexArrayAttribLFormat": exec_info(compatibility=31, core=31), > + "VertexArrayAttribBinding": exec_info(compatibility=31, core=31), > + "VertexArrayBindingDivisor": exec_info(compatibility=31, core=31), > + "GetVertexArrayiv": exec_info(compatibility=31, core=31), > + "GetVertexArrayIndexediv": exec_info(compatibility=31, core=31), > + "GetVertexArrayIndexed64iv": exec_info(compatibility=31, core=31), > + "CreateSamplers": exec_info(compatibility=31, core=31), > + "CreateProgramPipelines": exec_info(compatibility=31, core=31), > + "CreateQueries": exec_info(compatibility=31, core=31), > + "GetQueryBufferObjectiv": exec_info(compatibility=31, core=31), > + "GetQueryBufferObjectuiv": exec_info(compatibility=31, core=31), > + "GetQueryBufferObjecti64v": exec_info(compatibility=31, core=31), > + "GetQueryBufferObjectui64v": exec_info(compatibility=31, core=31), > > # GL_ARB_gpu_shader_int64 - nominally requires OpenGL 4.0, and Mesa > # only supports 4.0 in core profile. > diff --git a/src/mesa/main/extensions_table.h > b/src/mesa/main/extensions_table.h > index 135030d6a3c..611b53d5168 100644 > --- a/src/mesa/main/extensions_table.h > +++ b/src/mesa/main/extensions_table.h > @@ -55,7 +55,7 @@ EXT(ARB_depth_buffer_float , > ARB_depth_buffer_float > EXT(ARB_depth_clamp , ARB_depth_clamp > , GLL, GLC, x , x , 2003) > EXT(ARB_depth_texture , ARB_depth_texture > , GLL, x , x , x , 2001) > EXT(ARB_derivative_control , ARB_derivative_control > , GLL, GLC, x , x , 2014) > -EXT(ARB_direct_state_access , dummy_true > , 45, GLC, x , x , 2014) > +EXT(ARB_direct_state_access , dummy_true > , 31, GLC, x , x , 2014) > EXT(ARB_draw_buffers , dummy_true > , GLL, GLC, x , x , 2002) > EXT(ARB_draw_buffers_blend , ARB_draw_buffers_blend > , GLL, GLC, x , x , 2009) > EXT(ARB_draw_elements_base_vertex , ARB_draw_elements_base_vertex > , GLL, GLC, x , x , 2009) > diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c > index 284990d7d00..51e137dce9b 100644 > --- a/src/mesa/main/fbobject.c > +++ b/src/mesa/main/fbobject.c > @@ -3292,13 +3292,14 @@ check_texture_target(struct gl_context *ctx, GLenum > target, > case GL_TEXTURE_2D_MULTISAMPLE_ARRAY: > return true; > case GL_TEXTURE_CUBE_MAP: > - /* We don't need to check the extension (GL_ARB_direct_state_access) or > - * GL version (4.5) for GL_TEXTURE_CUBE_MAP because DSA is always > - * enabled in core profile. This can be called from > - * _mesa_FramebufferTextureLayer in compatibility profile (OpenGL 3.0), > - * so we do have to check the profile. > + /* GL_TEXTURE_CUBE_MAP is only allowed by OpenGL 4.5 here, which > + * includes the DSA API. > + * > + * Because DSA is only enabled for GL 3.1+ and this can be called > + * from _mesa_FramebufferTextureLayer in compatibility profile, > + * we need to check the version. > */ > - return ctx->API == API_OPENGL_CORE; > + return _mesa_is_desktop_gl(ctx) && ctx->Version >= 31; > } > > _mesa_error(ctx, GL_INVALID_OPERATION, > -- > 2.17.1 > > _______________________________________________ > mesa-dev mailing list > mesa-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/mesa-dev _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev