Henri Verbeet : wined3d: Just store the wined3d format in color_key_info[] .
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Oct 2 16:29:22 CDT 2014
Module: wine
Branch: master
Commit: 5802f72adfad0ef5bebc139a3775bc35c4274bc7
URL: http://source.winehq.org/git/wine.git/?a=commit;h=5802f72adfad0ef5bebc139a3775bc35c4274bc7
Author: Henri Verbeet <hverbeet at codeweavers.com>
Date: Thu Oct 2 09:43:38 2014 +0200
wined3d: Just store the wined3d format in color_key_info[].
---
dlls/wined3d/surface.c | 35 +++++++++++++++++------------------
1 file changed, 17 insertions(+), 18 deletions(-)
diff --git a/dlls/wined3d/surface.c b/dlls/wined3d/surface.c
index a4a11c1..cf057e2 100644
--- a/dlls/wined3d/surface.c
+++ b/dlls/wined3d/surface.c
@@ -1591,28 +1591,28 @@ static void d3dfmt_get_conv(const struct wined3d_texture *texture, BOOL need_alp
BOOL colorkey_active = need_alpha_ck && (texture->color_key_flags & WINEDDSD_CKSRCBLT);
const struct wined3d_device *device = texture->resource.device;
const struct wined3d_gl_info *gl_info = &device->adapter->gl_info;
+ const struct wined3d_format *dst_format;
+ enum wined3d_format_id dst_format_id;
unsigned int i;
static const struct
{
enum wined3d_format_id src_format;
enum wined3d_conversion_type conversion_type;
- GLint gl_internal;
- GLint gl_format;
- GLint gl_type;
- unsigned int conv_byte_count;
+ enum wined3d_format_id dst_format;
}
color_key_info[] =
{
- {WINED3DFMT_B5G6R5_UNORM, WINED3D_CT_CK_B5G6R5, GL_RGB5_A1, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2},
- {WINED3DFMT_B5G5R5X1_UNORM, WINED3D_CT_CK_B5G5R5X1, GL_RGB5_A1, GL_BGRA, GL_UNSIGNED_SHORT_1_5_5_5_REV, 2},
- {WINED3DFMT_B8G8R8_UNORM, WINED3D_CT_CK_B8G8R8, GL_RGBA8, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4},
- {WINED3DFMT_B8G8R8X8_UNORM, WINED3D_CT_CK_B8G8R8X8, GL_RGBA8, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4},
- {WINED3DFMT_B8G8R8A8_UNORM, WINED3D_CT_CK_B8G8R8A8, GL_RGBA8, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, 4},
+ {WINED3DFMT_B5G6R5_UNORM, WINED3D_CT_CK_B5G6R5, WINED3DFMT_B5G5R5A1_UNORM},
+ {WINED3DFMT_B5G5R5X1_UNORM, WINED3D_CT_CK_B5G5R5X1, WINED3DFMT_B5G5R5A1_UNORM},
+ {WINED3DFMT_B8G8R8_UNORM, WINED3D_CT_CK_B8G8R8, WINED3DFMT_B8G8R8A8_UNORM},
+ {WINED3DFMT_B8G8R8X8_UNORM, WINED3D_CT_CK_B8G8R8X8, WINED3DFMT_B8G8R8A8_UNORM},
+ {WINED3DFMT_B8G8R8A8_UNORM, WINED3D_CT_CK_B8G8R8A8, WINED3DFMT_B8G8R8A8_UNORM},
};
*format = *texture->resource.format;
*conversion_type = WINED3D_CT_NONE;
+ dst_format_id = format->id;
if (colorkey_active)
{
@@ -1622,10 +1622,7 @@ static void d3dfmt_get_conv(const struct wined3d_texture *texture, BOOL need_alp
continue;
*conversion_type = color_key_info[i].conversion_type;
- format->glInternal = color_key_info[i].gl_internal;
- format->glFormat = color_key_info[i].gl_format;
- format->glType = color_key_info[i].gl_type;
- format->conv_byte_count = color_key_info[i].conv_byte_count;
+ dst_format_id = color_key_info[i].dst_format;
break;
}
}
@@ -1638,10 +1635,7 @@ static void d3dfmt_get_conv(const struct wined3d_texture *texture, BOOL need_alp
&& texture == texture->swapchain->front_buffer)) || colorkey_active)
{
*conversion_type = WINED3D_CT_P8;
- format->glInternal = GL_RGBA8;
- format->glFormat = GL_BGRA;
- format->glType = GL_UNSIGNED_INT_8_8_8_8_REV;
- format->conv_byte_count = 4;
+ dst_format_id = WINED3DFMT_B8G8R8A8_UNORM;
}
}
else if (texture->resource.format->id == WINED3DFMT_B2G3R3_UNORM && colorkey_active)
@@ -1653,8 +1647,13 @@ static void d3dfmt_get_conv(const struct wined3d_texture *texture, BOOL need_alp
if (*conversion_type != WINED3D_CT_NONE)
{
- format->rtInternal = format->glInternal;
+ dst_format = wined3d_get_format(gl_info, dst_format_id);
+ format->glInternal = dst_format->glInternal;
format->glGammaInternal = format->glInternal;
+ format->rtInternal = format->glInternal;
+ format->glFormat = dst_format->glFormat;
+ format->glType = dst_format->glType;
+ format->conv_byte_count = dst_format->byte_count;
}
}
More information about the wine-cvs
mailing list