d3d12: Generate a pipe format -> typeless mapping table too
Reviewed-by: Bill Kristiansen <billkris@microsoft.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13054>
This commit is contained in:
parent
ca7d4fcb3f
commit
9740141b2e
|
@ -28,12 +28,20 @@
|
|||
#include "util/u_math.h"
|
||||
#include "util/compiler.h"
|
||||
|
||||
#define MAP_FORMAT(BITS, TYPE) \
|
||||
#define MAP_FORMAT_NO_TYPELESS(BITS, TYPE) \
|
||||
[PIPE_FORMAT_ ## BITS ## _ ## TYPE] = DXGI_FORMAT_ ## BITS ## _ ## TYPE,
|
||||
|
||||
#define MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
#define MAP_FORMAT2_NO_TYPELESS(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
[PIPE_FORMAT_ ## BITS1 ## _ ## TYPE1] = DXGI_FORMAT_ ## BITS2 ## _ ## TYPE2,
|
||||
|
||||
#define MAP_FORMAT(BITS, TYPE) MAP_FORMAT_NO_TYPELESS(BITS, TYPE)
|
||||
#define MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
MAP_FORMAT2_NO_TYPELESS(BITS1, TYPE1, BITS2, TYPE2)
|
||||
|
||||
#define MAP_FORMAT_CUSTOM_TYPELESS(BITS, TYPE, TYPELESS_BITS) \
|
||||
MAP_FORMAT(BITS, TYPE)
|
||||
#define MAP_FORMAT2_CUSTOM_TYPELESS(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPE2)
|
||||
|
||||
#define MAP_FORMAT_NORM(FMT) \
|
||||
MAP_FORMAT(FMT, UNORM) \
|
||||
MAP_FORMAT(FMT, SNORM)
|
||||
|
@ -107,7 +115,7 @@
|
|||
MAP_FORMAT_INT(R16G16B16A16) \
|
||||
MAP_FORMAT_FLOAT(R16G16B16A16) \
|
||||
\
|
||||
MAP_FORMAT(A8, UNORM) \
|
||||
MAP_FORMAT_CUSTOM_TYPELESS(A8, UNORM, R8) \
|
||||
MAP_EMU_FORMAT_NO_ALPHA(8, UNORM) \
|
||||
MAP_EMU_FORMAT(8, SNORM) \
|
||||
MAP_EMU_FORMAT(8, SINT) \
|
||||
|
@ -121,14 +129,14 @@
|
|||
MAP_EMU_FORMAT(32, UINT) \
|
||||
MAP_EMU_FORMAT(32, FLOAT) \
|
||||
\
|
||||
MAP_FORMAT2(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP) \
|
||||
MAP_FORMAT(R11G11B10, FLOAT) \
|
||||
MAP_FORMAT(R10G10B10A2, UINT) \
|
||||
MAP_FORMAT(R10G10B10A2, UNORM) \
|
||||
MAP_FORMAT2_NO_TYPELESS(R9G9B9E5, FLOAT, R9G9B9E5, SHAREDEXP) \
|
||||
MAP_FORMAT_NO_TYPELESS(R11G11B10, FLOAT) \
|
||||
MAP_FORMAT_NO_TYPELESS(R10G10B10A2, UINT) \
|
||||
MAP_FORMAT_NO_TYPELESS(R10G10B10A2, UNORM) \
|
||||
\
|
||||
MAP_FORMAT(B5G6R5, UNORM) \
|
||||
MAP_FORMAT(B5G5R5A1, UNORM) \
|
||||
MAP_FORMAT2(B5G5R5X1, UNORM, B5G5R5A1, UNORM) \
|
||||
MAP_FORMAT_NO_TYPELESS(B5G6R5, UNORM) \
|
||||
MAP_FORMAT_NO_TYPELESS(B5G5R5A1, UNORM) \
|
||||
MAP_FORMAT2_NO_TYPELESS(B5G5R5X1, UNORM, B5G5R5A1, UNORM) \
|
||||
\
|
||||
MAP_FORMAT2(DXT1, RGB, BC1, UNORM) \
|
||||
MAP_FORMAT2(DXT1, RGBA, BC1, UNORM) \
|
||||
|
@ -158,12 +166,39 @@ static const DXGI_FORMAT formats[PIPE_FORMAT_COUNT] = {
|
|||
FORMAT_TABLE()
|
||||
};
|
||||
|
||||
#undef MAP_FORMAT
|
||||
#undef MAP_FORMAT2
|
||||
#undef MAP_FORMAT_CUSTOM_TYPELESS
|
||||
#undef MAP_FORMAT2_CUSTOM_TYPELESS
|
||||
|
||||
#define MAP_FORMAT(BITS, TYPE) \
|
||||
[PIPE_FORMAT_ ## BITS ## _ ## TYPE] = DXGI_FORMAT_ ## BITS ## _TYPELESS,
|
||||
|
||||
#define MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
[PIPE_FORMAT_ ## BITS1 ## _ ## TYPE1] = DXGI_FORMAT_ ## BITS2 ## _TYPELESS,
|
||||
|
||||
#define MAP_FORMAT_CUSTOM_TYPELESS(BITS1, TYPE, BITS2) \
|
||||
MAP_FORMAT2(BITS1, TYPE, BITS2, TYPELESS)
|
||||
|
||||
#define MAP_FORMAT2_CUSTOM_TYPELESS(BITS1, TYPE1, BITS2, TYPE2) \
|
||||
MAP_FORMAT2(BITS1, TYPE1, BITS2, TYPELESS)
|
||||
|
||||
static const DXGI_FORMAT typeless_formats[PIPE_FORMAT_COUNT] = {
|
||||
FORMAT_TABLE()
|
||||
};
|
||||
|
||||
DXGI_FORMAT
|
||||
d3d12_get_format(enum pipe_format format)
|
||||
{
|
||||
return formats[format];
|
||||
}
|
||||
|
||||
DXGI_FORMAT
|
||||
d3d12_get_typeless_format(enum pipe_format format)
|
||||
{
|
||||
return typeless_formats[format];
|
||||
}
|
||||
|
||||
DXGI_FORMAT
|
||||
d3d12_get_resource_rt_format(enum pipe_format f)
|
||||
{
|
||||
|
|
|
@ -36,6 +36,9 @@ extern "C" {
|
|||
DXGI_FORMAT
|
||||
d3d12_get_format(enum pipe_format format);
|
||||
|
||||
DXGI_FORMAT
|
||||
d3d12_get_typeless_format(enum pipe_format format);
|
||||
|
||||
DXGI_FORMAT
|
||||
d3d12_get_resource_srv_format(enum pipe_format f, enum pipe_texture_target target);
|
||||
|
||||
|
|
Loading…
Reference in New Issue