[Bf-blender-cvs] [9893153] blender2.8: OpenGL: fix FBO error messages

Mike Erwin noreply at git.blender.org
Tue Aug 9 00:03:35 CEST 2016


Commit: 9893153799386916a3f5f2d7274ee828685b8acf
Author: Mike Erwin
Date:   Mon Aug 8 18:02:40 2016 -0400
Branches: blender2.8
https://developer.blender.org/rB9893153799386916a3f5f2d7274ee828685b8acf

OpenGL: fix FBO error messages

Old code had a mix of framebuffer error codes from OpenGL ES, EXT_framebuffer_object, and desktop GL. We use desktop GL (or ARB_framebuffer_object which acts just like GL 3.x) so I made it compatible with that.

Changed messages to the actual GL_FRAMEBUFFER_XXX symbols. These are less friendly and more accurate. Can easily look up what an error means, unfiltered by what a Blender dev thinks it means.

Kept ES error codes around in case we support that one day. Just flip the #if or use a compile-time option.

===================================================================

M	source/blender/gpu/intern/gpu_framebuffer.c

===================================================================

diff --git a/source/blender/gpu/intern/gpu_framebuffer.c b/source/blender/gpu/intern/gpu_framebuffer.c
index b34b940..537923b 100644
--- a/source/blender/gpu/intern/gpu_framebuffer.c
+++ b/source/blender/gpu/intern/gpu_framebuffer.c
@@ -54,44 +54,37 @@ struct GPUFrameBuffer {
 
 static void GPU_print_framebuffer_error(GLenum status, char err_out[256])
 {
+	const char *format = "GPUFrameBuffer: framebuffer status %s";
 	const char *err = "unknown";
 
+#define format_status(X) \
+	case GL_FRAMEBUFFER_##X: err = "GL_FRAMEBUFFER_"#X; \
+		break;
+
 	switch (status) {
-		case GL_FRAMEBUFFER_COMPLETE:
-			break;
-		case GL_INVALID_OPERATION:
-			err = "Invalid operation";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT:
-			err = "Incomplete attachment";
-			break;
-		case GL_FRAMEBUFFER_UNSUPPORTED:
-			err = "Unsupported framebuffer format";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT:
-			err = "Missing attachment";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS:
-			err = "Attached images must have same dimensions";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_FORMATS:
-			err = "Attached images must have same format";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER:
-			err = "Missing draw buffer";
-			break;
-		case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER:
-			err = "Missing read buffer";
-			break;
+		/* success */
+		format_status(COMPLETE)
+		/* errors shared by OpenGL desktop & ES */
+		format_status(INCOMPLETE_ATTACHMENT)
+		format_status(INCOMPLETE_MISSING_ATTACHMENT)
+		format_status(UNSUPPORTED)
+#if 0 /* for OpenGL ES only */
+		format_status(INCOMPLETE_DIMENSIONS)
+#else /* for desktop GL only */
+		format_status(INCOMPLETE_DRAW_BUFFER)
+		format_status(INCOMPLETE_READ_BUFFER)
+		format_status(INCOMPLETE_MULTISAMPLE)
+		format_status(UNDEFINED)
+#endif
 	}
 
+#undef format_status
+
 	if (err_out) {
-		BLI_snprintf(err_out, 256, "GPUFrameBuffer: framebuffer incomplete error %d '%s'",
-			(int)status, err);
+		BLI_snprintf(err_out, 256, format, err);
 	}
 	else {
-		fprintf(stderr, "GPUFrameBuffer: framebuffer incomplete error %d '%s'\n",
-			(int)status, err);
+		fprintf(stderr, format, err);
 	}
 }




More information about the Bf-blender-cvs mailing list