blob: e749ea8645dd12e772709a27daf4ea875866308b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#ifndef NV_CO_DX_FORMAT_UTIL_H
#define NV_CO_DX_FORMAT_UTIL_H
#define NOMINMAX
#include <dxgi.h>
namespace nvidia {
namespace Common {
struct DxFormatUtil
{
enum UsageType
{
USAGE_UNKNOWN, ///< Generally used to mark an error
USAGE_TARGET, ///< Format should be used when written as target
USAGE_DEPTH_STENCIL, ///< Format should be used when written as depth stencil
USAGE_SRV, ///< Format if being read as srv
USAGE_COUNT_OF,
};
enum UsageFlag
{
USAGE_FLAG_MULTI_SAMPLE = 0x1,
USAGE_FLAG_SRV = 0x2,
};
/// Given the usage, flags, and format will return the most suitable format. Will return DXGI_UNKNOWN if combination is not possible
static DXGI_FORMAT calcFormat(UsageType usage, DXGI_FORMAT format);
/// Calculate appropriate format for creating a buffer for usage and flags
static DXGI_FORMAT calcResourceFormat(UsageType usage, int usageFlags, DXGI_FORMAT format);
/// True if the type is 'typeless'
static bool isTypeless(DXGI_FORMAT format);
/// Returns number of bits used for color channel for format (for channels with multiple sizes, returns smallest ie RGB565 -> 5)
static int getNumColorChannelBits(DXGI_FORMAT fmt);
};
} // namespace Common
} // namespace nvidia
#endif // NV_CO_DX12_RESOURCE_H
|