[PATCH 7/7] wined3d: Use format id as index in formats table whenever possible.

Józef Kucia jkucia at codeweavers.com
Tue Feb 9 19:14:30 CST 2016


Signed-off-by: Józef Kucia <jkucia at codeweavers.com>
---
 dlls/wined3d/utils.c | 182 +++++++++++++++++++++++++++++++--------------------
 1 file changed, 110 insertions(+), 72 deletions(-)

diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c
index 4dbfb7f..51c34d3 100644
--- a/dlls/wined3d/utils.c
+++ b/dlls/wined3d/utils.c
@@ -1409,23 +1409,21 @@ static const struct wined3d_format_srgb_info format_srgb_info[] =
     {WINED3DFMT_BC7_UNORM_SRGB,      WINED3DFMT_BC7_UNORM},
 };
 
-static inline int getFmtIdx(enum wined3d_format_id format_id)
+static inline int get_format_idx(const struct wined3d_gl_info *gl_info, enum wined3d_format_id format_id)
 {
+    unsigned int i;
+
     /* First check if the format is at the position of its value.
-     * This will catch the argb formats before the loop is entered. */
-    if (format_id < ARRAY_SIZE(formats) && formats[format_id].id == format_id)
-    {
+     * This will catch the majority of formats before the loop is entered. */
+    if (format_id < gl_info->format_count && gl_info->formats[format_id].id == format_id)
         return format_id;
-    }
-    else
-    {
-        unsigned int i;
 
-        for (i = 0; i < ARRAY_SIZE(formats); ++i)
-            if (formats[i].id == format_id) return i;
-        for (i = 0; i < ARRAY_SIZE(typed_formats); ++i)
-            if (typed_formats[i].id == format_id) return ARRAY_SIZE(formats) + i;
+    for (i = 0; i < gl_info->format_count; ++i)
+    {
+        if (gl_info->formats[i].id == format_id)
+            return i;
     }
+
     return -1;
 }
 
@@ -1447,6 +1445,7 @@ static void format_clear_flag(struct wined3d_format *format, unsigned int flag)
 
 static BOOL init_format_base_info(struct wined3d_gl_info *gl_info)
 {
+    BOOL *used_format_entries = NULL;
     unsigned int i, j;
 
     gl_info->format_count = ARRAY_SIZE(formats) + ARRAY_SIZE(typed_formats);
@@ -1455,12 +1454,40 @@ static BOOL init_format_base_info(struct wined3d_gl_info *gl_info)
             gl_info->format_count * sizeof(*gl_info->formats))))
     {
         ERR("Failed to allocate memory.\n");
-        return FALSE;
+        goto fail;
+    }
+    if (!(used_format_entries = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY,
+            gl_info->format_count * sizeof(*used_format_entries))))
+    {
+        ERR("Failed to allocated memory.\n");
+        goto fail;
     }
 
     for (i = 0; i < ARRAY_SIZE(formats); ++i)
     {
-        struct wined3d_format *format = &gl_info->formats[i];
+        if (formats[i].id < gl_info->format_count)
+            used_format_entries[formats[i].id] = TRUE;
+    }
+    for (i = 0; i < ARRAY_SIZE(typed_formats); ++i)
+    {
+        if (typed_formats[i].id < gl_info->format_count)
+            used_format_entries[typed_formats[i].id] = TRUE;
+    }
+
+    for (i = 0; i < ARRAY_SIZE(formats); ++i)
+    {
+        struct wined3d_format *format;
+        unsigned int fmt_idx;
+
+        fmt_idx = formats[i].id;
+        if (fmt_idx >= gl_info->format_count)
+        {
+            for (j = 0; used_format_entries[j]; ++j);
+            used_format_entries[j] = TRUE;
+            fmt_idx = j;
+        }
+
+        format = &gl_info->formats[fmt_idx];
         format->id = formats[i].id;
         format->red_size = formats[i].red_size;
         format->green_size = formats[i].green_size;
@@ -1496,14 +1523,20 @@ static BOOL init_format_base_info(struct wined3d_gl_info *gl_info)
         int fmt_idx, typeless_fmt_idx;
         DWORD flags = 0;
 
-        fmt_idx = ARRAY_SIZE(formats) + i;
-        typeless_fmt_idx = getFmtIdx(typed_formats[i].typeless_id);
+        fmt_idx = typed_formats[i].id;
+        if (fmt_idx >= gl_info->format_count)
+        {
+            for (j = 0; used_format_entries[j]; ++j);
+            used_format_entries[j] = TRUE;
+            fmt_idx = j;
+        }
+
+        typeless_fmt_idx = get_format_idx(gl_info, typed_formats[i].typeless_id);
         if (typeless_fmt_idx == -1)
         {
             ERR("Typeless format %s (%#x) not found.\n",
                     debug_d3dformat(typed_formats[i].typeless_id), typed_formats[i].typeless_id);
-            HeapFree(GetProcessHeap(), 0, gl_info->formats);
-            return FALSE;
+            goto fail;
         }
 
         format = &gl_info->formats[fmt_idx];
@@ -1539,20 +1572,25 @@ static BOOL init_format_base_info(struct wined3d_gl_info *gl_info)
 
     for (i = 0; i < ARRAY_SIZE(format_base_flags); ++i)
     {
-        int fmt_idx = getFmtIdx(format_base_flags[i].id);
+        int fmt_idx = get_format_idx(gl_info, format_base_flags[i].id);
 
         if (fmt_idx == -1)
         {
             ERR("Format %s (%#x) not found.\n",
                     debug_d3dformat(format_base_flags[i].id), format_base_flags[i].id);
-            HeapFree(GetProcessHeap(), 0, gl_info->formats);
-            return FALSE;
+            goto fail;
         }
 
         format_set_flag(&gl_info->formats[fmt_idx], format_base_flags[i].flags);
     }
 
+    HeapFree(GetProcessHeap(), 0, used_format_entries);
     return TRUE;
+
+fail:
+    HeapFree(GetProcessHeap(), 0, used_format_entries);
+    HeapFree(GetProcessHeap(), 0, gl_info->formats);
+    return FALSE;
 }
 
 static BOOL init_format_block_info(struct wined3d_gl_info *gl_info)
@@ -1562,7 +1600,7 @@ static BOOL init_format_block_info(struct wined3d_gl_info *gl_info)
     for (i = 0; i < (sizeof(format_block_info) / sizeof(*format_block_info)); ++i)
     {
         struct wined3d_format *format;
-        int fmt_idx = getFmtIdx(format_block_info[i].id);
+        int fmt_idx = get_format_idx(gl_info, format_block_info[i].id);
 
         if (fmt_idx == -1)
         {
@@ -2406,7 +2444,7 @@ static BOOL init_format_texture_info(struct wined3d_adapter *adapter, struct win
 
     for (i = 0; i < sizeof(format_texture_info) / sizeof(*format_texture_info); ++i)
     {
-        int srgb_fmt_idx = -1, fmt_idx = getFmtIdx(format_texture_info[i].id);
+        int srgb_fmt_idx = -1, fmt_idx = get_format_idx(gl_info, format_texture_info[i].id);
         struct wined3d_format *format, *srgb_format;
 
         if (fmt_idx == -1)
@@ -2476,7 +2514,7 @@ static BOOL init_format_texture_info(struct wined3d_adapter *adapter, struct win
         {
             if (format_srgb_info[j].base_format_id == format->id)
             {
-                srgb_fmt_idx = getFmtIdx(format_srgb_info[j].srgb_format_id);
+                srgb_fmt_idx = get_format_idx(gl_info, format_srgb_info[j].srgb_format_id);
                 if (srgb_fmt_idx == -1)
                 {
                     ERR("Format %s (%#x) not found.\n",
@@ -2660,7 +2698,7 @@ static void init_format_filter_info(struct wined3d_gl_info *gl_info, enum wined3
         {
             for(i = 0; i < (sizeof(fmts16) / sizeof(*fmts16)); i++)
             {
-                fmt_idx = getFmtIdx(fmts16[i]);
+                fmt_idx = get_format_idx(gl_info, fmts16[i]);
                 format_set_flag(&gl_info->formats[fmt_idx], WINED3DFMT_FLAG_FILTERING);
             }
         }
@@ -2669,7 +2707,7 @@ static void init_format_filter_info(struct wined3d_gl_info *gl_info, enum wined3
 
     for(i = 0; i < (sizeof(fmts16) / sizeof(*fmts16)); i++)
     {
-        fmt_idx = getFmtIdx(fmts16[i]);
+        fmt_idx = get_format_idx(gl_info, fmts16[i]);
         format = &gl_info->formats[fmt_idx];
         if (!format->glInternal) continue; /* Not supported by GL */
 
@@ -2691,23 +2729,23 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
     unsigned int i;
     int idx;
 
-    idx = getFmtIdx(WINED3DFMT_R16_FLOAT);
+    idx = get_format_idx(gl_info, WINED3DFMT_R16_FLOAT);
     gl_info->formats[idx].color_fixup = create_color_fixup_desc(
             0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
 
-    idx = getFmtIdx(WINED3DFMT_R32_FLOAT);
+    idx = get_format_idx(gl_info, WINED3DFMT_R32_FLOAT);
     gl_info->formats[idx].color_fixup = create_color_fixup_desc(
             0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
 
-    idx = getFmtIdx(WINED3DFMT_R16G16_UNORM);
+    idx = get_format_idx(gl_info, WINED3DFMT_R16G16_UNORM);
     gl_info->formats[idx].color_fixup = create_color_fixup_desc(
             0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
 
-    idx = getFmtIdx(WINED3DFMT_R16G16_FLOAT);
+    idx = get_format_idx(gl_info, WINED3DFMT_R16G16_FLOAT);
     gl_info->formats[idx].color_fixup = create_color_fixup_desc(
             0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
 
-    idx = getFmtIdx(WINED3DFMT_R32G32_FLOAT);
+    idx = get_format_idx(gl_info, WINED3DFMT_R32G32_FLOAT);
     gl_info->formats[idx].color_fixup = create_color_fixup_desc(
             0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_W);
 
@@ -2718,10 +2756,10 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
         /* R8G8_SNORM and R16G16_SNORM need a fixup of the undefined blue channel. OpenGL
          * returns 0.0 when sampling from it, DirectX 1.0. So we always have in-shader
          * conversion for this format. */
-        idx = getFmtIdx(WINED3DFMT_R8G8_SNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R8G8_SNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
-        idx = getFmtIdx(WINED3DFMT_R16G16_SNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16_SNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
     }
@@ -2729,60 +2767,60 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
     {
         /* Emulate using unsigned formats. This requires load-time conversion in addition to the
          * fixups here. */
-        idx = getFmtIdx(WINED3DFMT_R8G8_SNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R8G8_SNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
-        idx = getFmtIdx(WINED3DFMT_R16G16_SNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16_SNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
-        idx = getFmtIdx(WINED3DFMT_R8G8B8A8_SNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R8G8B8A8_SNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 1, CHANNEL_SOURCE_Z, 1, CHANNEL_SOURCE_W);
-        idx = getFmtIdx(WINED3DFMT_R5G5_SNORM_L6_UNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R5G5_SNORM_L6_UNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_ONE);
     }
 
     if (!gl_info->supported[NV_TEXTURE_SHADER])
     {
-        idx = getFmtIdx(WINED3DFMT_R8G8_SNORM_L8X8_UNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R8G8_SNORM_L8X8_UNORM);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 1, CHANNEL_SOURCE_X, 1, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_Z, 0, CHANNEL_SOURCE_W);
     }
 
     if (gl_info->supported[ARB_TEXTURE_COMPRESSION_RGTC] || gl_info->supported[EXT_TEXTURE_COMPRESSION_RGTC])
     {
-        idx = getFmtIdx(WINED3DFMT_ATI1N);
+        idx = get_format_idx(gl_info, WINED3DFMT_ATI1N);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X);
 
-        idx = getFmtIdx(WINED3DFMT_ATI2N);
+        idx = get_format_idx(gl_info, WINED3DFMT_ATI2N);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 0, CHANNEL_SOURCE_Y, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
     }
     else if (gl_info->supported[ATI_TEXTURE_COMPRESSION_3DC])
     {
-        idx = getFmtIdx(WINED3DFMT_ATI2N);
+        idx = get_format_idx(gl_info, WINED3DFMT_ATI2N);
         gl_info->formats[idx].color_fixup= create_color_fixup_desc(
                 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_W, 0, CHANNEL_SOURCE_ONE, 0, CHANNEL_SOURCE_ONE);
     }
 
     if (!gl_info->supported[APPLE_YCBCR_422])
     {
-        idx = getFmtIdx(WINED3DFMT_YUY2);
+        idx = get_format_idx(gl_info, WINED3DFMT_YUY2);
         gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_YUY2);
 
-        idx = getFmtIdx(WINED3DFMT_UYVY);
+        idx = get_format_idx(gl_info, WINED3DFMT_UYVY);
         gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_UYVY);
     }
 
-    idx = getFmtIdx(WINED3DFMT_YV12);
+    idx = get_format_idx(gl_info, WINED3DFMT_YV12);
     format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
     gl_info->formats[idx].height_scale.numerator = 3;
     gl_info->formats[idx].height_scale.denominator = 2;
     gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_YV12);
 
-    idx = getFmtIdx(WINED3DFMT_NV12);
+    idx = get_format_idx(gl_info, WINED3DFMT_NV12);
     format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_HEIGHT_SCALE);
     gl_info->formats[idx].height_scale.numerator = 3;
     gl_info->formats[idx].height_scale.denominator = 2;
@@ -2790,20 +2828,20 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
 
     if (!gl_info->supported[WINED3D_GL_LEGACY_CONTEXT])
     {
-        idx = getFmtIdx(WINED3DFMT_INTZ);
+        idx = get_format_idx(gl_info, WINED3DFMT_INTZ);
         gl_info->formats[idx].color_fixup = create_color_fixup_desc(
                 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X, 0, CHANNEL_SOURCE_X);
     }
 
     if (gl_info->supported[ARB_FRAGMENT_PROGRAM])
     {
-        idx = getFmtIdx(WINED3DFMT_P8_UINT);
+        idx = get_format_idx(gl_info, WINED3DFMT_P8_UINT);
         gl_info->formats[idx].color_fixup = create_complex_fixup_desc(COMPLEX_FIXUP_P8);
     }
 
     if (gl_info->supported[ARB_VERTEX_ARRAY_BGRA])
     {
-        idx = getFmtIdx(WINED3DFMT_B8G8R8A8_UNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_B8G8R8A8_UNORM);
         gl_info->formats[idx].gl_vtx_format = GL_BGRA;
     }
 
@@ -2811,28 +2849,28 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
     {
         /* Do not change the size of the type, it is CPU side. We have to change the GPU-side information though.
          * It is the job of the vertex buffer code to make sure that the vbos have the right format */
-        idx = getFmtIdx(WINED3DFMT_R16G16_FLOAT);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16_FLOAT);
         gl_info->formats[idx].gl_vtx_type = GL_HALF_FLOAT; /* == GL_HALF_FLOAT_NV */
 
-        idx = getFmtIdx(WINED3DFMT_R16G16B16A16_FLOAT);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16B16A16_FLOAT);
         gl_info->formats[idx].gl_vtx_type = GL_HALF_FLOAT;
     }
 
     if (!gl_info->supported[ARB_HALF_FLOAT_PIXEL])
     {
-        idx = getFmtIdx(WINED3DFMT_R16_FLOAT);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16_FLOAT);
         format_clear_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
 
-        idx = getFmtIdx(WINED3DFMT_R16G16_FLOAT);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16_FLOAT);
         format_clear_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
 
-        idx = getFmtIdx(WINED3DFMT_R16G16B16A16_FLOAT);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16B16A16_FLOAT);
         format_clear_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
     }
 
     if (gl_info->quirks & WINED3D_QUIRK_BROKEN_RGBA16)
     {
-        idx = getFmtIdx(WINED3DFMT_R16G16B16A16_UNORM);
+        idx = get_format_idx(gl_info, WINED3DFMT_R16G16B16A16_UNORM);
         format_clear_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
     }
 
@@ -2851,7 +2889,7 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
     /* FIXME: This should just check the shader backend caps. */
     if (gl_info->supported[ARB_VERTEX_PROGRAM] || gl_info->supported[ARB_VERTEX_SHADER])
     {
-        idx = getFmtIdx(WINED3DFMT_INST);
+        idx = get_format_idx(gl_info, WINED3DFMT_INST);
         format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
     }
 
@@ -2863,7 +2901,7 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
      * value. */
     if (gl_info->supported[EXT_DEPTH_BOUNDS_TEST])
     {
-        idx = getFmtIdx(WINED3DFMT_NVDB);
+        idx = get_format_idx(gl_info, WINED3DFMT_NVDB);
         format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE);
     }
 
@@ -2872,7 +2910,7 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
      * RENDERTARGET usage. */
     if (gl_info->supported[ARB_FRAMEBUFFER_OBJECT])
     {
-        idx = getFmtIdx(WINED3DFMT_RESZ);
+        idx = get_format_idx(gl_info, WINED3DFMT_RESZ);
         format_set_flag(&gl_info->formats[idx], WINED3DFMT_FLAG_TEXTURE | WINED3DFMT_FLAG_RENDERTARGET);
     }
 
@@ -2893,26 +2931,26 @@ static void apply_format_fixups(struct wined3d_adapter *adapter, struct wined3d_
      *
      * Note that GL_NV_texture_compression_vtc adds this functionality to OpenGL, but the
      * block layout is not compatible with the one used by d3d. See volume_dxt5_test. */
-    idx = getFmtIdx(WINED3DFMT_DXT1);
+    idx = get_format_idx(gl_info, WINED3DFMT_DXT1);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_DXT2);
+    idx = get_format_idx(gl_info, WINED3DFMT_DXT2);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_DXT3);
+    idx = get_format_idx(gl_info, WINED3DFMT_DXT3);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_DXT4);
+    idx = get_format_idx(gl_info, WINED3DFMT_DXT4);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_DXT5);
+    idx = get_format_idx(gl_info, WINED3DFMT_DXT5);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_BC1_UNORM);
+    idx = get_format_idx(gl_info, WINED3DFMT_BC1_UNORM);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_BC2_UNORM);
+    idx = get_format_idx(gl_info, WINED3DFMT_BC2_UNORM);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_BC3_UNORM);
+    idx = get_format_idx(gl_info, WINED3DFMT_BC3_UNORM);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
     /* Similarly with ATI1N / ATI2N and GL_ARB_texture_compression_rgtc. */
-    idx = getFmtIdx(WINED3DFMT_ATI1N);
+    idx = get_format_idx(gl_info, WINED3DFMT_ATI1N);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
-    idx = getFmtIdx(WINED3DFMT_ATI2N);
+    idx = get_format_idx(gl_info, WINED3DFMT_ATI2N);
     gl_info->formats[idx].flags[WINED3D_GL_RES_TYPE_TEX_3D] &= ~WINED3DFMT_FLAG_TEXTURE;
 }
 
@@ -2923,7 +2961,7 @@ static BOOL init_format_vertex_info(struct wined3d_gl_info *gl_info)
     for (i = 0; i < (sizeof(format_vertex_info) / sizeof(*format_vertex_info)); ++i)
     {
         struct wined3d_format *format;
-        int fmt_idx = getFmtIdx(format_vertex_info[i].id);
+        int fmt_idx = get_format_idx(gl_info, format_vertex_info[i].id);
 
         if (fmt_idx == -1)
         {
@@ -2952,8 +2990,8 @@ static BOOL init_typeless_formats(struct wined3d_gl_info *gl_info)
     for (i = 0; i < ARRAY_SIZE(typed_formats); ++i)
     {
         struct wined3d_format *format, *typeless_format;
-        int fmt_idx = getFmtIdx(typed_formats[i].id);
-        int typeless_fmt_idx = getFmtIdx(typed_formats[i].typeless_id);
+        int fmt_idx = get_format_idx(gl_info, typed_formats[i].id);
+        int typeless_fmt_idx = get_format_idx(gl_info, typed_formats[i].typeless_id);
 
         if (fmt_idx == -1)
         {
@@ -3118,14 +3156,14 @@ float wined3d_adapter_find_polyoffset_scale(struct wined3d_caps_gl_ctx *ctx, GLe
 const struct wined3d_format *wined3d_get_format(const struct wined3d_gl_info *gl_info,
         enum wined3d_format_id format_id)
 {
-    int idx = getFmtIdx(format_id);
+    int idx = get_format_idx(gl_info, format_id);
 
     if (idx == -1)
     {
         FIXME("Can't find format %s (%#x) in the format lookup table\n",
                 debug_d3dformat(format_id), format_id);
         /* Get the caller a valid pointer */
-        idx = getFmtIdx(WINED3DFMT_UNKNOWN);
+        idx = get_format_idx(gl_info, WINED3DFMT_UNKNOWN);
     }
 
     return &gl_info->formats[idx];
-- 
2.4.10




More information about the wine-patches mailing list