iOS: Avoid generating an OpenGL error (but still fail to create the context) if the specified MSAA sample count is unsupported.
authorAlex Szpakowski <slime73@gmail.com>
Sun, 19 Jul 2015 19:56:16 -0300
changeset 9811 9d44e8794a9b
parent 9810 1e079120100e
child 9812 9b4dd9efb04e
iOS: Avoid generating an OpenGL error (but still fail to create the context) if the specified MSAA sample count is unsupported.
src/video/uikit/SDL_uikitopenglview.m
--- a/src/video/uikit/SDL_uikitopenglview.m	Sun Jul 19 19:44:40 2015 -0300
+++ b/src/video/uikit/SDL_uikitopenglview.m	Sun Jul 19 19:56:16 2015 -0300
@@ -84,6 +84,18 @@
             return nil;
         }
 
+        if (samples > 0) {
+            GLint maxsamples = 0;
+            glGetIntegerv(GL_MAX_SAMPLES, &maxsamples);
+
+            /* Verify that the sample count is supported before creating any
+             * multisample Renderbuffers, to avoid generating GL errors. */
+            if (samples > maxsamples) {
+                SDL_SetError("Failed creating OpenGL ES framebuffer: Unsupported MSAA sample count");
+                return nil;
+            }
+        }
+
         if (sRGB) {
             /* sRGB EAGL drawable support was added in iOS 7. */
             if (UIKit_IsSystemVersionAtLeast(7.0)) {
@@ -150,11 +162,6 @@
             glRenderbufferStorageMultisample(GL_RENDERBUFFER, samples, colorBufferFormat, backingWidth, backingHeight);
 
             glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, msaaRenderbuffer);
-
-            if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) {
-                SDL_SetError("Failed creating OpenGL ES framebuffer: Unsupported MSAA sample count");
-                return nil;
-            }
         }
 
         if (useDepthBuffer || useStencilBuffer) {