[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