[Mesa-dev] [PATCH 13/13] mesa: add KHR_no_error support for NamedFramebufferTexture
Timothy Arceri
tarceri at itsqueeze.com
Mon May 8 06:35:37 UTC 2017
---
src/mapi/glapi/gen/ARB_direct_state_access.xml | 2 +-
src/mesa/main/fbobject.c | 26 ++++++++++++++++++++++++++
src/mesa/main/fbobject.h | 3 +++
3 files changed, 30 insertions(+), 1 deletion(-)
diff --git a/src/mapi/glapi/gen/ARB_direct_state_access.xml b/src/mapi/glapi/gen/ARB_direct_state_access.xml
index 2f3d60f..2f2ba20 100644
--- a/src/mapi/glapi/gen/ARB_direct_state_access.xml
+++ b/src/mapi/glapi/gen/ARB_direct_state_access.xml
@@ -164,21 +164,21 @@
<param name="renderbuffertarget" type="GLenum" />
<param name="renderbuffer" type="GLuint" />
</function>
<function name="NamedFramebufferParameteri">
<param name="framebuffer" type="GLuint" />
<param name="pname" type="GLenum" />
<param name="param" type="GLint" />
</function>
- <function name="NamedFramebufferTexture">
+ <function name="NamedFramebufferTexture" no_error="true">
<param name="framebuffer" type="GLuint" />
<param name="attachment" type="GLenum" />
<param name="texture" type="GLuint" />
<param name="level" type="GLint" />
</function>
<function name="NamedFramebufferTextureLayer" no_error="true">
<param name="framebuffer" type="GLuint" />
<param name="attachment" type="GLenum" />
<param name="texture" type="GLuint" />
diff --git a/src/mesa/main/fbobject.c b/src/mesa/main/fbobject.c
index 7901328..64416df 100644
--- a/src/mesa/main/fbobject.c
+++ b/src/mesa/main/fbobject.c
@@ -3658,20 +3658,46 @@ _mesa_FramebufferTexture(GLenum target, GLenum attachment,
struct gl_renderbuffer_attachment *att =
_mesa_get_and_validate_attachment(ctx, fb, attachment, func);
if (!att)
return;
_mesa_framebuffer_texture(ctx, fb, attachment, att, texObj, 0, level,
0, layered);
}
+void GLAPIENTRY
+_mesa_NamedFramebufferTexture_no_error(GLuint framebuffer, GLenum attachment,
+ GLuint texture, GLint level)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ /* Get the framebuffer object */
+ struct gl_framebuffer *fb = _mesa_lookup_framebuffer(ctx, framebuffer);
+
+ /* Get the texture object */
+ struct gl_texture_object *texObj =
+ get_texture_for_framebuffer(ctx, texture);
+
+ struct gl_renderbuffer_attachment *att =
+ get_attachment(ctx, fb, attachment, NULL);
+
+ GLboolean layered = GL_FALSE;
+ const char *func = "glNamedFramebufferTexture";
+ if (texObj) {
+ check_layered_texture_target(ctx, texObj->Target, func, &layered);
+ }
+
+ _mesa_framebuffer_texture(ctx, fb, attachment, att, texObj, 0, level,
+ 0, layered);
+}
+
void GLAPIENTRY
_mesa_NamedFramebufferTexture(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level)
{
GET_CURRENT_CONTEXT(ctx);
struct gl_framebuffer *fb;
struct gl_texture_object *texObj;
GLboolean layered = GL_FALSE;
diff --git a/src/mesa/main/fbobject.h b/src/mesa/main/fbobject.h
index 1d064f8..1c9056d 100644
--- a/src/mesa/main/fbobject.h
+++ b/src/mesa/main/fbobject.h
@@ -258,20 +258,23 @@ _mesa_NamedFramebufferTextureLayer(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level, GLint layer);
extern void GLAPIENTRY
_mesa_FramebufferTexture_no_error(GLenum target, GLenum attachment,
GLuint texture, GLint level);
extern void GLAPIENTRY
_mesa_FramebufferTexture(GLenum target, GLenum attachment,
GLuint texture, GLint level);
extern void GLAPIENTRY
+_mesa_NamedFramebufferTexture_no_error(GLuint framebuffer, GLenum attachment,
+ GLuint texture, GLint level);
+extern void GLAPIENTRY
_mesa_NamedFramebufferTexture(GLuint framebuffer, GLenum attachment,
GLuint texture, GLint level);
extern void GLAPIENTRY
_mesa_FramebufferRenderbuffer(GLenum target, GLenum attachment,
GLenum renderbuffertarget,
GLuint renderbuffer);
extern void GLAPIENTRY
_mesa_NamedFramebufferRenderbuffer(GLuint framebuffer, GLenum attachment,
--
2.9.3
More information about the mesa-dev
mailing list