[Mesa-dev] [PATCH v2 14/23] mesa: add blit_named_framebuffer() helper
Samuel Pitoiset
samuel.pitoiset at gmail.com
Mon Jun 5 21:44:02 UTC 2017
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
---
src/mesa/main/blit.c | 79 +++++++++++++++++++++++++++++++++-------------------
1 file changed, 51 insertions(+), 28 deletions(-)
diff --git a/src/mesa/main/blit.c b/src/mesa/main/blit.c
index 609df63d20..46903b5181 100644
--- a/src/mesa/main/blit.c
+++ b/src/mesa/main/blit.c
@@ -623,24 +623,15 @@ _mesa_BlitFramebuffer(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
}
-void GLAPIENTRY
-_mesa_BlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
- GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
- GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
- GLbitfield mask, GLenum filter)
+static ALWAYS_INLINE void
+blit_named_framebuffer(struct gl_context *ctx,
+ GLuint readFramebuffer, GLuint drawFramebuffer,
+ GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+ GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+ GLbitfield mask, GLenum filter, bool no_error)
{
- GET_CURRENT_CONTEXT(ctx);
struct gl_framebuffer *readFb, *drawFb;
- if (MESA_VERBOSE & VERBOSE_API)
- _mesa_debug(ctx,
- "glBlitNamedFramebuffer(%u %u %d, %d, %d, %d, "
- " %d, %d, %d, %d, 0x%x, %s)\n",
- readFramebuffer, drawFramebuffer,
- srcX0, srcY0, srcX1, srcY1,
- dstX0, dstY0, dstX1, dstY1,
- mask, _mesa_enum_to_string(filter));
-
/*
* According to PDF page 533 of the OpenGL 4.5 core spec (30.10.2014,
* Section 18.3 Copying Pixels):
@@ -650,25 +641,57 @@ _mesa_BlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
* respectively."
*/
if (readFramebuffer) {
- readFb = _mesa_lookup_framebuffer_err(ctx, readFramebuffer,
- "glBlitNamedFramebuffer");
- if (!readFb)
- return;
- }
- else
+ if (no_error) {
+ readFb = _mesa_lookup_framebuffer(ctx, readFramebuffer);
+ } else {
+ readFb = _mesa_lookup_framebuffer_err(ctx, readFramebuffer,
+ "glBlitNamedFramebuffer");
+ if (!readFb)
+ return;
+ }
+ } else {
readFb = ctx->WinSysReadBuffer;
+ }
if (drawFramebuffer) {
- drawFb = _mesa_lookup_framebuffer_err(ctx, drawFramebuffer,
- "glBlitNamedFramebuffer");
- if (!drawFb)
- return;
- }
- else
+ if (no_error) {
+ drawFb = _mesa_lookup_framebuffer(ctx, drawFramebuffer);
+ } else {
+ drawFb = _mesa_lookup_framebuffer_err(ctx, drawFramebuffer,
+ "glBlitNamedFramebuffer");
+ if (!drawFb)
+ return;
+ }
+ } else {
drawFb = ctx->WinSysDrawBuffer;
+ }
blit_framebuffer(ctx, readFb, drawFb,
srcX0, srcY0, srcX1, srcY1,
dstX0, dstY0, dstX1, dstY1,
- mask, filter, false, "glBlitNamedFramebuffer");
+ mask, filter, no_error, "glBlitNamedFramebuffer");
+}
+
+
+void GLAPIENTRY
+_mesa_BlitNamedFramebuffer(GLuint readFramebuffer, GLuint drawFramebuffer,
+ GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
+ GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1,
+ GLbitfield mask, GLenum filter)
+{
+ GET_CURRENT_CONTEXT(ctx);
+
+ if (MESA_VERBOSE & VERBOSE_API)
+ _mesa_debug(ctx,
+ "glBlitNamedFramebuffer(%u %u %d, %d, %d, %d, "
+ " %d, %d, %d, %d, 0x%x, %s)\n",
+ readFramebuffer, drawFramebuffer,
+ srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1,
+ mask, _mesa_enum_to_string(filter));
+
+ blit_named_framebuffer(ctx, readFramebuffer, drawFramebuffer,
+ srcX0, srcY0, srcX1, srcY1,
+ dstX0, dstY0, dstX1, dstY1,
+ mask, filter, false);
}
--
2.13.0
More information about the mesa-dev
mailing list