| 233 | #define DDPF_RGBA (DDPF_RGB | DDPF_ALPHAPIXELS) |
| 234 | |
| 235 | ResourceFormat DXGIFormat2ResourceFormat(DXGI_FORMAT format) |
| 236 | { |
| 237 | ResourceFormat special; |
| 238 | ResourceFormat fmt32, fmt16, fmt8; |
| 239 | |
| 240 | fmt32.compByteWidth = 4; |
| 241 | fmt32.compCount = 1; |
| 242 | fmt32.compType = CompType::Float; |
| 243 | fmt32.type = ResourceFormatType::Regular; |
| 244 | |
| 245 | fmt16.compByteWidth = 2; |
| 246 | fmt16.compCount = 1; |
| 247 | fmt16.compType = CompType::Float; |
| 248 | fmt16.type = ResourceFormatType::Regular; |
| 249 | |
| 250 | fmt8.compByteWidth = 1; |
| 251 | fmt8.compCount = 1; |
| 252 | fmt8.compType = CompType::UNorm; |
| 253 | fmt8.type = ResourceFormatType::Regular; |
| 254 | |
| 255 | special.compCount = 4; |
| 256 | |
| 257 | switch(format) |
| 258 | { |
| 259 | case DXGI_FORMAT_BC1_UNORM: |
| 260 | case DXGI_FORMAT_BC1_UNORM_SRGB: |
| 261 | special.type = ResourceFormatType::BC1; |
| 262 | special.compType = |
| 263 | (format == DXGI_FORMAT_BC1_UNORM_SRGB) ? CompType::UNormSRGB : CompType::UNorm; |
| 264 | return special; |
| 265 | case DXGI_FORMAT_BC2_UNORM: |
| 266 | case DXGI_FORMAT_BC2_UNORM_SRGB: |
| 267 | special.type = ResourceFormatType::BC2; |
| 268 | special.compType = |
| 269 | (format == DXGI_FORMAT_BC2_UNORM_SRGB) ? CompType::UNormSRGB : CompType::UNorm; |
| 270 | return special; |
| 271 | case DXGI_FORMAT_BC3_UNORM: |
| 272 | case DXGI_FORMAT_BC3_UNORM_SRGB: |
| 273 | special.type = ResourceFormatType::BC3; |
| 274 | special.compType = |
| 275 | (format == DXGI_FORMAT_BC3_UNORM_SRGB) ? CompType::UNormSRGB : CompType::UNorm; |
| 276 | return special; |
| 277 | case DXGI_FORMAT_BC4_UNORM: |
| 278 | case DXGI_FORMAT_BC4_SNORM: |
| 279 | special.type = ResourceFormatType::BC4; |
| 280 | special.compType = (format == DXGI_FORMAT_BC4_UNORM ? CompType::UNorm : CompType::SNorm); |
| 281 | special.compCount = 1; |
| 282 | return special; |
| 283 | case DXGI_FORMAT_BC5_UNORM: |
| 284 | case DXGI_FORMAT_BC5_SNORM: |
| 285 | special.type = ResourceFormatType::BC5; |
| 286 | special.compType = (format == DXGI_FORMAT_BC5_UNORM ? CompType::UNorm : CompType::SNorm); |
| 287 | special.compCount = 2; |
| 288 | return special; |
| 289 | case DXGI_FORMAT_BC6H_UF16: |
| 290 | case DXGI_FORMAT_BC6H_SF16: |
| 291 | special.type = ResourceFormatType::BC6; |
| 292 | special.compType = (format == DXGI_FORMAT_BC6H_UF16 ? CompType::UNorm : CompType::SNorm); |
no test coverage detected