From: Connor McAdams cmcadams@codeweavers.com
Signed-off-by: Connor McAdams cmcadams@codeweavers.com --- dlls/d3dx9_36/d3dx_helpers.c | 26 ++++++++++++++++++++++++++ dlls/d3dx9_36/stb_dxt.h | 5 ----- 2 files changed, 26 insertions(+), 5 deletions(-)
diff --git a/dlls/d3dx9_36/d3dx_helpers.c b/dlls/d3dx9_36/d3dx_helpers.c index ae41c370013..e9a97578ac5 100644 --- a/dlls/d3dx9_36/d3dx_helpers.c +++ b/dlls/d3dx9_36/d3dx_helpers.c @@ -2818,6 +2818,16 @@ static void d3dx_compress_block(enum d3dx_pixel_format_id fmt, uint8_t *block_bu stb_compress_dxt_block(dst_buf, block_buf, TRUE, 0); break;
+ case D3DX_PIXEL_FORMAT_BC4_UNORM: + case D3DX_PIXEL_FORMAT_BC4_SNORM: + stb_compress_bc4_block(dst_buf, block_buf); + break; + + case D3DX_PIXEL_FORMAT_BC5_UNORM: + case D3DX_PIXEL_FORMAT_BC5_SNORM: + stb_compress_bc5_block(dst_buf, block_buf); + break; + default: assert(0); break; @@ -2847,6 +2857,22 @@ static HRESULT d3dx_pixels_compress(struct d3dx_pixels *src_pixels, assert(src_desc->format == D3DX_PIXEL_FORMAT_R8G8B8A8_UNORM); break;
+ case D3DX_PIXEL_FORMAT_BC4_UNORM: + assert(src_desc->format == D3DX_PIXEL_FORMAT_R8_UNORM); + break; + + case D3DX_PIXEL_FORMAT_BC4_SNORM: + assert(src_desc->format == D3DX_PIXEL_FORMAT_R8_SNORM); + break; + + case D3DX_PIXEL_FORMAT_BC5_UNORM: + assert(src_desc->format == D3DX_PIXEL_FORMAT_R8G8_UNORM); + break; + + case D3DX_PIXEL_FORMAT_BC5_SNORM: + assert(src_desc->format == D3DX_PIXEL_FORMAT_R8G8_SNORM); + break; + default: FIXME("Unexpected compressed texture format %u.\n", dst_desc->format); return E_NOTIMPL; diff --git a/dlls/d3dx9_36/stb_dxt.h b/dlls/d3dx9_36/stb_dxt.h index 5f60a2a73b0..40687457bb6 100644 --- a/dlls/d3dx9_36/stb_dxt.h +++ b/dlls/d3dx9_36/stb_dxt.h @@ -56,10 +56,8 @@ extern "C" { #define STB_DXT_HIGHQUAL 2 // high quality mode, does two refinement steps instead of 1. ~30-40% slower.
STBDDEF void stb_compress_dxt_block(unsigned char *dest, const unsigned char *src_rgba_four_bytes_per_pixel, int alpha, int mode); -#ifdef WINE_UNUSED /* unused for now in Wine */ STBDDEF void stb_compress_bc4_block(unsigned char *dest, const unsigned char *src_r_one_byte_per_pixel); STBDDEF void stb_compress_bc5_block(unsigned char *dest, const unsigned char *src_rg_two_byte_per_pixel); -#endif /* WINE_UNUSED */
#define STB_COMPRESS_DXT_BLOCK
@@ -626,8 +624,6 @@ void stb_compress_dxt_block(unsigned char *dest, const unsigned char *src, int a stb__CompressColorBlock(dest,(unsigned char*) src,mode); }
-#ifdef WINE_UNUSED /* unused for now in Wine */ - void stb_compress_bc4_block(unsigned char *dest, const unsigned char *src) { stb__CompressAlphaBlock(dest,(unsigned char*) src, 1); @@ -638,7 +634,6 @@ void stb_compress_bc5_block(unsigned char *dest, const unsigned char *src) stb__CompressAlphaBlock(dest,(unsigned char*) src,2); stb__CompressAlphaBlock(dest + 8,(unsigned char*) src+1,2); } -#endif /* WINE_UNUSED */
#endif // STB_DXT_IMPLEMENTATION