Reviewed-by: Marek Olšák <marek.olsak@amd.com>master
@@ -384,7 +384,7 @@ GL_EXT_direct_state_access additions from other extensions (complete list): | |||
GL_ARB_internalformat_query2 DONE | |||
GL_ARB_sparse_texture n/a | |||
GL_ARB_sparse_buffer not started | |||
GL_ARB_texture_buffer_range not started | |||
GL_ARB_texture_buffer_range DONE | |||
GL_ARB_texture_storage DONE | |||
GL_ARB_texture_storage_multisample not started | |||
GL_ARB_vertex_attrib_64bit DONE |
@@ -17,6 +17,15 @@ | |||
<param name="size" type="GLsizeiptr"/> | |||
</function> | |||
<function name="TextureBufferRangeEXT"> | |||
<param name="texture" type="GLuint"/> | |||
<param name="target" type="GLenum"/> | |||
<param name="internalformat" type="GLenum"/> | |||
<param name="buffer" type="GLuint"/> | |||
<param name="offset" type="GLintptr"/> | |||
<param name="size" type="GLsizeiptr"/> | |||
</function> | |||
</category> | |||
</OpenGLAPI> |
@@ -1622,6 +1622,7 @@ offsets = { | |||
"GetNamedFramebufferParameterivEXT": 1586, | |||
"VertexArrayVertexAttribLOffsetEXT": 1587, | |||
"VertexArrayVertexAttribDivisorEXT": 1588, | |||
"TextureBufferRangeEXT": 1589, | |||
} | |||
functions = [ |
@@ -894,7 +894,7 @@ const struct function common_desktop_functions_possible[] = { | |||
{ "glGetProgramResourceLocation", 43, -1 }, | |||
{ "glGetProgramResourceLocationIndex", 43, -1 }, | |||
{ "glShaderStorageBlockBinding", 43, -1 }, | |||
// { "glTextureBufferRangeEXT", 43, -1 }, // XXX: Add to xml | |||
{ "glTextureBufferRangeEXT", 43, -1 }, | |||
{ "glTexStorage2DMultisample", 43, -1 }, | |||
{ "glTexStorage3DMultisample", 43, -1 }, | |||
// { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml |
@@ -6401,6 +6401,52 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer, | |||
offset, size, "glTexBufferRange"); | |||
} | |||
/** GL_ARB_texture_buffer_range + GL_EXT_direct_state_access */ | |||
void GLAPIENTRY | |||
_mesa_TextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalFormat, | |||
GLuint buffer, GLintptr offset, GLsizeiptr size) | |||
{ | |||
struct gl_texture_object *texObj; | |||
struct gl_buffer_object *bufObj; | |||
GET_CURRENT_CONTEXT(ctx); | |||
texObj = _mesa_lookup_or_create_texture(ctx, target, texture, false, true, | |||
"glTextureBufferRangeEXT"); | |||
if (!texObj) | |||
return; | |||
if (!check_texture_buffer_target(ctx, target, "glTextureBufferRangeEXT")) | |||
return; | |||
if (buffer) { | |||
bufObj = _mesa_lookup_bufferobj_err(ctx, buffer, "glTextureBufferRangeEXT"); | |||
if (!bufObj) | |||
return; | |||
if (!check_texture_buffer_range(ctx, bufObj, offset, size, | |||
"glTextureBufferRangeEXT")) | |||
return; | |||
} else { | |||
/* OpenGL 4.5 core spec (02.02.2015) says in Section 8.9 Buffer | |||
* Textures (PDF page 254): | |||
* "If buffer is zero, then any buffer object attached to the buffer | |||
* texture is detached, the values offset and size are ignored and | |||
* the state for offset and size for the buffer texture are reset to | |||
* zero." | |||
*/ | |||
offset = 0; | |||
size = 0; | |||
bufObj = NULL; | |||
} | |||
texture_buffer_range(ctx, texObj, internalFormat, bufObj, | |||
offset, size, "glTextureBufferRangeEXT"); | |||
} | |||
void GLAPIENTRY | |||
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer) | |||
{ |
@@ -784,6 +784,10 @@ extern void GLAPIENTRY | |||
_mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer, | |||
GLintptr offset, GLsizeiptr size); | |||
extern void GLAPIENTRY | |||
_mesa_TextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalFormat, | |||
GLuint buffer, GLintptr offset, GLsizeiptr size); | |||
extern void GLAPIENTRY | |||
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer); | |||