i965: Allow creation of OpenGL 3.1 contexts
authorIan Romanick <ian.d.romanick@intel.com>
Tue, 7 Aug 2012 19:50:44 +0000 (12:50 -0700)
committerIan Romanick <ian.d.romanick@intel.com>
Wed, 29 Aug 2012 22:09:38 +0000 (15:09 -0700)
v2: Fix API_OPENGL_CORE handling when TEXTURE_FLOAT_ENABLED is not
defined.  Based on review feedback from Eric Anholt.

Signed-off-by: Ian Romanick <ian.d.romanick@intel.com>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_context.c

index 8d2e5c99e08c3a725a3b17690ff17e3d90a07878..4e5aed6930255d3afc6f8c12521eacce37b652ca 100644 (file)
@@ -109,6 +109,25 @@ brwCreateContext(int api,
    case API_OPENGLES:
    case API_OPENGLES2:
       break;
+   case API_OPENGL_CORE: {
+#ifdef TEXTURE_FLOAT_ENABLED
+      const unsigned max_version =
+         (screen->gen == 6 ||
+          (screen->gen == 7 && screen->kernel_has_gen7_sol_reset))
+         ? 31 : 0;
+      const unsigned req_version = major_version * 10 + minor_version;
+
+      if (req_version > max_version) {
+         *error = (max_version == 0)
+            ? __DRI_CTX_ERROR_BAD_API : __DRI_CTX_ERROR_BAD_VERSION;
+         return false;
+      }
+      break;
+#else
+      *error = __DRI_CTX_ERROR_BAD_API;
+      return false;
+#endif
+   }
    default:
       *error = __DRI_CTX_ERROR_BAD_API;
       return false;