Flutter Engine
The Flutter Engine
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Macros | Functions
GrD3DUtil.h File Reference
#include "include/core/SkImage.h"
#include "include/gpu/GrTypes.h"
#include "include/gpu/d3d/GrD3DTypes.h"
#include "include/private/gpu/ganesh/GrTypesPriv.h"
#include <string>

Go to the source code of this file.

Macros

#define GR_D3D_CALL_ERRCHECK(X)
 

Functions

static constexpr bool operator== (const D3D12_CPU_DESCRIPTOR_HANDLE &first, const D3D12_CPU_DESCRIPTOR_HANDLE &second)
 
bool GrDxgiFormatIsCompressed (DXGI_FORMAT)
 
static constexpr uint32_t GrDxgiFormatChannels (DXGI_FORMAT format)
 
static constexpr GrColorFormatDesc GrDxgiFormatDesc (DXGI_FORMAT format)
 
static constexpr size_t GrDxgiFormatBytesPerBlock (DXGI_FORMAT format)
 
static constexpr int GrDxgiFormatStencilBits (DXGI_FORMAT format)
 
std::wstring GrD3DMultiByteToWide (const std::string &str)
 

Macro Definition Documentation

◆ GR_D3D_CALL_ERRCHECK

#define GR_D3D_CALL_ERRCHECK (   X)
Value:
do { \
HRESULT result = X; \
SkASSERT(SUCCEEDED(result)); \
if (!SUCCEEDED(result)) { \
SkDebugf("Failed Direct3D call. Error: 0x%08lx\n", result); \
} \
} while (false)
static const SkScalar X
Definition: StrokeBench.cpp:54
GAsyncResult * result
#define SUCCEEDED(hr)

Definition at line 18 of file GrD3DUtil.h.

Function Documentation

◆ GrD3DMultiByteToWide()

std::wstring GrD3DMultiByteToWide ( const std::string &  str)

Definition at line 25 of file GrD3DUtil.cpp.

25 {
26 int size_needed = MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), nullptr, 0);
27 std::wstring wstr(size_needed, 0);
28 MultiByteToWideChar(CP_UTF8, 0, &str[0], (int)str.size(), &wstr[0], size_needed);
29 return wstr;
30}

◆ GrDxgiFormatBytesPerBlock()

static constexpr size_t GrDxgiFormatBytesPerBlock ( DXGI_FORMAT  format)
staticconstexpr

Definition at line 103 of file GrD3DUtil.h.

103 {
104 switch (format) {
105 case DXGI_FORMAT_R8G8B8A8_UNORM: return 4;
106 case DXGI_FORMAT_R8_UNORM: return 1;
107 case DXGI_FORMAT_B8G8R8A8_UNORM: return 4;
108 case DXGI_FORMAT_B5G6R5_UNORM: return 2;
109 case DXGI_FORMAT_R16G16B16A16_FLOAT: return 8;
110 case DXGI_FORMAT_R16_FLOAT: return 2;
111 case DXGI_FORMAT_R8G8_UNORM: return 2;
112 case DXGI_FORMAT_R10G10B10A2_UNORM: return 4;
113 case DXGI_FORMAT_B4G4R4A4_UNORM: return 2;
114 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return 4;
115 case DXGI_FORMAT_BC1_UNORM: return 8;
116 case DXGI_FORMAT_R16_UNORM: return 2;
117 case DXGI_FORMAT_R16G16_UNORM: return 4;
118 case DXGI_FORMAT_R16G16B16A16_UNORM: return 8;
119 case DXGI_FORMAT_R16G16_FLOAT: return 4;
120 case DXGI_FORMAT_D24_UNORM_S8_UINT: return 4;
121 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return 8;
122
123 default: return 0;
124 }
125}
uint32_t uint32_t * format

◆ GrDxgiFormatChannels()

static constexpr uint32_t GrDxgiFormatChannels ( DXGI_FORMAT  format)
staticconstexpr

Definition at line 37 of file GrD3DUtil.h.

37 {
38 switch (format) {
39 case DXGI_FORMAT_R8G8B8A8_UNORM: return kRGBA_SkColorChannelFlags;
40 case DXGI_FORMAT_R8_UNORM: return kRed_SkColorChannelFlag;
41 case DXGI_FORMAT_B8G8R8A8_UNORM: return kRGBA_SkColorChannelFlags;
42 case DXGI_FORMAT_B5G6R5_UNORM: return kRGB_SkColorChannelFlags;
43 case DXGI_FORMAT_R16G16B16A16_FLOAT: return kRGBA_SkColorChannelFlags;
44 case DXGI_FORMAT_R16_FLOAT: return kRed_SkColorChannelFlag;
45 case DXGI_FORMAT_R8G8_UNORM: return kRG_SkColorChannelFlags;
46 case DXGI_FORMAT_R10G10B10A2_UNORM: return kRGBA_SkColorChannelFlags;
47 case DXGI_FORMAT_B4G4R4A4_UNORM: return kRGBA_SkColorChannelFlags;
48 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB: return kRGBA_SkColorChannelFlags;
49 case DXGI_FORMAT_BC1_UNORM: return kRGBA_SkColorChannelFlags;
50 case DXGI_FORMAT_R16_UNORM: return kRed_SkColorChannelFlag;
51 case DXGI_FORMAT_R16G16_UNORM: return kRG_SkColorChannelFlags;
52 case DXGI_FORMAT_R16G16B16A16_UNORM: return kRGBA_SkColorChannelFlags;
53 case DXGI_FORMAT_R16G16_FLOAT: return kRG_SkColorChannelFlags;
54 case DXGI_FORMAT_D24_UNORM_S8_UINT: return 0;
55 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return 0;
56
57 default: return 0;
58 }
59}
@ kRGB_SkColorChannelFlags
Definition: SkColor.h:247
@ kRGBA_SkColorChannelFlags
Definition: SkColor.h:248
@ kRed_SkColorChannelFlag
Definition: SkColor.h:239
@ kRG_SkColorChannelFlags
Definition: SkColor.h:246

◆ GrDxgiFormatDesc()

static constexpr GrColorFormatDesc GrDxgiFormatDesc ( DXGI_FORMAT  format)
staticconstexpr

Definition at line 61 of file GrD3DUtil.h.

61 {
62 switch (format) {
63 case DXGI_FORMAT_R8G8B8A8_UNORM:
65 case DXGI_FORMAT_R8_UNORM:
67 case DXGI_FORMAT_B8G8R8A8_UNORM:
69 case DXGI_FORMAT_B5G6R5_UNORM:
71 case DXGI_FORMAT_R16G16B16A16_FLOAT:
73 case DXGI_FORMAT_R16_FLOAT:
75 case DXGI_FORMAT_R8G8_UNORM:
77 case DXGI_FORMAT_R10G10B10A2_UNORM:
79 case DXGI_FORMAT_B4G4R4A4_UNORM:
81 case DXGI_FORMAT_R8G8B8A8_UNORM_SRGB:
83 case DXGI_FORMAT_R16_UNORM:
85 case DXGI_FORMAT_R16G16_UNORM:
87 case DXGI_FORMAT_R16G16B16A16_UNORM:
89 case DXGI_FORMAT_R16G16_FLOAT:
91
92 // Compressed texture formats are not expected to have a description.
93 case DXGI_FORMAT_BC1_UNORM: return GrColorFormatDesc::MakeInvalid();
94
95 // This type only describes color channels.
96 case DXGI_FORMAT_D24_UNORM_S8_UINT: return GrColorFormatDesc::MakeInvalid();
97 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT: return GrColorFormatDesc::MakeInvalid();
98
99 default: return GrColorFormatDesc::MakeInvalid();
100 }
101}
static constexpr GrColorFormatDesc MakeInvalid()
Definition: GrTypesPriv.h:756
static constexpr GrColorFormatDesc MakeRGBA(int rgba, GrColorTypeEncoding e)
Definition: GrTypesPriv.h:720
static constexpr GrColorFormatDesc MakeRG(int rg, GrColorTypeEncoding e)
Definition: GrTypesPriv.h:744
static constexpr GrColorFormatDesc MakeRGB(int rgb, GrColorTypeEncoding e)
Definition: GrTypesPriv.h:728
static constexpr GrColorFormatDesc MakeR(int r, GrColorTypeEncoding e)
Definition: GrTypesPriv.h:740

◆ GrDxgiFormatIsCompressed()

bool GrDxgiFormatIsCompressed ( DXGI_FORMAT  format)

Returns true if the format is compressed.

Definition at line 15 of file GrD3DUtil.cpp.

15 {
16 switch (format) {
17 case DXGI_FORMAT_BC1_UNORM:
18 return true;
19 default:
20 return false;
21 }
23}
#define SkUNREACHABLE
Definition: SkAssert.h:135

◆ GrDxgiFormatStencilBits()

static constexpr int GrDxgiFormatStencilBits ( DXGI_FORMAT  format)
staticconstexpr

Definition at line 127 of file GrD3DUtil.h.

127 {
128 switch (format) {
129 case DXGI_FORMAT_D24_UNORM_S8_UINT:
130 return 8;
131 case DXGI_FORMAT_D32_FLOAT_S8X24_UINT:
132 return 8;
133 default:
134 return 0;
135 }
136}

◆ operator==()

static constexpr bool operator== ( const D3D12_CPU_DESCRIPTOR_HANDLE &  first,
const D3D12_CPU_DESCRIPTOR_HANDLE &  second 
)
staticconstexpr

Definition at line 27 of file GrD3DUtil.h.

28 {
29 return first.ptr == second.ptr;
30}