Go to the documentation of this file.
36 static constexpr GLenum PrimTopologyToGLTopologyMap[] =
48 return PrimTopologyToGLTopologyMap[PrimTopology];
54 static constexpr GLenum TypeToGLTypeMap[] =
69 return TypeToGLTypeMap[Value];
74 static_assert(
USAGE_NUM_USAGES == 5,
"Please update this function to handle the new usage type");
91 return GL_STATIC_READ;
93 return GL_STATIC_COPY;
95 default:
UNEXPECTED(
"Unknow usage" );
return 0;
106 bIsAnisotropic =
false;
107 bIsComparison =
false;
108 GLFilter = GL_NEAREST;
112 bIsAnisotropic =
false;
113 bIsComparison =
false;
114 GLFilter = GL_NEAREST;
118 bIsAnisotropic =
false;
119 bIsComparison =
false;
120 GLFilter = GL_LINEAR;
124 bIsAnisotropic =
true;
125 bIsComparison =
false;
126 GLFilter = GL_LINEAR;
130 bIsAnisotropic =
false;
131 bIsComparison =
true;
132 GLFilter = GL_NEAREST;
136 bIsAnisotropic =
false;
137 bIsComparison =
true;
138 GLFilter = GL_LINEAR;
142 bIsAnisotropic =
true;
143 bIsComparison =
true;
144 GLFilter = GL_LINEAR;
149 bIsAnisotropic =
false;
150 bIsComparison =
false;
151 GLFilter = GL_NEAREST;
160 if (GLTexFormat == GL_R32F)
161 GLTexFormat = GL_DEPTH_COMPONENT32F;
162 if (GLTexFormat ==
GL_R16)
163 GLTexFormat = GL_DEPTH_COMPONENT16;
172 static constexpr GLenum TexAddressModeToGLAddressModeMap[] =
191 return TexAddressModeToGLAddressModeMap[Mode];
197 static constexpr GLenum CompareFuncToGLCompareFuncMap[] =
212 return CompareFuncToGLCompareFuncMap[Func];
235 case GL_RGBA_INTEGER:
248 case GL_DEPTH_COMPONENT:
249 case GL_DEPTH_STENCIL:
252 default:
UNEXPECTED(
"Unknonw pixel format");
return 0;
261 case GL_FLOAT:
return sizeof(GLfloat);
264 case GL_UNSIGNED_INT_2_10_10_10_REV:
265 case GL_UNSIGNED_INT_10F_11F_11F_REV:
266 case GL_UNSIGNED_INT_24_8:
267 case GL_UNSIGNED_INT_5_9_9_9_REV:
268 case GL_UNSIGNED_INT:
return sizeof(GLuint);
270 case GL_INT:
return sizeof(GLint);
271 case GL_HALF_FLOAT:
return sizeof(GLhalf);
273 case GL_UNSIGNED_SHORT_5_6_5:
275 case GL_UNSIGNED_SHORT_5_5_5_1:
277 case GL_UNSIGNED_SHORT:
return sizeof(GLushort);
279 case GL_SHORT:
return sizeof(GLshort);
280 case GL_UNSIGNED_BYTE:
return sizeof(GLubyte);
281 case GL_BYTE:
return sizeof(GLbyte);
283 case GL_FLOAT_32_UNSIGNED_INT_24_8_REV:
return sizeof(GLfloat) +
sizeof(GLuint);
285 default:
UNEXPECTED(
"Unknonw pixel type" );
return 0;
293 static constexpr GLenum AccessFlags2GLAccessMap[] =
303 return AccessFlags2GLAccessMap[UAVAccessFlags];
309 static constexpr GLenum StencilOp2GlStencilOpMap[] =
324 return StencilOp2GlStencilOpMap[StencilOp];
330 static constexpr GLenum BlendFactor2GLBlendMap[] =
336 GL_ONE_MINUS_SRC_COLOR,
338 GL_ONE_MINUS_SRC_ALPHA,
340 GL_ONE_MINUS_DST_ALPHA,
342 GL_ONE_MINUS_DST_COLOR,
343 GL_SRC_ALPHA_SATURATE,
345 GL_ONE_MINUS_CONSTANT_COLOR,
354 return BlendFactor2GLBlendMap[bf];
360 static constexpr GLenum BlendOperation2GLBlendOpMap[] =
365 GL_FUNC_REVERSE_SUBTRACT,
372 return BlendOperation2GLBlendOpMap[BlendOp];
Definition: GLTypeConversions.hpp:215
GLenum StencilOp2GlStencilOp(STENCIL_OP StencilOp)
Definition: GLTypeConversions.hpp:306
@ USAGE_STAGING
A resource that facilitates transferring data between GPU and CPU. D3D11 Counterpart: D3D11_USAGE_S...
Definition: GraphicsTypes.h:167
UAV_ACCESS_FLAG
Describes allowed unordered access view mode.
Definition: TextureView.h:49
GLenum AccessFlags2GLAccess(UAV_ACCESS_FLAG UAVAccessFlags)
Definition: GLTypeConversions.hpp:290
WAVE_FEATURE
Describes the wave feature types. In Vulkan backend, you should check which features are supported by...
Definition: GraphicsTypes.h:1932
@ SHADER_TYPE_DOMAIN
Domain (tessellation evaluation) shader.
Definition: GraphicsTypes.h:72
#define GL_TESS_CONTROL_SHADER_BIT
Definition: GLStubsAndroid.h:232
SHADER_TYPE
Describes the shader type.
Definition: GraphicsTypes.h:65
TEXTURE_ADDRESS_MODE
Texture address mode.
Definition: GraphicsTypes.h:889
#define GL_R16
Definition: GLStubsAndroid.h:56
#define GL_TESS_EVALUATION_SHADER_BIT
Definition: GLStubsAndroid.h:236
void GLTextureTypeToResourceDim(GLenum TextureType, RESOURCE_DIMENSION &ResDim, bool &IsMS)
Definition: GLTypeConversions.cpp:566
NativePixelAttribs GetNativePixelTransferAttribs(TEXTURE_FORMAT TexFormat)
Definition: GLTypeConversions.cpp:262
#define GL_TESS_EVALUATION_SHADER
Definition: GLStubsAndroid.h:145
GLenum ShaderTypeToGLShaderBit(SHADER_TYPE ShaderType)
Definition: GLTypeConversions.hpp:400
#define GL_VERTEX_SHADER_BIT
Definition: GLStubsAndroid.h:220
FILTER_TYPE
Filter type.
Definition: GraphicsTypes.h:864
#define UNEXPECTED(...)
Definition: DebugUtilities.hpp:77
@ USAGE_UNIFIED
A resource residing in a unified memory (e.g. memory shared between CPU and GPU), that can be read an...
Definition: GraphicsTypes.h:179
#define GL_SRC1_COLOR
Definition: GLStubsAndroid.h:877
PRIMITIVE_TOPOLOGY
Input primitive topology.
Definition: GraphicsTypes.h:989
@ SHADER_TYPE_COMPUTE
Compute shader.
Definition: GraphicsTypes.h:73
Uint32 GetPixelTypeSize(GLenum Type)
Definition: GLTypeConversions.hpp:256
#define GL_ONE_MINUS_SRC1_ALPHA
Definition: GLStubsAndroid.h:893
#define GL_WRITE_ONLY
Definition: GLStubsAndroid.h:494
#define GL_COMPUTE_SHADER
Definition: GLStubsAndroid.h:502
@ USAGE_DYNAMIC
A resource that can be read by the GPU and written at least once per frame by the CPU....
Definition: GraphicsTypes.h:161
#define GL_TESS_CONTROL_SHADER
Definition: GLStubsAndroid.h:141
#define GL_UNSIGNED_SHORT_5_6_5_REV
Definition: GLStubsAndroid.h:120
WAVE_FEATURE GLSubgroupFeatureBitsToWaveFeatures(GLenum FeatureBits)
Definition: GLTypeConversions.cpp:732
GLenum PrimitiveTopologyToGLTopology(PRIMITIVE_TOPOLOGY PrimTopology)
Definition: GLTypeConversions.hpp:33
CPU_ACCESS_FLAGS CPUAccessFlags
CPU access flags or 0 if no CPU access is allowed, see Diligent::CPU_ACCESS_FLAGS for details.
Definition: Buffer.h:92
#define GL_READ_ONLY
Definition: GLStubsAndroid.h:490
NativePixelAttribs() noexcept
Definition: GLTypeConversions.hpp:221
Uint32 GetNumPixelFormatComponents(GLenum Format)
Definition: GLTypeConversions.hpp:230
#define GL_MIRROR_CLAMP_TO_EDGE
Definition: GLStubsAndroid.h:154
GLenum BlendOperation2GLBlendOp(BLEND_OPERATION BlendOp)
Definition: GLTypeConversions.hpp:357
void FilterTypeToGLFilterType(FILTER_TYPE Filter, GLenum &GLFilter, Bool &bIsAnisotropic, Bool &bIsComparison)
Definition: GLTypeConversions.hpp:100
BLEND_FACTOR
Blend factors.
Definition: BlendState.h:50
#define GL_ONE_MINUS_SRC1_COLOR
Definition: GLStubsAndroid.h:881
@ FILTER_TYPE_UNKNOWN
Unknown filter type.
Definition: GraphicsTypes.h:866
@ FILTER_TYPE_COMPARISON_LINEAR
Comparison-linear filtering.
Definition: GraphicsTypes.h:871
@ SHADER_TYPE_PIXEL
Pixel (fragment) shader.
Definition: GraphicsTypes.h:69
GLenum CompareFuncToGLCompareFunc(COMPARISON_FUNCTION Func)
Definition: GLTypeConversions.hpp:194
GLenum DataType
Definition: GLTypeConversions.hpp:218
VALUE_TYPE
Value type.
Definition: GraphicsTypes.h:49
@ FILTER_TYPE_POINT
Point filtering.
Definition: GraphicsTypes.h:867
GLenum BlendFactor2GLBlend(BLEND_FACTOR bf)
Definition: GLTypeConversions.hpp:327
GLenum TexFormatToGLInternalTexFormat(TEXTURE_FORMAT TexFormat, Uint32 BindFlags=0)
Definition: GLTypeConversions.cpp:183
D3D10_SB_OPERAND_NUM_COMPONENTS NumComponents
Definition: DXBCUtils.cpp:519
const D3D12_PIPELINE_STATE_SUBOBJECT_TYPE Type
Definition: PipelineStateD3D12Impl.cpp:69
uint32_t Uint32
32-bit unsigned integer
Definition: BasicTypes.h:51
GLenum TexAddressModeToGLAddressMode(TEXTURE_ADDRESS_MODE Mode)
Definition: GLTypeConversions.hpp:169
@ SHADER_TYPE_HULL
Hull (tessellation control) shader.
Definition: GraphicsTypes.h:71
bool Bool
Boolean.
Definition: BasicTypes.h:59
COMPARISON_FUNCTION
Comparison function.
Definition: GraphicsTypes.h:931
#define GL_COMPUTE_SHADER_BIT
Definition: GLStubsAndroid.h:240
@ SHADER_TYPE_GEOMETRY
Geometry shader.
Definition: GraphicsTypes.h:70
NativePixelAttribs(GLenum _PixelFormat, GLenum _DataType, Bool _IsCompressed=False) noexcept
Definition: GLTypeConversions.hpp:223
@ CPU_ACCESS_READ
A resource can be mapped for reading.
Definition: GraphicsTypes.h:194
GLenum TypeToGLType(VALUE_TYPE Value)
Definition: GLTypeConversions.hpp:51
@ FILTER_TYPE_ANISOTROPIC
Anisotropic filtering.
Definition: GraphicsTypes.h:869
#define GL_UNSIGNED_SHORT_1_5_5_5_REV
Definition: GLStubsAndroid.h:132
TEXTURE_FORMAT
Texture formats.
Definition: GraphicsTypes.h:328
GLenum TypeToGLTexFormat(VALUE_TYPE ValType, Uint32 NumComponents, Bool bIsNormalized)
Definition: GLTypeConversions.cpp:410
#define GL_READ_WRITE
Definition: GLStubsAndroid.h:498
Buffer description.
Definition: Buffer.h:74
#define GL_CLAMP_TO_BORDER
Definition: GLStubsAndroid.h:150
GLenum GetGLShaderType(SHADER_TYPE ShaderType)
Definition: GLTypeConversions.hpp:384
STENCIL_OP
Stencil operation.
Definition: DepthStencilState.h:48
@ SHADER_TYPE_VERTEX
Vertex shader.
Definition: GraphicsTypes.h:68
@ BIND_DEPTH_STENCIL
A texture can be bound as a depth-stencil target.
Definition: GraphicsTypes.h:126
#define GL_GEOMETRY_SHADER
Definition: GLStubsAndroid.h:137
@ FILTER_TYPE_LINEAR
Linear filtering.
Definition: GraphicsTypes.h:868
@ FILTER_TYPE_COMPARISON_ANISOTROPIC
Comparison-anisotropic filtering.
Definition: GraphicsTypes.h:872
#define GL_FRAGMENT_SHADER_BIT
Definition: GLStubsAndroid.h:224
#define VERIFY_EXPR(...)
Definition: DebugUtilities.hpp:79
BLEND_OPERATION
Blending operation.
Definition: BlendState.h:138
#define GL_GEOMETRY_SHADER_BIT
Definition: GLStubsAndroid.h:228
TEXTURE_FORMAT GLInternalTexFormatToTexFormat(GLenum GlFormat)
Definition: GLTypeConversions.cpp:256
USAGE Usage
Buffer usage, see Diligent::USAGE for details.
Definition: Buffer.h:88
@ USAGE_NUM_USAGES
Helper value indicating the total number of elements in the enum.
Definition: GraphicsTypes.h:182
GLenum UsageToGLUsage(const BufferDesc &Desc)
Definition: GLTypeConversions.hpp:72
@ FILTER_TYPE_COMPARISON_POINT
Comparison-point filtering.
Definition: GraphicsTypes.h:870
RESOURCE_DIMENSION
Describes resource dimension.
Definition: GraphicsTypes.h:256
SHADER_TYPE GLShaderBitsToShaderTypes(GLenum ShaderBits)
Definition: GLTypeConversions.cpp:711
Uint16 ShaderType
Definition: DXBCUtils.cpp:70
GLenum CorrectGLTexFormat(GLenum GLTexFormat, Uint32 BindFlags)
Definition: GLTypeConversions.hpp:156
@ USAGE_IMMUTABLE
A resource that can only be read by the GPU. It cannot be written by the GPU, and cannot be accessed ...
Definition: GraphicsTypes.h:150
#define GL_SRC1_ALPHA
Definition: GLStubsAndroid.h:889
Bool IsCompressed
Definition: GLTypeConversions.hpp:219
The library uses Direct3D-style math:
Definition: AdvancedMath.hpp:37
@ USAGE_DEFAULT
A resource that requires read and write access by the GPU and can also be occasionally written by the...
Definition: GraphicsTypes.h:156
#define GL_UNSIGNED_INT_10_10_10_2
Definition: GLStubsAndroid.h:124
GLenum PixelFormat
Definition: GLTypeConversions.hpp:217