main: Fake entry point for glClearNamedFramebufferfi.
Mesa's ClearBuffer framework is very complicated and thoroughly married to the object binding model. Moreover, the OpenGL spec for ClearBuffer is also very complicated. At some point, we should implement buffer clearing for arbitrary framebuffer objects, but for now, we will just wrap ClearBuffer. Reviewed-by: Fredrik Höglund <fredrik@kde.org> Signed-off-by: Fredrik Höglund <fredrik@kde.org>
This commit is contained in:
committed by
Fredrik Höglund
parent
bbd9c55d02
commit
a0329c7b40
@@ -218,6 +218,13 @@
|
||||
<param name="value" type="const GLfloat *" />
|
||||
</function>
|
||||
|
||||
<function name="ClearNamedFramebufferfi" offset="assign">
|
||||
<param name="framebuffer" type="GLuint" />
|
||||
<param name="buffer" type="GLenum" />
|
||||
<param name="depth" type="GLfloat" />
|
||||
<param name="stencil" type="GLint" />
|
||||
</function>
|
||||
|
||||
<function name="BlitNamedFramebuffer" offset="assign">
|
||||
<param name="readFramebuffer" type="GLuint" />
|
||||
<param name="drawFramebuffer" type="GLuint" />
|
||||
|
||||
@@ -682,3 +682,21 @@ _mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer,
|
||||
ctx->Stencil.Clear = clearStencilSave;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The ClearBuffer framework is so complicated and so riddled with the
|
||||
* assumption that the framebuffer is bound that, for now, we will just fake
|
||||
* direct state access clearing for the user.
|
||||
*/
|
||||
void GLAPIENTRY
|
||||
_mesa_ClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer,
|
||||
GLfloat depth, GLint stencil)
|
||||
{
|
||||
GLint oldfb;
|
||||
|
||||
_mesa_GetIntegerv(GL_DRAW_FRAMEBUFFER_BINDING, &oldfb);
|
||||
_mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, framebuffer);
|
||||
_mesa_ClearBufferfi(buffer, 0, depth, stencil);
|
||||
_mesa_BindFramebuffer(GL_DRAW_FRAMEBUFFER, (GLuint) oldfb);
|
||||
}
|
||||
|
||||
@@ -73,4 +73,8 @@ extern void GLAPIENTRY
|
||||
_mesa_ClearBufferfi(GLenum buffer, GLint drawbuffer,
|
||||
GLfloat depth, GLint stencil);
|
||||
|
||||
extern void GLAPIENTRY
|
||||
_mesa_ClearNamedFramebufferfi(GLuint framebuffer, GLenum buffer,
|
||||
GLfloat depth, GLint stencil);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -989,6 +989,7 @@ const struct function gl_core_functions_possible[] = {
|
||||
{ "glClearNamedFramebufferiv", 45, -1 },
|
||||
{ "glClearNamedFramebufferuiv", 45, -1 },
|
||||
{ "glClearNamedFramebufferfv", 45, -1 },
|
||||
{ "glClearNamedFramebufferfi", 45, -1 },
|
||||
{ "glBlitNamedFramebuffer", 45, -1 },
|
||||
{ "glCheckNamedFramebufferStatus", 45, -1 },
|
||||
{ "glGetNamedFramebufferAttachmentParameteriv", 45, -1 },
|
||||
|
||||
Reference in New Issue
Block a user