mesa/formatquery: Added INTERNALFORMAT_PREFERRED pname
[mesa.git] / src / mesa / main / formatquery.c
index 60d8b71b0d29fb7328dc5ae6f6c43255f53144ee..2037e84e17b787553e78f49065e4acdbab67fafc 100644 (file)
@@ -577,6 +577,15 @@ _mesa_query_internal_format_default(struct gl_context *ctx, GLenum target,
    case GL_NUM_SAMPLE_COUNTS:
       params[0] = 1;
       break;
+
+   case GL_INTERNALFORMAT_SUPPORTED:
+      params[0] = GL_TRUE;
+      break;
+
+   case GL_INTERNALFORMAT_PREFERRED:
+      params[0] = internalFormat;
+      break;
+
    default:
       _set_default_response(pname, params);
       break;
@@ -652,11 +661,24 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
       break;
 
    case GL_INTERNALFORMAT_SUPPORTED:
-      /* @TODO */
+      /* Having a supported <internalformat> is implemented as a prerequisite
+       * for all the <pnames>. Thus,  if we reach this point, the internalformat is
+       * supported.
+       */
+      buffer[0] = GL_TRUE;
       break;
 
    case GL_INTERNALFORMAT_PREFERRED:
-      /* @TODO */
+      /* The ARB_internalformat_query2 spec says:
+       *
+       *     "- INTERNALFORMAT_PREFERRED: The implementation-preferred internal
+       *     format for representing resources of the specified <internalformat> is
+       *     returned in <params>.
+       *
+       * Therefore, we let the driver answer.
+       */
+      ctx->Driver.QueryInternalFormat(ctx, target, internalformat, pname,
+                                      buffer);
       break;
 
    case GL_INTERNALFORMAT_RED_SIZE: