main: Add entry points for InvalidateNamedFramebuffer[Sub]Data.

Reviewed-by: Fredrik Höglund <fredrik@kde.org>
Signed-off-by: Fredrik Höglund <fredrik@kde.org>
This commit is contained in:
Laura Ekstrand 2015-02-04 14:21:48 -08:00 committed by Fredrik Höglund
parent 65d4a20f1c
commit d890fc710f
4 changed files with 99 additions and 0 deletions

View file

@ -181,6 +181,22 @@
<param name="layer" type="GLint" />
</function>
<function name="InvalidateNamedFramebufferData" offset="assign">
<param name="framebuffer" type="GLuint" />
<param name="numAttachments" type="GLsizei" />
<param name="attachments" type="const GLenum *" />
</function>
<function name="InvalidateNamedFramebufferSubData" offset="assign">
<param name="framebuffer" type="GLuint" />
<param name="numAttachments" type="GLsizei" />
<param name="attachments" type="const GLenum *" />
<param name="x" type="GLint" />
<param name="y" type="GLint" />
<param name="width" type="GLsizei" />
<param name="height" type="GLsizei" />
</function>
<function name="BlitNamedFramebuffer" offset="assign">
<param name="readFramebuffer" type="GLuint" />
<param name="drawFramebuffer" type="GLuint" />

View file

@ -3787,6 +3787,35 @@ _mesa_InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments,
}
void GLAPIENTRY
_mesa_InvalidateNamedFramebufferSubData(GLuint framebuffer,
GLsizei numAttachments,
const GLenum *attachments,
GLint x, GLint y,
GLsizei width, GLsizei height)
{
struct gl_framebuffer *fb;
GET_CURRENT_CONTEXT(ctx);
/* The OpenGL 4.5 core spec (02.02.2015) says (in Section 17.4 Whole
* Framebuffer Operations, PDF page 522): "If framebuffer is zero, the
* default draw framebuffer is affected."
*/
if (framebuffer) {
fb = _mesa_lookup_framebuffer_err(ctx, framebuffer,
"glInvalidateNamedFramebufferSubData");
if (!fb)
return;
}
else
fb = ctx->WinSysDrawBuffer;
invalidate_framebuffer_storage(ctx, fb, numAttachments, attachments,
x, y, width, height,
"glInvalidateNamedFramebufferSubData");
}
void GLAPIENTRY
_mesa_InvalidateFramebuffer(GLenum target, GLsizei numAttachments,
const GLenum *attachments)
@ -3821,6 +3850,46 @@ _mesa_InvalidateFramebuffer(GLenum target, GLsizei numAttachments,
}
void GLAPIENTRY
_mesa_InvalidateNamedFramebufferData(GLuint framebuffer,
GLsizei numAttachments,
const GLenum *attachments)
{
struct gl_framebuffer *fb;
GET_CURRENT_CONTEXT(ctx);
/* The OpenGL 4.5 core spec (02.02.2015) says (in Section 17.4 Whole
* Framebuffer Operations, PDF page 522): "If framebuffer is zero, the
* default draw framebuffer is affected."
*/
if (framebuffer) {
fb = _mesa_lookup_framebuffer_err(ctx, framebuffer,
"glInvalidateNamedFramebufferData");
if (!fb)
return;
}
else
fb = ctx->WinSysDrawBuffer;
/* The GL_ARB_invalidate_subdata spec says:
*
* "The command
*
* void InvalidateFramebuffer(enum target,
* sizei numAttachments,
* const enum *attachments);
*
* is equivalent to the command InvalidateSubFramebuffer with <x>, <y>,
* <width>, <height> equal to 0, 0, <MAX_VIEWPORT_DIMS[0]>,
* <MAX_VIEWPORT_DIMS[1]> respectively."
*/
invalidate_framebuffer_storage(ctx, fb, numAttachments, attachments,
0, 0,
MAX_VIEWPORT_WIDTH, MAX_VIEWPORT_HEIGHT,
"glInvalidateNamedFramebufferData");
}
void GLAPIENTRY
_mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments,
const GLenum *attachments)

View file

@ -260,10 +260,22 @@ _mesa_InvalidateSubFramebuffer(GLenum target, GLsizei numAttachments,
const GLenum *attachments, GLint x, GLint y,
GLsizei width, GLsizei height);
extern void GLAPIENTRY
_mesa_InvalidateNamedFramebufferSubData(GLuint framebuffer,
GLsizei numAttachments,
const GLenum *attachments,
GLint x, GLint y,
GLsizei width, GLsizei height);
extern void GLAPIENTRY
_mesa_InvalidateFramebuffer(GLenum target, GLsizei numAttachments,
const GLenum *attachments);
extern void GLAPIENTRY
_mesa_InvalidateNamedFramebufferData(GLuint framebuffer,
GLsizei numAttachments,
const GLenum *attachments);
extern void GLAPIENTRY
_mesa_DiscardFramebufferEXT(GLenum target, GLsizei numAttachments,
const GLenum *attachments);

View file

@ -984,6 +984,8 @@ const struct function gl_core_functions_possible[] = {
{ "glNamedFramebufferRenderbuffer", 45, -1 },
{ "glNamedFramebufferTexture", 45, -1 },
{ "glNamedFramebufferTextureLayer", 45, -1 },
{ "glInvalidateNamedFramebufferSubData", 45, -1 },
{ "glInvalidateNamedFramebufferData", 45, -1 },
{ "glBlitNamedFramebuffer", 45, -1 },
{ "glCheckNamedFramebufferStatus", 45, -1 },
{ "glGetNamedFramebufferAttachmentParameteriv", 45, -1 },