mesa: add ARB_texture_buffer_range glTextureBufferRangeEXT function
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
This commit is contained in:
@@ -384,7 +384,7 @@ GL_EXT_direct_state_access additions from other extensions (complete list):
|
|||||||
GL_ARB_internalformat_query2 DONE
|
GL_ARB_internalformat_query2 DONE
|
||||||
GL_ARB_sparse_texture n/a
|
GL_ARB_sparse_texture n/a
|
||||||
GL_ARB_sparse_buffer not started
|
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 DONE
|
||||||
GL_ARB_texture_storage_multisample not started
|
GL_ARB_texture_storage_multisample not started
|
||||||
GL_ARB_vertex_attrib_64bit DONE
|
GL_ARB_vertex_attrib_64bit DONE
|
||||||
|
@@ -17,6 +17,15 @@
|
|||||||
<param name="size" type="GLsizeiptr"/>
|
<param name="size" type="GLsizeiptr"/>
|
||||||
</function>
|
</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>
|
</category>
|
||||||
|
|
||||||
</OpenGLAPI>
|
</OpenGLAPI>
|
||||||
|
@@ -1622,6 +1622,7 @@ offsets = {
|
|||||||
"GetNamedFramebufferParameterivEXT": 1586,
|
"GetNamedFramebufferParameterivEXT": 1586,
|
||||||
"VertexArrayVertexAttribLOffsetEXT": 1587,
|
"VertexArrayVertexAttribLOffsetEXT": 1587,
|
||||||
"VertexArrayVertexAttribDivisorEXT": 1588,
|
"VertexArrayVertexAttribDivisorEXT": 1588,
|
||||||
|
"TextureBufferRangeEXT": 1589,
|
||||||
}
|
}
|
||||||
|
|
||||||
functions = [
|
functions = [
|
||||||
|
@@ -894,7 +894,7 @@ const struct function common_desktop_functions_possible[] = {
|
|||||||
{ "glGetProgramResourceLocation", 43, -1 },
|
{ "glGetProgramResourceLocation", 43, -1 },
|
||||||
{ "glGetProgramResourceLocationIndex", 43, -1 },
|
{ "glGetProgramResourceLocationIndex", 43, -1 },
|
||||||
{ "glShaderStorageBlockBinding", 43, -1 },
|
{ "glShaderStorageBlockBinding", 43, -1 },
|
||||||
// { "glTextureBufferRangeEXT", 43, -1 }, // XXX: Add to xml
|
{ "glTextureBufferRangeEXT", 43, -1 },
|
||||||
{ "glTexStorage2DMultisample", 43, -1 },
|
{ "glTexStorage2DMultisample", 43, -1 },
|
||||||
{ "glTexStorage3DMultisample", 43, -1 },
|
{ "glTexStorage3DMultisample", 43, -1 },
|
||||||
// { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml
|
// { "glTextureStorage2DMultisampleEXT", 43, -1 }, // XXX: Add to xml
|
||||||
|
@@ -6401,6 +6401,52 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
|
|||||||
offset, size, "glTexBufferRange");
|
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
|
void GLAPIENTRY
|
||||||
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer)
|
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer)
|
||||||
{
|
{
|
||||||
|
@@ -784,6 +784,10 @@ extern void GLAPIENTRY
|
|||||||
_mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
|
_mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
|
||||||
GLintptr offset, GLsizeiptr size);
|
GLintptr offset, GLsizeiptr size);
|
||||||
|
|
||||||
|
extern void GLAPIENTRY
|
||||||
|
_mesa_TextureBufferRangeEXT(GLuint texture, GLenum target, GLenum internalFormat,
|
||||||
|
GLuint buffer, GLintptr offset, GLsizeiptr size);
|
||||||
|
|
||||||
extern void GLAPIENTRY
|
extern void GLAPIENTRY
|
||||||
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer);
|
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user