From: Zebediah Figura <zfigura(a)codeweavers.com>
---
dlls/d3dx11_42/tests/Makefile.in | 2 +-
dlls/d3dx11_43/tests/Makefile.in | 2 +-
dlls/d3dx11_43/tests/d3dx11.c | 1922 ++++++++++++++++++++----------
3 files changed, 1263 insertions(+), 663 deletions(-)
diff --git a/dlls/d3dx11_42/tests/Makefile.in b/dlls/d3dx11_42/tests/Makefile.in
index 660f6d947cc..454f06f2501 100644
--- a/dlls/d3dx11_42/tests/Makefile.in
+++ b/dlls/d3dx11_42/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = d3dx11_42.dll
-IMPORTS = d3dx11_42
+IMPORTS = d3dx11_42 ole32
PARENTSRC = ../../d3dx11_43/tests
C_SRCS = \
diff --git a/dlls/d3dx11_43/tests/Makefile.in b/dlls/d3dx11_43/tests/Makefile.in
index 6e522df66fb..636519e2986 100644
--- a/dlls/d3dx11_43/tests/Makefile.in
+++ b/dlls/d3dx11_43/tests/Makefile.in
@@ -1,5 +1,5 @@
TESTDLL = d3dx11_43.dll
-IMPORTS = d3dx11
+IMPORTS = d3dx11 ole32
C_SRCS = \
d3dx11.c
diff --git a/dlls/d3dx11_43/tests/d3dx11.c b/dlls/d3dx11_43/tests/d3dx11.c
index 47451e7fff2..63c910b6999 100644
--- a/dlls/d3dx11_43/tests/d3dx11.c
+++ b/dlls/d3dx11_43/tests/d3dx11.c
@@ -22,236 +22,922 @@
#include "d3dx11.h"
#include "wine/test.h"
+#define D3DERR_INVALIDCALL 0x8876086c
+
#ifndef MAKEFOURCC
#define MAKEFOURCC(ch0, ch1, ch2, ch3) \
((DWORD)(BYTE)(ch0) | ((DWORD)(BYTE)(ch1) << 8) | \
((DWORD)(BYTE)(ch2) << 16) | ((DWORD)(BYTE)(ch3) << 24 ))
#endif
-/* 1x1 bmp (1 bpp) */
-static const unsigned char bmp_1bpp[] =
+/* dds_header.flags */
+#define DDS_CAPS 0x00000001
+#define DDS_HEIGHT 0x00000002
+#define DDS_WIDTH 0x00000004
+#define DDS_PITCH 0x00000008
+#define DDS_PIXELFORMAT 0x00001000
+#define DDS_MIPMAPCOUNT 0x00020000
+#define DDS_LINEARSIZE 0x00080000
+
+/* dds_header.caps */
+#define DDSCAPS_ALPHA 0x00000002
+#define DDS_CAPS_TEXTURE 0x00001000
+
+/* dds_pixel_format.flags */
+#define DDS_PF_ALPHA 0x00000001
+#define DDS_PF_ALPHA_ONLY 0x00000002
+#define DDS_PF_FOURCC 0x00000004
+#define DDS_PF_RGB 0x00000040
+#define DDS_PF_LUMINANCE 0x00020000
+#define DDS_PF_BUMPLUMINANCE 0x00040000
+#define DDS_PF_BUMPDUDV 0x00080000
+
+struct dds_pixel_format
{
- 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x01,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0xf1,0xf2,0xf3,0x80,0xf4,0xf5,0xf6,0x81,0x00,0x00,
- 0x00,0x00
+ DWORD size;
+ DWORD flags;
+ DWORD fourcc;
+ DWORD bpp;
+ DWORD rmask;
+ DWORD gmask;
+ DWORD bmask;
+ DWORD amask;
};
-/* 1x1 bmp (2 bpp) */
-static const unsigned char bmp_2bpp[] =
+struct dds_header
{
- 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0xf1,0xf2,0xf3,0x80,0xf4,0xf5,0xf6,0x81,0x00,0x00,
- 0x00,0x00
-};
-
-/* 1x1 bmp (4 bpp) */
-static const unsigned char bmp_4bpp[] =
-{
- 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x04,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0xf1,0xf2,0xf3,0x80,0xf4,0xf5,0xf6,0x81,0x00,0x00,
- 0x00,0x00
-};
-
-/* 1x1 bmp (8 bpp) */
-static const unsigned char bmp_8bpp[] =
-{
- 0x42,0x4d,0x42,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3e,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,0x00,0x08,0x00,0x00,0x00,
- 0x00,0x00,0x04,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x02,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0xf1,0xf2,0xf3,0x80,0xf4,0xf5,0xf6,0x81,0x00,0x00,
- 0x00,0x00
-};
-
-/* 2x2 bmp (32 bpp XRGB) */
-static const unsigned char bmp_32bpp_xrgb[] =
-{
- 0x42,0x4d,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xb0,0xc0,0x00,0xa1,0xb1,0xc1,0x00,0xa2,0xb2,
- 0xc2,0x00,0xa3,0xb3,0xc3,0x00
-};
-
-/* 2x2 bmp (32 bpp ARGB) */
-static const unsigned char bmp_32bpp_argb[] =
-{
- 0x42,0x4d,0x46,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x36,0x00,0x00,0x00,0x28,0x00,
- 0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,
- 0x00,0x00,0x10,0x00,0x00,0x00,0x12,0x0b,0x00,0x00,0x12,0x0b,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0xa0,0xb0,0xc0,0x00,0xa1,0xb1,0xc1,0x00,0xa2,0xb2,
- 0xc2,0x00,0xa3,0xb3,0xc3,0x01
-};
-
-static const unsigned char png_grayscale[] =
-{
- 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49,
- 0x48, 0x44, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00,
- 0x00, 0x00, 0x00, 0x3a, 0x7e, 0x9b, 0x55, 0x00, 0x00, 0x00, 0x0a, 0x49, 0x44,
- 0x41, 0x54, 0x08, 0xd7, 0x63, 0xf8, 0x0f, 0x00, 0x01, 0x01, 0x01, 0x00, 0x1b,
- 0xb6, 0xee, 0x56, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e, 0x44, 0xae, 0x42,
- 0x60, 0x82
-};
-
-/* 2x2 24-bit dds, 2 mipmaps */
-static const unsigned char dds_24bit[] =
-{
- 0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x07,0x10,0x0a,0x00,0x02,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x0c,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x18,0x00,0x00,0x00,0x00,0x00,0xff,0x00,
- 0x00,0xff,0x00,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x40,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff
-};
-
-/* 2x2 16-bit dds, no mipmaps */
-static const unsigned char dds_16bit[] =
-{
- 0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x07,0x10,0x08,0x00,0x02,0x00,0x00,0x00,
- 0x02,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x7c,0x00,0x00,
- 0xe0,0x03,0x00,0x00,0x1f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0x7f,0xff,0x7f,0xff,0x7f,0xff,0x7f
-};
-
-/* 16x4 8-bit dds */
-static const unsigned char dds_8bit[] =
-{
- 0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x0f,0x10,0x00,0x00,0x04,0x00,0x00,0x00,
- 0x10,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,
- 0x47,0x49,0x4d,0x50,0x2d,0x44,0x44,0x53,0x5a,0x09,0x03,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,
- 0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0xec,0x27,0x00,0xff,0x8c,0xcd,0x12,0xff,
- 0x78,0x01,0x14,0xff,0x50,0xcd,0x12,0xff,0x00,0x3d,0x8c,0xff,0x02,0x00,0x00,0xff,
- 0x47,0x00,0x00,0xff,0xda,0x07,0x02,0xff,0x50,0xce,0x12,0xff,0xea,0x11,0x01,0xff,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x08,0x3d,0x8c,0xff,0x08,0x01,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x60,0xcc,0x12,0xff,
- 0xa1,0xb2,0xd4,0xff,0xda,0x07,0x02,0xff,0x47,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x50,0xce,0x12,0xff,0x00,0x00,0x14,0xff,0xa8,0xcc,0x12,0xff,0x3c,0xb2,0xd4,0xff,
- 0xda,0x07,0x02,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x01,0xff,
- 0x21,0x00,0x00,0xff,0xd8,0xcb,0x12,0xff,0x54,0xcd,0x12,0xff,0x8b,0x4f,0xd5,0xff,
- 0x00,0x04,0xda,0xff,0x00,0x00,0x00,0xff,0x3d,0x04,0x91,0xff,0x70,0xce,0x18,0xff,
- 0xb4,0xcc,0x12,0xff,0x6b,0x4e,0xd5,0xff,0xb0,0xcc,0x12,0xff,0x00,0x00,0x00,0xff,
- 0xc8,0x05,0x91,0xff,0x98,0xc7,0xcc,0xff,0x7c,0xcd,0x12,0xff,0x51,0x05,0x91,0xff,
- 0x48,0x07,0x14,0xff,0x6d,0x05,0x91,0xff,0x00,0x07,0xda,0xff,0xa0,0xc7,0xcc,0xff,
- 0x00,0x07,0xda,0xff,0x3a,0x77,0xd5,0xff,0xda,0x07,0x02,0xff,0x7c,0x94,0xd4,0xff,
- 0xe0,0xce,0xd6,0xff,0x0a,0x80,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x78,0x9a,0xab,0xff,0xde,0x08,0x18,0xff,0xda,0x07,0x02,0xff,0x30,0x00,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x50,0xce,0x12,0xff,0x8c,0xcd,0x12,0xff,0xd0,0xb7,0xd8,0xff,
- 0x00,0x00,0x00,0xff,0x60,0x32,0xd9,0xff,0x30,0xc1,0x1a,0xff,0xa8,0xcd,0x12,0xff,
- 0xa4,0xcd,0x12,0xff,0xc0,0x1d,0x4b,0xff,0x46,0x71,0x0e,0xff,0xc0,0x1d,0x4b,0xff,
- 0x09,0x87,0xd4,0xff,0x00,0x00,0x00,0xff,0xf6,0x22,0x00,0xff,0x64,0xcd,0x12,0xff,
- 0x00,0x00,0x00,0xff,0xca,0x1d,0x4b,0xff,0x09,0x87,0xd4,0xff,0xaa,0x02,0x05,0xff,
- 0x82,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0xc0,0x1d,0x4b,0xff,
- 0xcd,0xab,0xba,0xff,0x00,0x00,0x00,0xff,0xa4,0xcd,0x12,0xff,0xc0,0x1d,0x4b,0xff,
- 0xd4,0xcd,0x12,0xff,0xa6,0x4c,0xd5,0xff,0x00,0xf0,0xfd,0xff,0xd4,0xcd,0x12,0xff,
- 0xf4,0x4c,0xd5,0xff,0x90,0xcd,0x12,0xff,0xc2,0x4c,0xd5,0xff,0x82,0x00,0x00,0xff,
- 0xaa,0x02,0x05,0xff,0x88,0xd4,0xba,0xff,0x14,0x00,0x00,0xff,0x01,0x00,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x10,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x0c,0x08,0x13,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0xd0,0xcd,0x12,0xff,0xc6,0x84,0xf1,0xff,0x7c,0x84,0xf1,0xff,0x20,0x20,0xf5,0xff,
- 0x00,0x00,0x0a,0xff,0xf0,0xb0,0x94,0xff,0x64,0x6c,0xf1,0xff,0x85,0x6c,0xf1,0xff,
- 0x8b,0x4f,0xd5,0xff,0x00,0x04,0xda,0xff,0x88,0xd4,0xba,0xff,0x82,0x00,0x00,0xff,
- 0x39,0xde,0xd4,0xff,0x10,0x50,0xd5,0xff,0xaa,0x02,0x05,0xff,0x00,0x00,0x00,0xff,
- 0x4f,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x5c,0xce,0x12,0xff,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x5c,0xce,0x12,0xff,
- 0xaa,0x02,0x05,0xff,0x4c,0xce,0x12,0xff,0x39,0xe6,0xd4,0xff,0x00,0x00,0x00,0xff,
- 0x82,0x00,0x00,0xff,0x00,0x00,0x00,0xff,0x5b,0xe6,0xd4,0xff,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x68,0x50,0xcd,0xff,0x00,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x00,0x00,0x00,0xff,0x10,0x00,0x00,0xff,0xe3,0xea,0x90,0xff,0x5c,0xce,0x12,0xff,
- 0x18,0x00,0x00,0xff,0x88,0xd4,0xba,0xff,0x82,0x00,0x00,0xff,0x00,0x00,0x00,0xff,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
- 0x01,0x01,0x01,0x01,0x00,0x00,0x00,0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01
-};
-
-/* 4x4 cube map dds */
-static const unsigned char dds_cube_map[] =
-{
- 0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x07,0x10,0x08,0x00,0x04,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x44,0x58,0x54,0x35,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x00,0x00,
- 0x00,0xfe,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0x00,0x00,0x00,0x00,0x00,0x00,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50
-};
-
-/* 4x4x2 volume map dds, 2 mipmaps */
-static const unsigned char dds_volume_map[] =
-{
- 0x44,0x44,0x53,0x20,0x7c,0x00,0x00,0x00,0x07,0x10,0x8a,0x00,0x04,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x10,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x00,0x00,0x00,
- 0x04,0x00,0x00,0x00,0x44,0x58,0x54,0x33,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x10,0x40,0x00,
- 0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xef,0x87,0x0f,0x78,0x05,0x05,0x50,0x50,
- 0xff,0x00,0xff,0x00,0x00,0x00,0x00,0x00,0x2f,0x7e,0xcf,0x79,0x01,0x54,0x5c,0x5c,
- 0x0f,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x10,0x84,0xef,0x7b,0xaa,0xab,0xab,0xab
-};
-
-/* invalid image file */
-static const unsigned char noimage[4] =
-{
- 0x11,0x22,0x33,0x44
+ DWORD size;
+ DWORD flags;
+ DWORD height;
+ DWORD width;
+ DWORD pitch_or_linear_size;
+ DWORD depth;
+ DWORD miplevels;
+ DWORD reserved[11];
+ struct dds_pixel_format pixel_format;
+ DWORD caps;
+ DWORD caps2;
+ DWORD caps3;
+ DWORD caps4;
+ DWORD reserved2;
+};
+
+static void fill_dds_header(struct dds_header *header)
+{
+ memset(header, 0, sizeof(*header));
+
+ header->size = sizeof(*header);
+ header->flags = DDS_CAPS | DDS_WIDTH | DDS_HEIGHT | DDS_PIXELFORMAT;
+ header->height = 4;
+ header->width = 4;
+ header->pixel_format.size = sizeof(header->pixel_format);
+ /* X8R8G8B8 */
+ header->pixel_format.flags = DDS_PF_RGB;
+ header->pixel_format.fourcc = 0;
+ header->pixel_format.bpp = 32;
+ header->pixel_format.rmask = 0xff0000;
+ header->pixel_format.gmask = 0x00ff00;
+ header->pixel_format.bmask = 0x0000ff;
+ header->pixel_format.amask = 0;
+ header->caps = DDS_CAPS_TEXTURE;
+}
+
+/* 1x1 1bpp bmp image */
+static const BYTE test_bmp_1bpp[] =
+{
+ 0x42, 0x4d, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x02, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf1, 0xf2, 0xf3, 0x80, 0xf4, 0xf5, 0xf6, 0x81,
0x00, 0x00,
+ 0x00, 0x00
+};
+static const BYTE test_bmp_1bpp_data[] =
+{
+ 0xf3, 0xf2, 0xf1, 0xff
+};
+
+/* 1x1 2bpp bmp image */
+static const BYTE test_bmp_2bpp[] =
+{
+ 0x42, 0x4d, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x02, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf1, 0xf2, 0xf3, 0x80, 0xf4, 0xf5, 0xf6, 0x81,
0x00, 0x00,
+ 0x00, 0x00
+};
+
+/* 1x1 4bpp bmp image */
+static const BYTE test_bmp_4bpp[] =
+{
+ 0x42, 0x4d, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x02, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf1, 0xf2, 0xf3, 0x80, 0xf4, 0xf5, 0xf6, 0x81,
0x00, 0x00,
+ 0x00, 0x00
+};
+static const BYTE test_bmp_4bpp_data[] =
+{
+ 0xf3, 0xf2, 0xf1, 0xff
+};
+
+/* 1x1 8bpp bmp image */
+static const BYTE test_bmp_8bpp[] =
+{
+ 0x42, 0x4d, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x08, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x02, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf1, 0xf2, 0xf3, 0x80, 0xf4, 0xf5, 0xf6, 0x81,
0x00, 0x00,
+ 0x00, 0x00
+};
+static const BYTE test_bmp_8bpp_data[] =
+{
+ 0xf3, 0xf2, 0xf1, 0xff
+};
+
+/* 1x1 16bpp bmp image */
+static const BYTE test_bmp_16bpp[] =
+{
+ 0x42, 0x4d, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x42, 0x00, 0x00, 0x00, 0x00
+};
+static const BYTE test_bmp_16bpp_data[] =
+{
+ 0x84, 0x84, 0x73, 0xff
+};
+
+/* 1x1 24bpp bmp image */
+static const BYTE test_bmp_24bpp[] =
+{
+ 0x42, 0x4d, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x18, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x73, 0x84, 0x84, 0x00, 0x00, 0x00
+};
+static const BYTE test_bmp_24bpp_data[] =
+{
+ 0x84, 0x84, 0x73, 0xff
+};
+
+/* 2x2 32bpp XRGB bmp image */
+static const BYTE test_bmp_32bpp_xrgb[] =
+{
+ 0x42, 0x4d, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb0, 0xc0, 0x00, 0xa1, 0xb1, 0xc1, 0x00,
0xa2, 0xb2,
+ 0xc2, 0x00, 0xa3, 0xb3, 0xc3, 0x00
+};
+static const BYTE test_bmp_32bpp_xrgb_data[] =
+{
+ 0xc2, 0xb2, 0xa2, 0xff, 0xc3, 0xb3, 0xa3, 0xff, 0xc0, 0xb0, 0xa0, 0xff, 0xc1, 0xb1,
0xa1, 0xff
+
+};
+
+/* 2x2 32bpp ARGB bmp image */
+static const BYTE test_bmp_32bpp_argb[] =
+{
+ 0x42, 0x4d, 0x46, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00,
0x28, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00, 0x12, 0x0b, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0xb0, 0xc0, 0x00, 0xa1, 0xb1, 0xc1, 0x00,
0xa2, 0xb2,
+ 0xc2, 0x00, 0xa3, 0xb3, 0xc3, 0x01
+};
+static const BYTE test_bmp_32bpp_argb_data[] =
+{
+ 0xc2, 0xb2, 0xa2, 0xff, 0xc3, 0xb3, 0xa3, 0xff, 0xc0, 0xb0, 0xa0, 0xff, 0xc1, 0xb1,
0xa1, 0xff
+
+};
+
+/* 1x1 8bpp gray png image */
+static const BYTE test_png_8bpp_gray[] =
+{
+ 0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a, 0x00, 0x00, 0x00, 0x0d, 0x49, 0x48,
0x44, 0x52,
+ 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x08, 0x00, 0x00, 0x00, 0x00, 0x3a,
0x7e, 0x9b,
+ 0x55, 0x00, 0x00, 0x00, 0x0a, 0x49, 0x44, 0x41, 0x54, 0x08, 0xd7, 0x63, 0xf8, 0x0f,
0x00, 0x01,
+ 0x01, 0x01, 0x00, 0x1b, 0xb6, 0xee, 0x56, 0x00, 0x00, 0x00, 0x00, 0x49, 0x45, 0x4e,
0x44, 0xae,
+ 0x42, 0x60, 0x82
+};
+static const BYTE test_png_8bpp_gray_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff
+};
+
+/* 1x1 jpg image */
+static const BYTE test_jpg[] =
+{
+ 0xff, 0xd8, 0xff, 0xe0, 0x00, 0x10, 0x4a, 0x46, 0x49, 0x46, 0x00, 0x01, 0x01, 0x01,
0x01, 0x2c,
+ 0x01, 0x2c, 0x00, 0x00, 0xff, 0xdb, 0x00, 0x43, 0x00, 0x05, 0x03, 0x04, 0x04, 0x04,
0x03, 0x05,
+ 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x06, 0x07, 0x0c, 0x08, 0x07, 0x07, 0x07, 0x07,
0x0f, 0x0b,
+ 0x0b, 0x09, 0x0c, 0x11, 0x0f, 0x12, 0x12, 0x11, 0x0f, 0x11, 0x11, 0x13, 0x16, 0x1c,
0x17, 0x13,
+ 0x14, 0x1a, 0x15, 0x11, 0x11, 0x18, 0x21, 0x18, 0x1a, 0x1d, 0x1d, 0x1f, 0x1f, 0x1f,
0x13, 0x17,
+ 0x22, 0x24, 0x22, 0x1e, 0x24, 0x1c, 0x1e, 0x1f, 0x1e, 0xff, 0xdb, 0x00, 0x43, 0x01,
0x05, 0x05,
+ 0x05, 0x07, 0x06, 0x07, 0x0e, 0x08, 0x08, 0x0e, 0x1e, 0x14, 0x11, 0x14, 0x1e, 0x1e,
0x1e, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
0x1e, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
0x1e, 0x1e,
+ 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e, 0x1e,
0xff, 0xc0,
+ 0x00, 0x11, 0x08, 0x00, 0x01, 0x00, 0x01, 0x03, 0x01, 0x22, 0x00, 0x02, 0x11, 0x01,
0x03, 0x11,
+ 0x01, 0xff, 0xc4, 0x00, 0x15, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xff, 0xc4, 0x00, 0x14, 0x10, 0x01,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xc4,
+ 0x00, 0x14, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0xff, 0xc4, 0x00, 0x14, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xda, 0x00, 0x0c,
0x03, 0x01,
+ 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00, 0xb2, 0xc0, 0x07, 0xff, 0xd9
+};
+static const BYTE test_jpg_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff
+};
+
+/* 1x1 gif image */
+static const BYTE test_gif[] =
+{
+ 0x47, 0x49, 0x46, 0x38, 0x37, 0x61, 0x01, 0x00, 0x01, 0x00, 0x80, 0x00, 0x00, 0xff,
0xff, 0xff,
+ 0xff, 0xff, 0xff, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x02,
0x02, 0x44,
+ 0x01, 0x00, 0x3b
+};
+static const BYTE test_gif_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff
+};
+
+/* 1x1 tiff image */
+static const BYTE test_tiff[] =
+{
+ 0x49, 0x49, 0x2a, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00,
0xfe, 0x00,
+ 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x02, 0x01, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0xd2, 0x00, 0x00, 0x00,
0x03, 0x01,
+ 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x01, 0x03, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0d, 0x01, 0x02, 0x00, 0x1b, 0x00, 0x00, 0x00,
0xd8, 0x00,
+ 0x00, 0x00, 0x11, 0x01, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x12, 0x01,
+ 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x01, 0x03, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x16, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
0x40, 0x00,
+ 0x00, 0x00, 0x17, 0x01, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00,
0x1a, 0x01,
+ 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf4, 0x00, 0x00, 0x00, 0x1b, 0x01, 0x05, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x28, 0x01, 0x03, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x08, 0x00, 0x08, 0x00, 0x08, 0x00, 0x2f, 0x68, 0x6f, 0x6d, 0x65, 0x2f,
0x6d, 0x65,
+ 0x68, 0x2f, 0x44, 0x65, 0x73, 0x6b, 0x74, 0x6f, 0x70, 0x2f, 0x74, 0x65, 0x73, 0x74,
0x2e, 0x74,
+ 0x69, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00,
0x00, 0x48,
+ 0x00, 0x00, 0x00, 0x01
+};
+static const BYTE test_tiff_data[] =
+{
+ 0x00, 0x00, 0x00, 0xff
+};
+
+/* 1x1 alpha dds image */
+static const BYTE test_dds_alpha[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff
+};
+static const BYTE test_dds_alpha_data[] =
+{
+ 0xff
+};
+
+/* 1x1 luminance dds image */
+static const BYTE test_dds_luminance[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0xff, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x82
+};
+static const BYTE test_dds_luminance_data[] =
+{
+ 0x82, 0x82, 0x82, 0xff
+};
+
+/* 1x1 16bpp dds image */
+static const BYTE test_dds_16bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x7c,
0x00, 0x00,
+ 0xe0, 0x03, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x0e, 0x42
+};
+static const BYTE test_dds_16bpp_data[] =
+{
+ 0x84, 0x84, 0x73, 0xff
+};
+
+/* 1x1 24bpp dds image */
+static const BYTE test_dds_24bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x00,
+ 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x70, 0x81, 0x83
+};
+static const BYTE test_dds_24bpp_data[] =
+{
+ 0x83, 0x81, 0x70, 0xff
+};
+
+/* 1x1 32bpp dds image */
+static const BYTE test_dds_32bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0x00,
+ 0x00, 0xff, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x70, 0x81, 0x83, 0xff
+};
+static const BYTE test_dds_32bpp_data[] =
+{
+ 0x83, 0x81, 0x70, 0xff
+};
+
+/* 1x1 64bpp dds image */
+static const BYTE test_dds_64bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x02, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x83, 0x83, 0x81, 0x81, 0x70, 0x70, 0xff, 0xff
+};
+static const BYTE test_dds_64bpp_data[] =
+{
+ 0x83, 0x83, 0x81, 0x81, 0x70, 0x70, 0xff, 0xff
+};
+
+/* 1x1 96bpp dds image */
+static const BYTE test_dds_96bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x02, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x31, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x84, 0x83, 0x03, 0x3f, 0x82, 0x81, 0x01, 0x3f, 0xe2, 0xe0,
0xe0, 0x3e
+};
+static const BYTE test_dds_96bpp_data[] =
+{
+ 0x84, 0x83, 0x03, 0x3f, 0x82, 0x81, 0x01, 0x3f, 0xe2, 0xe0, 0xe0, 0x3e
+};
+
+/* 1x1 128bpp dds image */
+static const BYTE test_dds_128bpp[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x0f, 0x10, 0x02, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x84, 0x83, 0x03, 0x3f, 0x82, 0x81, 0x01, 0x3f, 0xe2, 0xe0, 0xe0, 0x3e, 0x00, 0x00,
0x80, 0x3f
+};
+static const BYTE test_dds_128bpp_data[] =
+{
+ 0x84, 0x83, 0x03, 0x3f, 0x82, 0x81, 0x01, 0x3f, 0xe2, 0xe0, 0xe0, 0x3e, 0x00, 0x00,
0x80, 0x3f
+
+};
+
+/* 4x4 DXT1 dds image */
+static const BYTE test_dds_dxt1[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x2a, 0x31, 0xf5, 0xbc, 0xe3, 0x6e, 0x2a, 0x3a
+};
+static const BYTE test_dds_dxt1_data[] =
+{
+ 0x2a, 0x31, 0xf5, 0xbc, 0xe3, 0x6e, 0x2a, 0x3a
+};
+
+/* 4x8 DXT1 dds image */
+static const BYTE test_dds_dxt1_4x8[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x08, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x92, 0xce, 0x09, 0x7a, 0x5d, 0xdd, 0xa7, 0x26, 0x55, 0xde, 0xaf, 0x52, 0xbc, 0xf8,
0x6c, 0x44,
+ 0x53, 0xbd, 0x8b, 0x72, 0x55, 0x33, 0x88, 0xaa, 0xb2, 0x9c, 0x6c, 0x93, 0x55, 0x00,
0x55, 0x00,
+ 0x0f, 0x9c, 0x0f, 0x9c, 0x00, 0x00, 0x00, 0x00,
+};
+static const BYTE test_dds_dxt1_4x8_data[] =
+{
+ 0x92, 0xce, 0x09, 0x7a, 0x5d, 0xdd, 0xa7, 0x26, 0x55, 0xde, 0xaf, 0x52, 0xbc, 0xf8,
0x6c, 0x44,
+};
+
+/* 4x4 DXT2 dds image */
+static const BYTE test_dds_dxt2[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x02, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xde, 0xc4, 0x10, 0x2f, 0xbf,
0xff, 0x7b,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x53, 0x00, 0x00, 0x52, 0x52,
0x55, 0x55,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xce, 0x59, 0x00, 0x00, 0x54, 0x55,
0x55, 0x55
+};
+static const BYTE test_dds_dxt2_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xde, 0xc4, 0x10, 0x2f, 0xbf,
0xff, 0x7b
+
+};
+
+/* 1x3 DXT3 dds image */
+static const BYTE test_dds_dxt3[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x01, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x0c, 0x92, 0x38, 0x84, 0x00, 0xff,
0x55, 0xff,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x53, 0x8b, 0x53, 0x8b, 0x00, 0x00,
0x00, 0x00
+};
+static const BYTE test_dds_dxt3_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x4e, 0x92, 0xd6, 0x83, 0x00, 0xaa,
0x55, 0x55
+
+};
+
+/* 4x4 DXT4 dds image */
+static const BYTE test_dds_dxt4[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x02, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xde, 0xc4, 0x10, 0x2f, 0xbf,
0xff, 0x7b,
+ 0xff, 0x00, 0x40, 0x02, 0x24, 0x49, 0x92, 0x24, 0x57, 0x53, 0x00, 0x00, 0x52, 0x52,
0x55, 0x55,
+ 0xff, 0x00, 0x48, 0x92, 0x24, 0x49, 0x92, 0x24, 0xce, 0x59, 0x00, 0x00, 0x54, 0x55,
0x55, 0x55
+};
+static const BYTE test_dds_dxt4_data[] =
+{
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfd, 0xde, 0xc4, 0x10, 0x2f, 0xbf,
0xff, 0x7b
+
+};
+
+/* 4x2 DXT5 dds image */
+static const BYTE test_dds_dxt5[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x08, 0x00, 0x02, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x50, 0x50
+};
+static const BYTE test_dds_dxt5_data[] =
+{
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x05, 0x05
+
+};
+
+/* 8x8 DXT5 dds image */
+static const BYTE test_dds_dxt5_8x8[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x08, 0x00,
0x00, 0x00,
+ 0x08, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x8a, 0x72, 0x39, 0x5e, 0x5e,
0xfa, 0xa8,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xd7, 0xd5, 0x4a, 0x2d, 0x2d,
0xad, 0xfd,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x9a, 0x73, 0x83, 0xa0, 0xf0,
0x78, 0x78,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x5b, 0x06, 0x19, 0x00, 0xe8,
0x78, 0x58,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0xbe, 0x8c, 0x49, 0x35, 0xb5,
0xff, 0x7f,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x84, 0xab, 0x59, 0x11, 0xff,
0x11, 0xff,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x6a, 0xf0, 0x6a, 0x00, 0x00,
0x00, 0x00,
+};
+static const BYTE test_dds_dxt5_8x8_data[] =
+{
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4b, 0x8a, 0x72, 0x39, 0x5e, 0x5e,
0xfa, 0xa8,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xd7, 0xd5, 0x4a, 0x2d, 0x2d,
0xad, 0xfd,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x9a, 0x73, 0x83, 0xa0, 0xf0,
0x78, 0x78,
+ 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x5b, 0x06, 0x19, 0x00, 0xe8,
0x78, 0x58,
+};
+
+/* 4x4 BC4 dds image */
+static const BYTE test_dds_bc4[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x42, 0x43, 0x34, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xd9, 0x15, 0xbc, 0x41, 0x5b, 0xa3, 0x3d, 0x3a, 0x8f, 0x3d, 0x45, 0x81, 0x20, 0x45,
0x81, 0x20,
+ 0x6f, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
+};
+static const BYTE test_dds_bc4_data[] =
+{
+ 0xd9, 0x15, 0xbc, 0x41, 0x5b, 0xa3, 0x3d, 0x3a
+};
+
+/* 6x3 BC5 dds image */
+static const BYTE test_dds_bc5[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x06, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x42, 0x43, 0x35, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x9f, 0x28, 0x73, 0xac, 0xd5, 0x80, 0xaa, 0xd5, 0x70, 0x2c, 0x4e, 0xd6, 0x76, 0x1d,
0xd6, 0x76,
+ 0xd5, 0x0f, 0xc3, 0x50, 0x96, 0xcf, 0x53, 0x96, 0xdf, 0x16, 0xc3, 0x50, 0x96, 0xcf,
0x53, 0x96,
+ 0x83, 0x55, 0x08, 0x83, 0x30, 0x08, 0x83, 0x30, 0x79, 0x46, 0x31, 0x1c, 0xc3, 0x31,
0x1c, 0xc3,
+ 0x6d, 0x6d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x5c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00
+};
+static const BYTE test_dds_bc5_data[] =
+{
+ 0x95, 0x35, 0xe2, 0xa3, 0xf5, 0xd2, 0x28, 0x68, 0x65, 0x32, 0x7c, 0x4e, 0xdb, 0xe4,
0x56, 0x0a,
+ 0xb9, 0x33, 0xaf, 0xf0, 0x52, 0xbe, 0xed, 0x27, 0xb4, 0x2e, 0xa6, 0x60, 0x4e, 0xb6,
0x5d, 0x3f
+
+};
+
+/* 4x4 DXT1 cube map */
+static const BYTE test_dds_cube[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x0a, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7, 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55,
0xcc, 0x55,
+ 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0,
0xbf, 0xd7,
+ 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55, 0xcc, 0x55, 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00,
0x00, 0x00,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7, 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55,
0xcc, 0x55,
+ 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0,
0xbf, 0xd7,
+ 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55, 0xcc, 0x55, 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00,
0x00, 0x00,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7, 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55,
0xcc, 0x55,
+ 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0,
0xbf, 0xd7,
+ 0x32, 0x96, 0x0b, 0x7b, 0xcc, 0x55, 0xcc, 0x55, 0x0e, 0x84, 0x0e, 0x84, 0x00, 0x00,
0x00, 0x00
+};
+static const BYTE test_dds_cube_data[] =
+{
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7,
+ 0xf5, 0xa7, 0x08, 0x69, 0x74, 0xc0, 0xbf, 0xd7
+};
+
+/* 4x4x2 DXT3 volume dds, 2 mipmaps */
+static const BYTE test_dds_volume[] =
+{
+ 0x44, 0x44, 0x53, 0x20, 0x7c, 0x00, 0x00, 0x00, 0x07, 0x10, 0x8a, 0x00, 0x04, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00,
0x00, 0x00,
+ 0x04, 0x00, 0x00, 0x00, 0x44, 0x58, 0x54, 0x33, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x10,
0x40, 0x00,
+ 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x50, 0x50,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x50, 0x50,
+ 0xff, 0x00, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2f, 0x7e, 0xcf, 0x79, 0x01, 0x54,
0x5c, 0x5c,
+ 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x84, 0xef, 0x7b, 0xaa, 0xab,
0xab, 0xab
+};
+static const BYTE test_dds_volume_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x50, 0x50,
+ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0x87, 0x0f, 0x78, 0x05, 0x05,
0x50, 0x50,
+};
+
+/* 1x1 wmp image */
+static const BYTE test_wmp[] =
+{
+ 0x49, 0x49, 0xbc, 0x01, 0x20, 0x00, 0x00, 0x00, 0x24, 0xc3, 0xdd, 0x6f, 0x03, 0x4e,
0xfe, 0x4b,
+ 0xb1, 0x85, 0x3d, 0x77, 0x76, 0x8d, 0xc9, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x08, 0x00, 0x01, 0xbc, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00,
0x02, 0xbc,
+ 0x04, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbc, 0x04, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0xbc, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x82, 0xbc, 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x06, 0xc0, 0x42,
0x83, 0xbc,
+ 0x0b, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x06, 0xc0, 0x42, 0xc0, 0xbc, 0x04, 0x00,
0x01, 0x00,
+ 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0xc1, 0xbc, 0x04, 0x00, 0x01, 0x00, 0x00, 0x00,
0x92, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x57, 0x4d, 0x50, 0x48, 0x4f, 0x54, 0x4f, 0x00,
0x11, 0x45,
+ 0xc0, 0x71, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0xc0, 0x00, 0x00, 0x0c, 0x00, 0x00,
0x00, 0xc0,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x25, 0xff, 0xff, 0x00,
0x00, 0x01,
+ 0x01, 0xc8, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x10, 0x10, 0xa6, 0x18,
0x8c, 0x21,
+ 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x4e, 0x0f, 0x3a, 0x4c, 0x94, 0x9d, 0xba, 0x79,
0xe7, 0x38,
+ 0x4c, 0xcf, 0x14, 0xc3, 0x43, 0x91, 0x88, 0xfb, 0xdc, 0xe0, 0x7c, 0x34, 0x70, 0x9b,
0x28, 0xa9,
+ 0x18, 0x74, 0x62, 0x87, 0x8e, 0xe4, 0x68, 0x5f, 0xb9, 0xcc, 0x0e, 0xe1, 0x8c, 0x76,
0x3a, 0x9b,
+ 0x82, 0x76, 0x71, 0x13, 0xde, 0x50, 0xd4, 0x2d, 0xc2, 0xda, 0x1e, 0x3b, 0xa6, 0xa1,
0x62, 0x7b,
+ 0xca, 0x1a, 0x85, 0x4b, 0x6e, 0x74, 0xec, 0x60
+};
+static const BYTE test_wmp_data[] =
+{
+ 0xff, 0xff, 0xff, 0xff
+};
+
+static const struct test_image
+{
+ const BYTE *data;
+ unsigned int size;
+ const BYTE *expected_data;
+ D3DX11_IMAGE_INFO expected_info;
+}
+test_image[] =
+{
+ {
+ test_bmp_1bpp, sizeof(test_bmp_1bpp), test_bmp_1bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_4bpp, sizeof(test_bmp_4bpp), test_bmp_4bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_8bpp, sizeof(test_bmp_8bpp), test_bmp_8bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_16bpp, sizeof(test_bmp_16bpp), test_bmp_16bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_24bpp, sizeof(test_bmp_24bpp), test_bmp_24bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_32bpp_xrgb, sizeof(test_bmp_32bpp_xrgb), test_bmp_32bpp_xrgb_data,
+ {2, 2, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_bmp_32bpp_argb, sizeof(test_bmp_32bpp_argb), test_bmp_32bpp_argb_data,
+ {2, 2, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_BMP}
+ },
+ {
+ test_png_8bpp_gray, sizeof(test_png_8bpp_gray), test_png_8bpp_gray_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_PNG}
+ },
+ {
+ test_jpg, sizeof(test_jpg), test_jpg_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_JPG}
+ },
+ {
+ test_gif, sizeof(test_gif), test_gif_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_GIF}
+ },
+ {
+ test_tiff, sizeof(test_tiff), test_tiff_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_TIFF}
+ },
+ {
+ test_dds_alpha, sizeof(test_dds_alpha), test_dds_alpha_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_luminance, sizeof(test_dds_luminance), test_dds_luminance_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_16bpp, sizeof(test_dds_16bpp), test_dds_16bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_24bpp, sizeof(test_dds_24bpp), test_dds_24bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_32bpp, sizeof(test_dds_32bpp), test_dds_32bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_64bpp, sizeof(test_dds_64bpp), test_dds_64bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R16G16B16A16_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_96bpp, sizeof(test_dds_96bpp), test_dds_96bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R32G32B32_FLOAT,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_128bpp, sizeof(test_dds_128bpp), test_dds_128bpp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R32G32B32A32_FLOAT,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt1, sizeof(test_dds_dxt1), test_dds_dxt1_data,
+ {4, 4, 1, 1, 1, 0, DXGI_FORMAT_BC1_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt1_4x8, sizeof(test_dds_dxt1_4x8), test_dds_dxt1_4x8_data,
+ {4, 8, 1, 1, 4, 0, DXGI_FORMAT_BC1_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt2, sizeof(test_dds_dxt2), test_dds_dxt2_data,
+ {4, 4, 1, 1, 3, 0, DXGI_FORMAT_BC2_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt3, sizeof(test_dds_dxt3), test_dds_dxt3_data,
+ {1, 3, 1, 1, 2, 0, DXGI_FORMAT_BC2_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt4, sizeof(test_dds_dxt4), test_dds_dxt4_data,
+ {4, 4, 1, 1, 3, 0, DXGI_FORMAT_BC3_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt5, sizeof(test_dds_dxt5), test_dds_dxt5_data,
+ {4, 2, 1, 1, 1, 0, DXGI_FORMAT_BC3_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_dxt5_8x8, sizeof(test_dds_dxt5_8x8), test_dds_dxt5_8x8_data,
+ {8, 8, 1, 1, 4, 0, DXGI_FORMAT_BC3_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_bc4, sizeof(test_dds_bc4), test_dds_bc4_data,
+ {4, 4, 1, 1, 3, 0, DXGI_FORMAT_BC4_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_bc5, sizeof(test_dds_bc5), test_dds_bc5_data,
+ {6, 3, 1, 1, 3, 0, DXGI_FORMAT_BC5_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_cube, sizeof(test_dds_cube), test_dds_cube_data,
+ {4, 4, 1, 6, 3, 0x4, DXGI_FORMAT_BC1_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_DDS}
+ },
+ {
+ test_dds_volume, sizeof(test_dds_volume), test_dds_volume_data,
+ {4, 4, 2, 1, 3, 0, DXGI_FORMAT_BC2_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE3D, D3DX11_IFF_DDS}
+ },
+ {
+ test_wmp, sizeof(test_wmp), test_wmp_data,
+ {1, 1, 1, 1, 1, 0, DXGI_FORMAT_R8G8B8A8_UNORM,
D3D11_RESOURCE_DIMENSION_TEXTURE2D, D3DX11_IFF_WMP}
+ },
};
static WCHAR temp_dir[MAX_PATH];
-static BOOL create_file(const WCHAR *filename, const char *data, unsigned int size, WCHAR
*out_path)
+static HRESULT WINAPI D3DX11ThreadPump_QueryInterface(ID3DX11ThreadPump *iface, REFIID
riid, void **out)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static ULONG WINAPI D3DX11ThreadPump_AddRef(ID3DX11ThreadPump *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI D3DX11ThreadPump_Release(ID3DX11ThreadPump *iface)
+{
+ return 1;
+}
+
+static int add_work_item_count = 1;
+
+static HRESULT WINAPI D3DX11ThreadPump_AddWorkItem(ID3DX11ThreadPump *iface,
ID3DX11DataLoader *loader,
+ ID3DX11DataProcessor *processor, HRESULT *result, void **object)
+{
+ SIZE_T size;
+ void *data;
+ HRESULT hr;
+
+ ok(!add_work_item_count++, "unexpected call\n");
+
+ hr = ID3DX11DataLoader_Load(loader);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID3DX11DataLoader_Decompress(loader, &data, &size);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID3DX11DataProcessor_Process(processor, data, size);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID3DX11DataProcessor_CreateDeviceObject(processor, object);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID3DX11DataProcessor_Destroy(processor);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr = ID3DX11DataLoader_Destroy(loader);
+ ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+
+ if (result) *result = S_OK;
+ return S_OK;
+}
+
+static UINT WINAPI D3DX11ThreadPump_GetWorkItemCount(ID3DX11ThreadPump *iface)
+{
+ ok(0, "unexpected call\n");
+ return 0;
+}
+
+static HRESULT WINAPI D3DX11ThreadPump_WaitForAllItems(ID3DX11ThreadPump *iface)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI D3DX11ThreadPump_ProcessDeviceWorkItems(ID3DX11ThreadPump *iface,
UINT count)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI D3DX11ThreadPump_PurgeAllItems(ID3DX11ThreadPump *iface)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI D3DX11ThreadPump_GetQueueStatus(ID3DX11ThreadPump *iface, UINT
*queue,
+ UINT *processqueue, UINT *devicequeue)
+{
+ ok(0, "unexpected call\n");
+ return E_NOTIMPL;
+}
+
+static ID3DX11ThreadPumpVtbl D3DX11ThreadPumpVtbl =
+{
+ D3DX11ThreadPump_QueryInterface,
+ D3DX11ThreadPump_AddRef,
+ D3DX11ThreadPump_Release,
+ D3DX11ThreadPump_AddWorkItem,
+ D3DX11ThreadPump_GetWorkItemCount,
+ D3DX11ThreadPump_WaitForAllItems,
+ D3DX11ThreadPump_ProcessDeviceWorkItems,
+ D3DX11ThreadPump_PurgeAllItems,
+ D3DX11ThreadPump_GetQueueStatus
+};
+static ID3DX11ThreadPump thread_pump = { &D3DX11ThreadPumpVtbl };
+
+static char *get_str_a(const WCHAR *wstr)
+{
+ static char buffer[MAX_PATH];
+
+ WideCharToMultiByte(CP_ACP, 0, wstr, -1, buffer, sizeof(buffer), NULL, NULL);
+ return buffer;
+}
+
+static BOOL create_file(const WCHAR *filename, const void *data, unsigned int size, WCHAR
*out_path)
{
WCHAR path[MAX_PATH];
DWORD written;
@@ -279,13 +965,13 @@ static BOOL create_file(const WCHAR *filename, const char *data,
unsigned int si
return FALSE;
}
-static void delete_file(const WCHAR *filename)
+static BOOL delete_file(const WCHAR *filename)
{
WCHAR path[MAX_PATH];
lstrcpyW(path, temp_dir);
lstrcatW(path, filename);
- DeleteFileW(path);
+ return DeleteFileW(path);
}
static BOOL create_directory(const WCHAR *dir)
@@ -306,6 +992,74 @@ static void delete_directory(const WCHAR *dir)
RemoveDirectoryW(path);
}
+static HMODULE create_resource_module(const WCHAR *filename, const void *data, unsigned
int size)
+{
+ WCHAR resource_module_path[MAX_PATH], current_module_path[MAX_PATH];
+ HANDLE resource;
+ HMODULE module;
+ BOOL ret;
+
+ if (!temp_dir[0])
+ GetTempPathW(ARRAY_SIZE(temp_dir), temp_dir);
+ lstrcpyW(resource_module_path, temp_dir);
+ lstrcatW(resource_module_path, filename);
+
+ GetModuleFileNameW(NULL, current_module_path, ARRAY_SIZE(current_module_path));
+ ret = CopyFileW(current_module_path, resource_module_path, FALSE);
+ ok(ret, "CopyFileW failed, error %lu.\n", GetLastError());
+ SetFileAttributesW(resource_module_path, FILE_ATTRIBUTE_NORMAL);
+
+ resource = BeginUpdateResourceW(resource_module_path, TRUE);
+ UpdateResourceW(resource, (LPCWSTR)RT_RCDATA, filename, MAKELANGID(LANG_NEUTRAL,
SUBLANG_NEUTRAL), (void *)data, size);
+ EndUpdateResourceW(resource, FALSE);
+
+ module = LoadLibraryExW(resource_module_path, NULL, LOAD_LIBRARY_AS_DATAFILE);
+
+ return module;
+}
+
+static void delete_resource_module(const WCHAR *filename, HMODULE module)
+{
+ WCHAR path[MAX_PATH];
+
+ FreeLibrary(module);
+
+ lstrcpyW(path, temp_dir);
+ lstrcatW(path, filename);
+ DeleteFileW(path);
+}
+
+static void check_image_info(D3DX11_IMAGE_INFO *image_info, const struct test_image
*image, unsigned int line)
+{
+ ok_(__FILE__, line)(image_info->Width == image->expected_info.Width,
+ "Got unexpected Width %u, expected %u.\n",
+ image_info->Width, image->expected_info.Width);
+ ok_(__FILE__, line)(image_info->Height == image->expected_info.Height,
+ "Got unexpected Height %u, expected %u.\n",
+ image_info->Height, image->expected_info.Height);
+ ok_(__FILE__, line)(image_info->Depth == image->expected_info.Depth,
+ "Got unexpected Depth %u, expected %u.\n",
+ image_info->Depth, image->expected_info.Depth);
+ ok_(__FILE__, line)(image_info->ArraySize == image->expected_info.ArraySize,
+ "Got unexpected ArraySize %u, expected %u.\n",
+ image_info->ArraySize, image->expected_info.ArraySize);
+ ok_(__FILE__, line)(image_info->MipLevels == image->expected_info.MipLevels,
+ "Got unexpected MipLevels %u, expected %u.\n",
+ image_info->MipLevels, image->expected_info.MipLevels);
+ ok_(__FILE__, line)(image_info->MiscFlags == image->expected_info.MiscFlags,
+ "Got unexpected MiscFlags %#x, expected %#x.\n",
+ image_info->MiscFlags, image->expected_info.MiscFlags);
+ ok_(__FILE__, line)(image_info->Format == image->expected_info.Format,
+ "Got unexpected Format %#x, expected %#x.\n",
+ image_info->Format, image->expected_info.Format);
+ ok_(__FILE__, line)(image_info->ResourceDimension ==
image->expected_info.ResourceDimension,
+ "Got unexpected ResourceDimension %u, expected %u.\n",
+ image_info->ResourceDimension,
image->expected_info.ResourceDimension);
+ ok_(__FILE__, line)(image_info->ImageFileFormat ==
image->expected_info.ImageFileFormat,
+ "Got unexpected ImageFileFormat %u, expected %u.\n",
+ image_info->ImageFileFormat, image->expected_info.ImageFileFormat);
+}
+
static void test_D3DX11CreateAsyncMemoryLoader(void)
{
ID3DX11DataLoader *loader;
@@ -353,27 +1107,9 @@ static void test_D3DX11CreateAsyncMemoryLoader(void)
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
}
-static void create_testfile(WCHAR *path, const void *data, int data_len)
-{
- DWORD written;
- HANDLE file;
- BOOL ret;
-
- GetTempPathW(MAX_PATH, path);
- lstrcatW(path, L"asyncloader.data");
-
- file = CreateFileW(path, GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0,
0);
- ok(file != INVALID_HANDLE_VALUE, "Test file creation failed, at %s, error
%ld.\n",
- wine_dbgstr_w(path), GetLastError());
-
- ret = WriteFile(file, data, data_len, &written, NULL);
- ok(ret, "Write to test file failed.\n");
-
- CloseHandle(file);
-}
-
static void test_D3DX11CreateAsyncFileLoader(void)
{
+ static const WCHAR test_filename[] = L"asyncloader.data";
static const char test_data1[] = "test data";
static const char test_data2[] = "more test data";
ID3DX11DataLoader *loader;
@@ -405,86 +1141,317 @@ static void test_D3DX11CreateAsyncFileLoader(void)
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
/* Test file sharing using dummy empty file. */
- create_testfile(path, test_data1, sizeof(test_data1));
+ create_file(test_filename, test_data1, sizeof(test_data1), path);
hr = D3DX11CreateAsyncFileLoaderW(path, &loader);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
- ret = DeleteFileW(path);
- ok(ret, "Got unexpected ret %#x, error %ld.\n", ret, GetLastError());
+ ret = delete_file(test_filename);
+ ok(ret, "DeleteFile() failed, ret %d, error %ld.\n", ret, GetLastError());
/* File was removed before Load(). */
hr = ID3DX11DataLoader_Load(loader);
- ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Load() returned unexpected result, hr
%#lx.\n", hr);
+
+ /* Create it again. */
+ create_file(test_filename, test_data1, sizeof(test_data1), NULL);
+ hr = ID3DX11DataLoader_Load(loader);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ /* Already loaded. */
+ hr = ID3DX11DataLoader_Load(loader);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ret = delete_file(test_filename);
+ ok(ret, "DeleteFile() failed, ret %d, error %ld.\n", ret, GetLastError());
+
+ /* Already loaded, file removed. */
+ hr = ID3DX11DataLoader_Load(loader);
+ ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Load() returned unexpected result, hr
%#lx.\n", hr);
+
+ /* Decompress still works. */
+ ptr = NULL;
+ hr = ID3DX11DataLoader_Decompress(loader, &ptr, &size);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(ptr != NULL, "Got unexpected ptr %p.\n", ptr);
+ ok(size == sizeof(test_data1), "Got unexpected decompressed size.\n");
+ if (size == sizeof(test_data1))
+ ok(!memcmp(ptr, test_data1, size), "Got unexpected file data.\n");
+
+ /* Create it again, with different data. */
+ create_file(test_filename, test_data2, sizeof(test_data2), NULL);
+
+ hr = ID3DX11DataLoader_Load(loader);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ptr = NULL;
+ hr = ID3DX11DataLoader_Decompress(loader, &ptr, &size);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+ ok(ptr != NULL, "Got unexpected ptr %p.\n", ptr);
+ ok(size == sizeof(test_data2), "Got unexpected decompressed size.\n");
+ if (size == sizeof(test_data2))
+ ok(!memcmp(ptr, test_data2, size), "Got unexpected file data.\n");
+
+ hr = ID3DX11DataLoader_Destroy(loader);
+ ok(hr == S_OK, "Got hr %#lx.\n", hr);
+
+ ret = delete_file(test_filename);
+ ok(ret, "DeleteFile() failed, ret %d, error %ld.\n", ret, GetLastError());
+}
+
+static void test_D3DX11CreateAsyncResourceLoader(void)
+{
+ ID3DX11DataLoader *loader;
+ HRESULT hr;
+
+ hr = D3DX11CreateAsyncResourceLoaderA(NULL, NULL, NULL);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+
+ hr = D3DX11CreateAsyncResourceLoaderA(NULL, NULL, &loader);
+ ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+
+ hr = D3DX11CreateAsyncResourceLoaderA(NULL, "noname", &loader);
+ ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+
+ hr = D3DX11CreateAsyncResourceLoaderW(NULL, NULL, NULL);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+
+ hr = D3DX11CreateAsyncResourceLoaderW(NULL, NULL, &loader);
+ ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+
+ hr = D3DX11CreateAsyncResourceLoaderW(NULL, L"noname", &loader);
+ ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+}
+
+#define check_dds_pixel_format(flags, fourcc, bpp, rmask, gmask, bmask, amask, format) \
+ check_dds_pixel_format_(__LINE__, flags, fourcc, bpp, rmask, gmask, bmask, amask,
format)
+static void check_dds_pixel_format_(unsigned int line, DWORD flags, DWORD fourcc, DWORD
bpp,
+ DWORD rmask, DWORD gmask, DWORD bmask, DWORD amask, DXGI_FORMAT expected_format)
+{
+ D3DX11_IMAGE_INFO info;
+ HRESULT hr;
+ struct
+ {
+ DWORD magic;
+ struct dds_header header;
+ BYTE data[256];
+ } dds;
+
+ dds.magic = MAKEFOURCC('D','D','S',' ');
+ fill_dds_header(&dds.header);
+ dds.header.pixel_format.flags = flags;
+ dds.header.pixel_format.fourcc = fourcc;
+ dds.header.pixel_format.bpp = bpp;
+ dds.header.pixel_format.rmask = rmask;
+ dds.header.pixel_format.gmask = gmask;
+ dds.header.pixel_format.bmask = bmask;
+ dds.header.pixel_format.amask = amask;
+ memset(dds.data, 0, sizeof(dds.data));
+
+ hr = D3DX11GetImageInfoFromMemory(&dds, sizeof(dds), NULL, &info, NULL);
+ ok_(__FILE__, line)(hr == S_OK, "Got unexpected hr %#lx for pixel format
%#x.\n", hr, expected_format);
+ if (SUCCEEDED(hr))
+ {
+ ok_(__FILE__, line)(info.Format == expected_format, "Unexpected format %#x,
expected %#x\n",
+ info.Format, expected_format);
+ }
+}
+
+static void test_get_image_info(void)
+{
+ static const WCHAR test_resource_name[] = L"resource.data";
+ static const WCHAR test_filename[] = L"image.data";
+ char buffer[sizeof(test_bmp_1bpp) * 2];
+ D3DX11_IMAGE_INFO image_info;
+ HMODULE resource_module;
+ WCHAR path[MAX_PATH];
+ unsigned int i;
+ DWORD dword;
+ HRESULT hr, hr2;
- /* Create it again. */
- create_testfile(path, test_data1, sizeof(test_data1));
- hr = ID3DX11DataLoader_Load(loader);
+ CoInitialize(NULL);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(test_image[0].data, 0, NULL, &image_info,
&hr2);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(NULL, test_image[0].size, NULL, &image_info,
&hr2);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ dword = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(&dword, sizeof(dword), NULL, &image_info,
&hr2);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+
+ /* NULL hr2 is valid. */
+ hr = D3DX11GetImageInfoFromMemory(test_image[0].data, test_image[0].size, NULL,
&image_info, NULL);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- /* Already loaded. */
- hr = ID3DX11DataLoader_Load(loader);
+ /* Test a too-large size. */
+ memset(buffer, 0xcc, sizeof(buffer));
+ memcpy(buffer, test_bmp_1bpp, sizeof(test_bmp_1bpp));
+ hr = D3DX11GetImageInfoFromMemory(buffer, sizeof(buffer), NULL, &image_info,
NULL);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ check_image_info(&image_info, &test_image[0], __LINE__);
- ret = DeleteFileW(path);
- ok(ret, "Got unexpected ret %#x, error %ld.\n", ret, GetLastError());
+ /* Test a too-small size. */
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(test_bmp_1bpp, sizeof(test_bmp_1bpp) - 1, NULL,
&image_info, &hr2);
+ todo_wine ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
- /* Already loaded, file removed. */
- hr = ID3DX11DataLoader_Load(loader);
- ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Got unexpected hr %#lx.\n", hr);
+ /* 2 bpp is not a valid bit count. */
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(test_bmp_2bpp, sizeof(test_bmp_2bpp), NULL,
&image_info, &hr2);
+ todo_wine ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
- /* Decompress still works. */
- ptr = NULL;
- hr = ID3DX11DataLoader_Decompress(loader, &ptr, &size);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(ptr != NULL, "Got unexpected ptr %p.\n", ptr);
- ok(size == sizeof(test_data1), "Got unexpected decompressed size.\n");
- if (size == sizeof(test_data1))
- ok(!memcmp(ptr, test_data1, size), "Got unexpected file data.\n");
+ for (i = 0; i < ARRAY_SIZE(test_image); ++i)
+ {
+ winetest_push_context("Test %u", i);
- /* Create it again, with different data. */
- create_testfile(path, test_data2, sizeof(test_data2));
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromMemory(test_image[i].data, test_image[i].size, NULL,
&image_info, &hr2);
+ ok(hr == S_OK || broken(hr == E_FAIL &&
test_image[i].expected_info.ImageFileFormat == D3DX11_IFF_WMP),
+ "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ if (hr == S_OK)
+ check_image_info(&image_info, test_image + i, __LINE__);
- hr = ID3DX11DataLoader_Load(loader);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ winetest_pop_context();
+ }
- ptr = NULL;
- hr = ID3DX11DataLoader_Decompress(loader, &ptr, &size);
+ hr2 = 0xdeadbeef;
+ add_work_item_count = 0;
+ hr = D3DX11GetImageInfoFromMemory(test_image[0].data, test_image[0].size,
&thread_pump, &image_info, &hr2);
+ ok(add_work_item_count == 1, "Got unexpected add_work_item_count %u.\n",
add_work_item_count);
ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(ptr != NULL, "Got unexpected ptr %p.\n", ptr);
- ok(size == sizeof(test_data2), "Got unexpected decompressed size.\n");
- if (size == sizeof(test_data2))
- ok(!memcmp(ptr, test_data2, size), "Got unexpected file data.\n");
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ check_image_info(&image_info, test_image, __LINE__);
- hr = ID3DX11DataLoader_Destroy(loader);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileW(NULL, NULL, &image_info, &hr2);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileW(L"deadbeaf", NULL, &image_info,
&hr2);
+ todo_wine ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Got unexpected hr %#lx.\n",
hr);
+ todo_wine ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileA(NULL, NULL, &image_info, &hr2);
+ ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileA("deadbeaf", NULL, &image_info,
&hr2);
+ todo_wine ok(hr == D3D11_ERROR_FILE_NOT_FOUND, "Got unexpected hr %#lx.\n",
hr);
+ todo_wine ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
- ret = DeleteFileW(path);
- ok(ret, "Got unexpected ret %#x, error %ld.\n", ret, GetLastError());
-}
+ for (i = 0; i < ARRAY_SIZE(test_image); ++i)
+ {
+ winetest_push_context("Test %u", i);
+ create_file(test_filename, test_image[i].data, test_image[i].size, path);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileW(path, NULL, &image_info, &hr2);
+ todo_wine ok(hr == S_OK || broken(hr == E_FAIL &&
test_image[i].expected_info.ImageFileFormat == D3DX11_IFF_WMP),
+ "Got unexpected hr %#lx.\n", hr);
+ todo_wine ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ if (hr == S_OK)
+ check_image_info(&image_info, test_image + i, __LINE__);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromFileA(get_str_a(path), NULL, &image_info,
&hr2);
+ todo_wine ok(hr == S_OK || broken(hr == E_FAIL &&
test_image[i].expected_info.ImageFileFormat == D3DX11_IFF_WMP),
+ "Got unexpected hr %#lx.\n", hr);
+ todo_wine ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ if (hr == S_OK)
+ check_image_info(&image_info, test_image + i, __LINE__);
+
+ delete_file(test_filename);
+ winetest_pop_context();
+ }
-static void test_D3DX11CreateAsyncResourceLoader(void)
-{
- ID3DX11DataLoader *loader;
- HRESULT hr;
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','1'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC1_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','2'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC2_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','3'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC2_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','4'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC3_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','5'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC3_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('R','G','B','G'), 0, 0, 0, 0, 0,
DXGI_FORMAT_R8G8_B8G8_UNORM);
+ check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('G','R','G','B'), 0, 0, 0, 0, 0,
DXGI_FORMAT_G8R8_G8B8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 16, 0xf800, 0x07e0, 0x001f, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x7c00, 0x03e0, 0x001f,
0x8000, DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x0f00, 0x00f0, 0x000f,
0xf000, DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 8, 0xe0, 0x1c, 0x03, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_ALPHA_ONLY, 0, 8, 0, 0, 0, 0xff,
DXGI_FORMAT_A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x00e0, 0x001c, 0x0003,
0xff00, DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 16, 0xf00, 0x0f0, 0x00f, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x3ff00000, 0x000ffc00,
0x000003ff, 0xc0000000, DXGI_FORMAT_R10G10B10A2_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x000003ff, 0x000ffc00,
0x3ff00000, 0xc0000000, DXGI_FORMAT_R10G10B10A2_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x00ff0000, 0x0000ff00,
0x000000ff, 0xff000000, DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x000000ff, 0x0000ff00,
0x00ff0000, 0xff000000, DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0xff0000, 0x00ff00, 0x0000ff, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0x0000ff, 0x00ff00, 0xff0000, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 24, 0xff0000, 0x00ff00, 0x0000ff, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0x0000ffff, 0xffff0000, 0, 0,
DXGI_FORMAT_R16G16_UNORM);
+ check_dds_pixel_format(DDS_PF_LUMINANCE, 0, 8, 0xff, 0, 0, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_LUMINANCE, 0, 16, 0xffff, 0, 0, 0,
DXGI_FORMAT_R16G16B16A16_UNORM);
+ check_dds_pixel_format(DDS_PF_LUMINANCE | DDS_PF_ALPHA, 0, 16, 0x00ff, 0, 0, 0xff00,
DXGI_FORMAT_R8G8B8A8_UNORM);
+ check_dds_pixel_format(DDS_PF_LUMINANCE | DDS_PF_ALPHA, 0, 8, 0x0f, 0, 0, 0xf0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- hr = D3DX11CreateAsyncResourceLoaderA(NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
+ /* D3DX11GetImageInfoFromResource tests */
- hr = D3DX11CreateAsyncResourceLoaderA(NULL, NULL, &loader);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceW(NULL, NULL, NULL, &image_info, &hr2);
ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
-
- hr = D3DX11CreateAsyncResourceLoaderA(NULL, "noname", &loader);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceW(NULL, L"deadbeaf", NULL,
&image_info, &hr2);
ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
-
- hr = D3DX11CreateAsyncResourceLoaderW(NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.\n", hr);
-
- hr = D3DX11CreateAsyncResourceLoaderW(NULL, NULL, &loader);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceA(NULL, NULL, NULL, &image_info, &hr2);
ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
-
- hr = D3DX11CreateAsyncResourceLoaderW(NULL, L"noname", &loader);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceA(NULL, "deadbeaf", NULL,
&image_info, &hr2);
ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+
+ for (i = 0; i < ARRAY_SIZE(test_image); ++i)
+ {
+ winetest_push_context("Test %u", i);
+ resource_module = create_resource_module(test_resource_name, test_image[i].data,
test_image[i].size);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceW(resource_module, L"deadbeef",
NULL, &image_info, &hr2);
+ ok(hr == D3DX11_ERR_INVALID_DATA, "Got unexpected hr %#lx.\n", hr);
+ ok(hr2 == 0xdeadbeef, "Got unexpected hr2 %#lx.\n", hr2);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceW(resource_module, test_resource_name, NULL,
&image_info, &hr2);
+ ok(hr == S_OK || broken(hr == E_FAIL &&
test_image[i].expected_info.ImageFileFormat == D3DX11_IFF_WMP)
+ || broken(hr == D3DX11_ERR_INVALID_DATA) /* Vista */,
+ "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ if (hr == S_OK)
+ check_image_info(&image_info, test_image + i, __LINE__);
+
+ hr2 = 0xdeadbeef;
+ hr = D3DX11GetImageInfoFromResourceA(resource_module,
get_str_a(test_resource_name), NULL, &image_info, &hr2);
+ ok(hr == S_OK || broken(hr == E_FAIL &&
test_image[i].expected_info.ImageFileFormat == D3DX11_IFF_WMP)
+ || broken(hr == D3DX11_ERR_INVALID_DATA) /* Vista */,
+ "Got unexpected hr %#lx.\n", hr);
+ ok(hr == hr2, "Got unexpected hr2 %#lx.\n", hr2);
+ if (hr == S_OK)
+ check_image_info(&image_info, test_image + i, __LINE__);
+
+ delete_resource_module(test_resource_name, resource_module);
+ winetest_pop_context();
+ }
+
+ CoUninitialize();
}
static HRESULT WINAPI test_d3dinclude_open(ID3DInclude *iface, D3D_INCLUDE_TYPE
include_type,
@@ -544,7 +1511,7 @@ struct test_d3dinclude
ID3DInclude ID3DInclude_iface;
};
-static void test_D3DX11CompileFromFile(void)
+static void test_compile_from_file(void)
{
struct test_d3dinclude include = {{&test_d3dinclude_vtbl}};
WCHAR filename[MAX_PATH], directory[MAX_PATH];
@@ -651,378 +1618,11 @@ static void test_D3DX11CompileFromFile(void)
delete_directory(L"include");
}
-/* dds_header.flags */
-#define DDS_CAPS 0x00000001
-#define DDS_HEIGHT 0x00000002
-#define DDS_WIDTH 0x00000004
-#define DDS_PITCH 0x00000008
-#define DDS_PIXELFORMAT 0x00001000
-#define DDS_MIPMAPCOUNT 0x00020000
-#define DDS_LINEARSIZE 0x00080000
-
-/* dds_header.caps */
-#define DDSCAPS_ALPHA 0x00000002
-#define DDS_CAPS_TEXTURE 0x00001000
-
-/* dds_pixel_format.flags */
-#define DDS_PF_ALPHA 0x00000001
-#define DDS_PF_ALPHA_ONLY 0x00000002
-#define DDS_PF_FOURCC 0x00000004
-#define DDS_PF_RGB 0x00000040
-#define DDS_PF_LUMINANCE 0x00020000
-#define DDS_PF_BUMPLUMINANCE 0x00040000
-#define DDS_PF_BUMPDUDV 0x00080000
-
-struct dds_pixel_format
-{
- DWORD size;
- DWORD flags;
- DWORD fourcc;
- DWORD bpp;
- DWORD rmask;
- DWORD gmask;
- DWORD bmask;
- DWORD amask;
-};
-
-struct dds_header
-{
- DWORD size;
- DWORD flags;
- DWORD height;
- DWORD width;
- DWORD pitch_or_linear_size;
- DWORD depth;
- DWORD miplevels;
- DWORD reserved[11];
- struct dds_pixel_format pixel_format;
- DWORD caps;
- DWORD caps2;
- DWORD caps3;
- DWORD caps4;
- DWORD reserved2;
-};
-
-/* fills dds_header with reasonable default values */
-static void fill_dds_header(struct dds_header *header)
-{
- memset(header, 0, sizeof(*header));
-
- header->size = sizeof(*header);
- header->flags = DDS_CAPS | DDS_WIDTH | DDS_HEIGHT | DDS_PIXELFORMAT;
- header->height = 4;
- header->width = 4;
- header->pixel_format.size = sizeof(header->pixel_format);
- /* X8R8G8B8 */
- header->pixel_format.flags = DDS_PF_RGB;
- header->pixel_format.fourcc = 0;
- header->pixel_format.bpp = 32;
- header->pixel_format.rmask = 0xff0000;
- header->pixel_format.gmask = 0x00ff00;
- header->pixel_format.bmask = 0x0000ff;
- header->pixel_format.amask = 0;
- header->caps = DDS_CAPS_TEXTURE;
-}
-
-#define check_dds_pixel_format(flags, fourcc, bpp, rmask, gmask, bmask, amask, format) \
- check_dds_pixel_format_(__LINE__, flags, fourcc, bpp, rmask, gmask, bmask, amask,
format)
-static void check_dds_pixel_format_(unsigned int line, DWORD flags, DWORD fourcc, DWORD
bpp,
- DWORD rmask, DWORD gmask, DWORD bmask, DWORD amask, DXGI_FORMAT expected_format)
-{
- D3DX11_IMAGE_INFO info;
- HRESULT hr;
- struct
- {
- DWORD magic;
- struct dds_header header;
- BYTE data[256];
- } dds;
-
- dds.magic = MAKEFOURCC('D','D','S',' ');
- fill_dds_header(&dds.header);
- dds.header.pixel_format.flags = flags;
- dds.header.pixel_format.fourcc = fourcc;
- dds.header.pixel_format.bpp = bpp;
- dds.header.pixel_format.rmask = rmask;
- dds.header.pixel_format.gmask = gmask;
- dds.header.pixel_format.bmask = bmask;
- dds.header.pixel_format.amask = amask;
- memset(dds.data, 0, sizeof(dds.data));
-
- hr = D3DX11GetImageInfoFromMemory(&dds, sizeof(dds), NULL, &info, NULL);
- ok_(__FILE__, line)(hr == S_OK, "Got unexpected hr %#lx for pixel format
%#x.\n", hr, expected_format);
- if (SUCCEEDED(hr))
- {
- ok_(__FILE__, line)(info.Format == expected_format, "Unexpected format %#x,
expected %#x\n",
- info.Format, expected_format);
- }
-}
-
-static void test_D3DX11GetImageInfoFromMemory(void)
-{
- D3DX11_IMAGE_INFO info;
- HRESULT hr;
-
- if (!strcmp(winetest_platform, "wine"))
- {
- skip("Skipping D3DX11GetImageInfoFromMemory() tests.\n");
- return;
- }
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, sizeof(bmp_1bpp), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, sizeof(bmp_1bpp) + 5, NULL, &info,
NULL); /* too large size */
- ok(hr == S_OK, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(noimage, sizeof(noimage), NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(noimage, sizeof(noimage), NULL, &info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, sizeof(bmp_1bpp) - 1, NULL, &info,
NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp + 1, sizeof(bmp_1bpp) - 1, NULL,
&info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, 0, NULL, &info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, 0, NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(noimage, 0, NULL, &info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(noimage, 0, NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(noimage, 0, NULL, &info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(NULL, 4, NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(NULL, 4, NULL, &info, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(NULL, 0, NULL, NULL, NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- /* test BMP support */
- hr = D3DX11GetImageInfoFromMemory(bmp_1bpp, sizeof(bmp_1bpp), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.", hr);
- ok(info.Width == 1, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 1, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_BMP, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_2bpp, sizeof(bmp_2bpp), NULL, &info,
NULL);
- ok(hr == E_FAIL, "Got unexpected hr %#lx.", hr);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_4bpp, sizeof(bmp_4bpp), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 1, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 1, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_BMP, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_8bpp, sizeof(bmp_8bpp), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 1, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 1, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_BMP, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_32bpp_xrgb, sizeof(bmp_32bpp_xrgb), NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_BMP, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(bmp_32bpp_argb, sizeof(bmp_32bpp_argb), NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_BMP, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- /* Grayscale PNG */
- hr = D3DX11GetImageInfoFromMemory(png_grayscale, sizeof(png_grayscale), NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 1, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 1, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.MiscFlags == 0, "Unexpected misc flags %#x\n", info.MiscFlags);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_PNG, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- /* test DDS support */
- hr = D3DX11GetImageInfoFromMemory(dds_24bit, sizeof(dds_24bit), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 2, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_24bit, sizeof(dds_24bit) - 1, NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 2, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_16bit, sizeof(dds_16bit), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- memset(&info, 0, sizeof(info));
- hr = D3DX11GetImageInfoFromMemory(dds_16bit, sizeof(dds_16bit) - 1, NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 2, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 2, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- memset(&info, 0, sizeof(info));
- hr = D3DX11GetImageInfoFromMemory(dds_8bit, sizeof(dds_8bit), NULL, &info,
NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 16, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 4, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_R8G8B8A8_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_cube_map, sizeof(dds_cube_map), NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 4, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 4, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 6, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_BC3_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_cube_map, sizeof(dds_cube_map) - 1, NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 4, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 4, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 1, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 6, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 1, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_BC3_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE2D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_volume_map, sizeof(dds_volume_map), NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 4, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 4, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 2, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 3, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_BC2_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE3D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- hr = D3DX11GetImageInfoFromMemory(dds_volume_map, sizeof(dds_volume_map) - 1, NULL,
&info, NULL);
- ok(hr == S_OK, "Got unexpected hr %#lx.\n", hr);
- ok(info.Width == 4, "Unexpected width %u.\n", info.Width);
- ok(info.Height == 4, "Unexpected height %u.\n", info.Height);
- ok(info.Depth == 2, "Unexpected depth %u.\n", info.Depth);
- ok(info.ArraySize == 1, "Unexpected array size %u.\n", info.ArraySize);
- ok(info.MipLevels == 3, "Unexpected miplevels %u\n", info.MipLevels);
- ok(info.Format == DXGI_FORMAT_BC2_UNORM, "Unexpected format %#x.\n",
info.Format);
- ok(info.ResourceDimension == D3D11_RESOURCE_DIMENSION_TEXTURE3D, "Unexpected
resource type %#x.\n", info.ResourceDimension);
- ok(info.ImageFileFormat == D3DX11_IFF_DDS, "Unexpected image file format
%#x.\n", info.ImageFileFormat);
-
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','1'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC1_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','2'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC2_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','3'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC2_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','4'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC3_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('D','X','T','5'), 0, 0, 0, 0, 0,
DXGI_FORMAT_BC3_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('R','G','B','G'), 0, 0, 0, 0, 0,
DXGI_FORMAT_R8G8_B8G8_UNORM);
- check_dds_pixel_format(DDS_PF_FOURCC,
MAKEFOURCC('G','R','G','B'), 0, 0, 0, 0, 0,
DXGI_FORMAT_G8R8_G8B8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 16, 0xf800, 0x07e0, 0x001f, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x7c00, 0x03e0, 0x001f,
0x8000, DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x0f00, 0x00f0, 0x000f,
0xf000, DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 8, 0xe0, 0x1c, 0x03, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_ALPHA_ONLY, 0, 8, 0, 0, 0, 0xff,
DXGI_FORMAT_A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 16, 0x00e0, 0x001c, 0x0003,
0xff00, DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 16, 0xf00, 0x0f0, 0x00f, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x3ff00000, 0x000ffc00,
0x000003ff, 0xc0000000, DXGI_FORMAT_R10G10B10A2_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x000003ff, 0x000ffc00,
0x3ff00000, 0xc0000000, DXGI_FORMAT_R10G10B10A2_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x00ff0000, 0x0000ff00,
0x000000ff, 0xff000000, DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB | DDS_PF_ALPHA, 0, 32, 0x000000ff, 0x0000ff00,
0x00ff0000, 0xff000000, DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0xff0000, 0x00ff00, 0x0000ff, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0x0000ff, 0x00ff00, 0xff0000, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 24, 0xff0000, 0x00ff00, 0x0000ff, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_RGB, 0, 32, 0x0000ffff, 0xffff0000, 0, 0,
DXGI_FORMAT_R16G16_UNORM);
- check_dds_pixel_format(DDS_PF_LUMINANCE, 0, 8, 0xff, 0, 0, 0,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_LUMINANCE, 0, 16, 0xffff, 0, 0, 0,
DXGI_FORMAT_R16G16B16A16_UNORM);
- check_dds_pixel_format(DDS_PF_LUMINANCE | DDS_PF_ALPHA, 0, 16, 0x00ff, 0, 0, 0xff00,
DXGI_FORMAT_R8G8B8A8_UNORM);
- check_dds_pixel_format(DDS_PF_LUMINANCE | DDS_PF_ALPHA, 0, 8, 0x0f, 0, 0, 0xf0,
DXGI_FORMAT_R8G8B8A8_UNORM);
-}
-
START_TEST(d3dx11)
{
test_D3DX11CreateAsyncMemoryLoader();
test_D3DX11CreateAsyncFileLoader();
test_D3DX11CreateAsyncResourceLoader();
- test_D3DX11CompileFromFile();
- test_D3DX11GetImageInfoFromMemory();
+ test_get_image_info();
+ test_compile_from_file();
}
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/2615