From: Chip Davis cdavis5x@gmail.com
--- dlls/wined3d/device.c | 4 +-- dlls/wined3d/utils.c | 55 ++++++++++++---------------------- dlls/wined3d/wined3d_private.h | 2 +- 3 files changed, 22 insertions(+), 39 deletions(-)
diff --git a/dlls/wined3d/device.c b/dlls/wined3d/device.c index a94c4697316..48ad375b890 100644 --- a/dlls/wined3d/device.c +++ b/dlls/wined3d/device.c @@ -4723,9 +4723,9 @@ static bool resources_format_compatible(const struct wined3d_resource *src_resou if (src_resource->device->cs->c.state->feature_level < WINED3D_FEATURE_LEVEL_10_1) return false; if ((src_resource->format_base_flags & WINED3DFMT_FLAG_BLOCKS) - && (dst_resource->format_flags & WINED3DFMT_FLAG_CAST_TO_BLOCK)) + && (dst_resource->format_base_flags & WINED3DFMT_FLAG_CAST_TO_BLOCK)) return src_resource->format->block_byte_count == dst_resource->format->byte_count; - if ((src_resource->format_flags & WINED3DFMT_FLAG_CAST_TO_BLOCK) + if ((src_resource->format_base_flags & WINED3DFMT_FLAG_CAST_TO_BLOCK) && (dst_resource->format_base_flags & WINED3DFMT_FLAG_BLOCKS)) return src_resource->format->byte_count == dst_resource->format->block_byte_count; return false; diff --git a/dlls/wined3d/utils.c b/dlls/wined3d/utils.c index 1d118df165f..e1ea6834144 100644 --- a/dlls/wined3d/utils.c +++ b/dlls/wined3d/utils.c @@ -328,42 +328,25 @@ static const struct wined3d_format_base_flags format_base_flags[] = {WINED3DFMT_NVDB, WINED3DFMT_FLAG_EXTENSION}, {WINED3DFMT_ATOC, WINED3DFMT_FLAG_EXTENSION}, {WINED3DFMT_RESZ, WINED3DFMT_FLAG_EXTENSION}, - {WINED3DFMT_R32G32B32A32_TYPELESS, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32B32A32_FLOAT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32B32A32_UINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32B32A32_SINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_TYPELESS, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_FLOAT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_UNORM, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_UINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_SNORM, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R16G16B16A16_SINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32_TYPELESS, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32_FLOAT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32_UINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32G32_SINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32_TYPELESS, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32_FLOAT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, - {WINED3DFMT_R32_UINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK | WINED3DFMT_FLAG_INDEX_BUFFER}, - {WINED3DFMT_R32_SINT, 0, - WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32B32A32_TYPELESS, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32B32A32_FLOAT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32B32A32_UINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32B32A32_SINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_TYPELESS, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_FLOAT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_UNORM, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_UINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_SNORM, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R16G16B16A16_SINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32_TYPELESS, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32_FLOAT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32_UINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32G32_SINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32_TYPELESS, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32_FLOAT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, + {WINED3DFMT_R32_UINT, WINED3DFMT_FLAG_CAST_TO_BLOCK, + WINED3DFMT_FLAG_INDEX_BUFFER}, + {WINED3DFMT_R32_SINT, WINED3DFMT_FLAG_CAST_TO_BLOCK}, {WINED3DFMT_R16_UINT, 0, WINED3DFMT_FLAG_INDEX_BUFFER}, {WINED3DFMT_A8_UNORM, WINED3DFMT_FLAG_NORMALISED}, diff --git a/dlls/wined3d/wined3d_private.h b/dlls/wined3d/wined3d_private.h index 71a77484a22..c8a96a4a938 100644 --- a/dlls/wined3d/wined3d_private.h +++ b/dlls/wined3d/wined3d_private.h @@ -6117,6 +6117,7 @@ extern enum wined3d_format_id pixelformat_for_depth(DWORD depth) DECLSPEC_HIDDEN #define WINED3DFMT_FLAG_BROKEN_PITCH 0x00000100 #define WINED3DFMT_FLAG_HEIGHT_SCALE 0x00000200 #define WINED3DFMT_FLAG_MAPPABLE 0x00000400 +#define WINED3DFMT_FLAG_CAST_TO_BLOCK 0x00000800
#define WINED3DFMT_FLAG_POSTPIXELSHADER_BLENDING 0x00000001 #define WINED3DFMT_FLAG_FILTERING 0x00000002 @@ -6134,7 +6135,6 @@ extern enum wined3d_format_id pixelformat_for_depth(DWORD depth) DECLSPEC_HIDDEN #define WINED3DFMT_FLAG_GEN_MIPMAP 0x00400000 #define WINED3DFMT_FLAG_VERTEX_ATTRIBUTE 0x01000000 #define WINED3DFMT_FLAG_BLIT 0x02000000 -#define WINED3DFMT_FLAG_CAST_TO_BLOCK 0x08000000 #define WINED3DFMT_FLAG_INDEX_BUFFER 0x10000000
struct wined3d_rational