Browse Source

mesa: add ARB_texture_buffer_range glTextureBufferRangeEXT function

Reviewed-by: Marek Olšák <marek.olsak@amd.com>
master
Pierre-Eric Pelloux-Prayer 6 years ago
parent
commit
a0d667036d

+ 1
- 1
docs/features.txt View File

@@ -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

+ 9
- 0
src/mapi/glapi/gen/ARB_texture_buffer_range.xml View File

@@ -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>

+ 1
- 0
src/mapi/glapi/gen/static_data.py View File

@@ -1622,6 +1622,7 @@ offsets = {
"GetNamedFramebufferParameterivEXT": 1586,
"VertexArrayVertexAttribLOffsetEXT": 1587,
"VertexArrayVertexAttribDivisorEXT": 1588,
"TextureBufferRangeEXT": 1589,
}

functions = [

+ 1
- 1
src/mesa/main/tests/dispatch_sanity.cpp View File

@@ -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

+ 46
- 0
src/mesa/main/teximage.c View File

@@ -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)
{

+ 4
- 0
src/mesa/main/teximage.h View File

@@ -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);


Loading…
Cancel
Save