ddraw/tests: Dx9 and earlier cards have problems with HW blits to R5G5B5A1.
My Geforce 7 sends R5G6B5 data to the R5G5B5A1 surface without any conversion. r200 and r500 set the alpha bit on the destination. This applies to sysmem->vidmem and vidmem->vidmem blits. Signed-off-by: Stefan Dösinger <stefan@codeweavers.com> Signed-off-by: Henri Verbeet <hverbeet@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
891a067760
commit
0a8d7b533c
|
@ -16719,7 +16719,7 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned int block_size, x_blocks, y_blocks;
|
unsigned int block_size, x_blocks, y_blocks;
|
||||||
DWORD support_flag;
|
DWORD support_flag;
|
||||||
BOOL broken_software_blit;
|
BOOL broken_software_blit, broken_hardware_blit;
|
||||||
}
|
}
|
||||||
formats[] =
|
formats[] =
|
||||||
{
|
{
|
||||||
|
@ -16759,7 +16759,7 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0,
|
sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0,
|
||||||
{16}, {0x00007c00}, {0x000003e0}, {0x0000001f}, {0x00008000}
|
{16}, {0x00007c00}, {0x000003e0}, {0x0000001f}, {0x00008000}
|
||||||
},
|
},
|
||||||
"R5G5B5A1", 2, 4, 4,
|
"R5G5B5A1", 2, 4, 4, 0, FALSE, TRUE,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
@ -16888,6 +16888,9 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
if (!is_wine && ((test_caps[j].src_caps | test_caps[j].dst_caps) & DDSCAPS_SYSTEMMEMORY)
|
if (!is_wine && ((test_caps[j].src_caps | test_caps[j].dst_caps) & DDSCAPS_SYSTEMMEMORY)
|
||||||
&& (src_format->broken_software_blit || dst_format->broken_software_blit))
|
&& (src_format->broken_software_blit || dst_format->broken_software_blit))
|
||||||
continue;
|
continue;
|
||||||
|
if (!is_wine && (test_caps[j].dst_caps & DDSCAPS_VIDEOMEMORY)
|
||||||
|
&& dst_format->broken_hardware_blit)
|
||||||
|
continue;
|
||||||
|
|
||||||
U4(surface_desc).ddpfPixelFormat = src_format->fmt;
|
U4(surface_desc).ddpfPixelFormat = src_format->fmt;
|
||||||
surface_desc.ddsCaps.dwCaps = test_caps[j].src_caps;
|
surface_desc.ddsCaps.dwCaps = test_caps[j].src_caps;
|
||||||
|
|
|
@ -16695,7 +16695,7 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
const char *name;
|
const char *name;
|
||||||
unsigned int block_size, x_blocks, y_blocks;
|
unsigned int block_size, x_blocks, y_blocks;
|
||||||
DWORD support_flag;
|
DWORD support_flag;
|
||||||
BOOL broken_software_blit;
|
BOOL broken_software_blit, broken_hardware_blit;
|
||||||
}
|
}
|
||||||
formats[] =
|
formats[] =
|
||||||
{
|
{
|
||||||
|
@ -16735,7 +16735,7 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0,
|
sizeof(DDPIXELFORMAT), DDPF_RGB | DDPF_ALPHAPIXELS, 0,
|
||||||
{16}, {0x00007c00}, {0x000003e0}, {0x0000001f}, {0x00008000}
|
{16}, {0x00007c00}, {0x000003e0}, {0x0000001f}, {0x00008000}
|
||||||
},
|
},
|
||||||
"R5G5B5A1", 2, 4, 4,
|
"R5G5B5A1", 2, 4, 4, 0, FALSE, TRUE,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
@ -16864,6 +16864,9 @@ static void test_surface_format_conversion_alpha(void)
|
||||||
if (!is_wine && ((test_caps[j].src_caps | test_caps[j].dst_caps) & DDSCAPS_SYSTEMMEMORY)
|
if (!is_wine && ((test_caps[j].src_caps | test_caps[j].dst_caps) & DDSCAPS_SYSTEMMEMORY)
|
||||||
&& (src_format->broken_software_blit || dst_format->broken_software_blit))
|
&& (src_format->broken_software_blit || dst_format->broken_software_blit))
|
||||||
continue;
|
continue;
|
||||||
|
if (!is_wine && (test_caps[j].dst_caps & DDSCAPS_VIDEOMEMORY)
|
||||||
|
&& dst_format->broken_hardware_blit)
|
||||||
|
continue;
|
||||||
|
|
||||||
U4(surface_desc).ddpfPixelFormat = src_format->fmt;
|
U4(surface_desc).ddpfPixelFormat = src_format->fmt;
|
||||||
surface_desc.ddsCaps.dwCaps = test_caps[j].src_caps;
|
surface_desc.ddsCaps.dwCaps = test_caps[j].src_caps;
|
||||||
|
|
Loading…
Reference in New Issue