mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-04 15:40:11 +01:00
main: Add entry point for TextureBufferRange.
v2: Review by Martin Peres
- Get rid of difficult-to-follow code copied and pasted from
the original TexBufferRange
Reviewed-by: Anuj Phogat <anuj.phogat@gmail.com>
This commit is contained in:
parent
311b3686fe
commit
1e552db522
4 changed files with 59 additions and 0 deletions
|
|
@ -21,6 +21,14 @@
|
|||
<param name="buffer" type="GLuint" />
|
||||
</function>
|
||||
|
||||
<function name="TextureBufferRange" offset="assign">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="internalformat" type="GLenum" />
|
||||
<param name="buffer" type="GLuint" />
|
||||
<param name="offset" type="GLintptr" />
|
||||
<param name="size" type="GLsizeiptr" />
|
||||
</function>
|
||||
|
||||
<function name="TextureStorage1D" offset="assign">
|
||||
<param name="texture" type="GLuint" />
|
||||
<param name="levels" type="GLsizei" />
|
||||
|
|
|
|||
|
|
@ -985,6 +985,7 @@ const struct function gl_core_functions_possible[] = {
|
|||
{ "glTextureStorage2DMultisample", 45, -1 },
|
||||
{ "glTextureStorage3DMultisample", 45, -1 },
|
||||
{ "glTextureBuffer", 45, -1 },
|
||||
{ "glTextureBufferRange", 45, -1 },
|
||||
|
||||
/* GL_EXT_polygon_offset_clamp */
|
||||
{ "glPolygonOffsetClampEXT", 11, -1 },
|
||||
|
|
|
|||
|
|
@ -5463,6 +5463,52 @@ _mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer)
|
|||
bufObj, 0, buffer ? -1 : 0, "glTextureBuffer");
|
||||
}
|
||||
|
||||
void GLAPIENTRY
|
||||
_mesa_TextureBufferRange(GLuint texture, GLenum internalFormat, GLuint buffer,
|
||||
GLintptr offset, GLsizeiptr size)
|
||||
{
|
||||
struct gl_texture_object *texObj;
|
||||
struct gl_buffer_object *bufObj;
|
||||
|
||||
GET_CURRENT_CONTEXT(ctx);
|
||||
|
||||
if (buffer) {
|
||||
bufObj = _mesa_lookup_bufferobj_err(ctx, buffer,
|
||||
"glTextureBufferRange");
|
||||
if (!bufObj)
|
||||
return;
|
||||
|
||||
if (!check_texture_buffer_range(ctx, bufObj, offset, size,
|
||||
"glTextureBufferRange"))
|
||||
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;
|
||||
}
|
||||
|
||||
/* Get the texture object by Name. */
|
||||
texObj = _mesa_lookup_texture_err(ctx, texture, "glTextureBufferRange");
|
||||
if (!texObj)
|
||||
return;
|
||||
|
||||
if (!check_texture_buffer_target(ctx, texObj->Target,
|
||||
"glTextureBufferRange"))
|
||||
return;
|
||||
|
||||
_mesa_texture_buffer_range(ctx, texObj, internalFormat,
|
||||
bufObj, offset, size, "glTextureBufferRange");
|
||||
}
|
||||
|
||||
static GLboolean
|
||||
is_renderable_texture_format(struct gl_context *ctx, GLenum internalformat)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -409,6 +409,10 @@ _mesa_TexBufferRange(GLenum target, GLenum internalFormat, GLuint buffer,
|
|||
extern void GLAPIENTRY
|
||||
_mesa_TextureBuffer(GLuint texture, GLenum internalFormat, GLuint buffer);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TextureBufferRange(GLuint texture, GLenum internalFormat, GLuint buffer,
|
||||
GLintptr offset, GLsizeiptr size);
|
||||
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_TexImage2DMultisample(GLenum target, GLsizei samples,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue