formatquery: use correct target check for IMAGE_FORMAT_COMPATIBILITY_TYPE
authorAlejandro Piñeiro <apinheiro@igalia.com>
Wed, 25 Oct 2017 12:35:36 +0000 (14:35 +0200)
committerAlejandro Piñeiro <apinheiro@igalia.com>
Fri, 27 Oct 2017 13:04:03 +0000 (15:04 +0200)
From the spec:
   "IMAGE_FORMAT_COMPATIBILITY_TYPE: The matching criteria use for the
    resource when used as an image textures is returned in
    <params>. This is equivalent to calling GetTexParameter"

So we would need to return None for any target not supported by
GetTexParameter. By mistake, we were using the target check for
GetTexLevelParameter.

v2: fix typo (GetTextParameter vs GetTexParemeter) on comment (Illia Mirkin)

Reviewed-by: Antia Puentes <apuentes@igalia.com>
Reviewed-by: Marek Olšák <marek.olsak@amd.com>
src/mesa/main/formatquery.c

index 77c7faa22519f8f33ea7f58e04bd030be68e74c1..61f798c88fbb976bd8a3107d4dcdc154f42a1679 100644 (file)
@@ -1430,7 +1430,13 @@ _mesa_GetInternalformativ(GLenum target, GLenum internalformat, GLenum pname,
       if (!_mesa_has_ARB_shader_image_load_store(ctx))
          goto end;
 
-      if (!_mesa_legal_get_tex_level_parameter_target(ctx, target, true))
+      /* As pointed by the spec quote below, this pname query should return
+       * the same value that GetTexParameter. So if the target is not valid
+       * for GetTexParameter we return the unsupported value. The check below
+       * is the same target check used by GetTexParameter.
+       */
+      int targetIndex = _mesa_tex_target_to_index(ctx, target);
+      if (targetIndex < 0 || targetIndex == TEXTURE_BUFFER_INDEX)
          goto end;
 
       /* From spec: "Equivalent to calling GetTexParameter with <value> set