2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
17 LPVOID
XPhysicalAlloc(SIZE_T s
, DWORD ulPhysicalAddress
, DWORD ulAlignment
, DWORD flProtect
);
18 void XPhysicalFree(LPVOID lpAddress
);
27 #define XPR_MAGIC_VALUE (('0' << 24) | ('R' << 16) | ('P' << 8) | 'X')
29 typedef enum _XB_D3DFORMAT
31 XB_D3DFMT_UNKNOWN
= 0xFFFFFFFF,
33 /* Swizzled formats */
35 XB_D3DFMT_A8R8G8B8
= 0x00000006,
36 XB_D3DFMT_X8R8G8B8
= 0x00000007,
37 XB_D3DFMT_R5G6B5
= 0x00000005,
38 XB_D3DFMT_R6G5B5
= 0x00000027,
39 XB_D3DFMT_X1R5G5B5
= 0x00000003,
40 XB_D3DFMT_A1R5G5B5
= 0x00000002,
41 XB_D3DFMT_A4R4G4B4
= 0x00000004,
42 XB_D3DFMT_A8
= 0x00000019,
43 XB_D3DFMT_A8B8G8R8
= 0x0000003A,
44 XB_D3DFMT_B8G8R8A8
= 0x0000003B,
45 XB_D3DFMT_R4G4B4A4
= 0x00000039,
46 XB_D3DFMT_R5G5B5A1
= 0x00000038,
47 XB_D3DFMT_R8G8B8A8
= 0x0000003C,
48 XB_D3DFMT_R8B8
= 0x00000029,
49 XB_D3DFMT_G8B8
= 0x00000028,
51 XB_D3DFMT_P8
= 0x0000000B,
53 XB_D3DFMT_L8
= 0x00000000,
54 XB_D3DFMT_A8L8
= 0x0000001A,
55 XB_D3DFMT_AL8
= 0x00000001,
56 XB_D3DFMT_L16
= 0x00000032,
58 XB_D3DFMT_V8U8
= 0x00000028,
59 XB_D3DFMT_L6V5U5
= 0x00000027,
60 XB_D3DFMT_X8L8V8U8
= 0x00000007,
61 XB_D3DFMT_Q8W8V8U8
= 0x0000003A,
62 XB_D3DFMT_V16U16
= 0x00000033,
64 XB_D3DFMT_D16_LOCKABLE
= 0x0000002C,
65 XB_D3DFMT_D16
= 0x0000002C,
66 XB_D3DFMT_D24S8
= 0x0000002A,
67 XB_D3DFMT_F16
= 0x0000002D,
68 XB_D3DFMT_F24S8
= 0x0000002B,
72 XB_D3DFMT_YUY2
= 0x00000024,
73 XB_D3DFMT_UYVY
= 0x00000025,
75 /* Compressed formats */
77 XB_D3DFMT_DXT1
= 0x0000000C,
78 XB_D3DFMT_DXT2
= 0x0000000E,
79 XB_D3DFMT_DXT3
= 0x0000000E,
80 XB_D3DFMT_DXT4
= 0x0000000F,
81 XB_D3DFMT_DXT5
= 0x0000000F,
85 XB_D3DFMT_LIN_A1R5G5B5
= 0x00000010,
86 XB_D3DFMT_LIN_A4R4G4B4
= 0x0000001D,
87 XB_D3DFMT_LIN_A8
= 0x0000001F,
88 XB_D3DFMT_LIN_A8B8G8R8
= 0x0000003F,
89 XB_D3DFMT_LIN_A8R8G8B8
= 0x00000012,
90 XB_D3DFMT_LIN_B8G8R8A8
= 0x00000040,
91 XB_D3DFMT_LIN_G8B8
= 0x00000017,
92 XB_D3DFMT_LIN_R4G4B4A4
= 0x0000003E,
93 XB_D3DFMT_LIN_R5G5B5A1
= 0x0000003D,
94 XB_D3DFMT_LIN_R5G6B5
= 0x00000011,
95 XB_D3DFMT_LIN_R6G5B5
= 0x00000037,
96 XB_D3DFMT_LIN_R8B8
= 0x00000016,
97 XB_D3DFMT_LIN_R8G8B8A8
= 0x00000041,
98 XB_D3DFMT_LIN_X1R5G5B5
= 0x0000001C,
99 XB_D3DFMT_LIN_X8R8G8B8
= 0x0000001E,
101 XB_D3DFMT_LIN_A8L8
= 0x00000020,
102 XB_D3DFMT_LIN_AL8
= 0x0000001B,
103 XB_D3DFMT_LIN_L16
= 0x00000035,
104 XB_D3DFMT_LIN_L8
= 0x00000013,
106 XB_D3DFMT_LIN_V16U16
= 0x00000036,
107 XB_D3DFMT_LIN_V8U8
= 0x00000017,
108 XB_D3DFMT_LIN_L6V5U5
= 0x00000037,
109 XB_D3DFMT_LIN_X8L8V8U8
= 0x0000001E,
110 XB_D3DFMT_LIN_Q8W8V8U8
= 0x00000012,
112 XB_D3DFMT_LIN_D24S8
= 0x0000002E,
113 XB_D3DFMT_LIN_F24S8
= 0x0000002F,
114 XB_D3DFMT_LIN_D16
= 0x00000030,
115 XB_D3DFMT_LIN_F16
= 0x00000031,
117 XB_D3DFMT_VERTEXDATA
= 100,
118 XB_D3DFMT_INDEX16
= 101,
120 XB_D3DFMT_FORCE_DWORD
=0x7fffffff
123 DWORD
GetD3DFormat(XB_D3DFORMAT format
);
124 DWORD
BytesPerPixelFromFormat(XB_D3DFORMAT format
);
125 bool IsPalettedFormat(XB_D3DFORMAT format
);
126 void ParseTextureHeader(D3DTexture
*tex
, XB_D3DFORMAT
&fmt
, DWORD
&width
, DWORD
&height
, DWORD
&pitch
, DWORD
&offset
);
127 bool IsSwizzledFormat(XB_D3DFORMAT format
);
130 typedef unsigned __int8
uint8_t;
131 typedef __int16
int16_t;
134 #pragma pack(push, 2)
136 uint8_t id
[2]; // offset
137 uint32_t filesize
; // 2
138 uint32_t reserved
; // 6
139 uint32_t headersize
; // 10
140 uint32_t infoSize
; // 14
141 uint32_t width
; // 18
142 uint32_t height
; // 22
143 uint16_t biPlanes
; // 26
145 uint32_t biCompression
; // 30
146 uint32_t biSizeImage
; // 34
147 uint32_t biXPelsPerMeter
; // 38
148 uint32_t biYPelsPerMeter
; // 42
149 uint32_t biClrUsed
; // 46
150 uint32_t biClrImportant
; // 50
154 void Unswizzle(const void *src
, unsigned int depth
, unsigned int width
, unsigned int height
, void *dest
);
155 void DXT1toARGB(const void *src
, void *dest
, unsigned int destWidth
);
156 void DXT4toARGB(const void *src
, void *dest
, unsigned int destWidth
);
157 void ConvertDXT1(const void *src
, unsigned int width
, unsigned int height
, void *dest
);
158 void ConvertDXT4(const void *src
, unsigned int width
, unsigned int height
, void *dest
);
159 void GetTextureFromData(D3DTexture
* pTex
, void* texData
, std::unique_ptr
<CTexture
>* ppTexture
);