diff options
| author | assiduous <assiduous@diligentgraphics.com> | 2020-10-03 05:30:39 +0000 |
|---|---|---|
| committer | assiduous <assiduous@diligentgraphics.com> | 2020-10-03 05:30:39 +0000 |
| commit | c95666ae93af624f671fd80cc9b2c8e65bc61c61 (patch) | |
| tree | 20c17ea9dc05687259e67f10c02b5b2afd0fd80b /Graphics/GraphicsEngineOpenGL | |
| parent | Improved 16-bit feature detection in D3D11 and D3D12 (diff) | |
| download | DiligentCore-c95666ae93af624f671fd80cc9b2c8e65bc61c61.tar.gz DiligentCore-c95666ae93af624f671fd80cc9b2c8e65bc61c61.zip | |
Enabled detection of 16-bit float shader support in GL/GLES
Diffstat (limited to 'Graphics/GraphicsEngineOpenGL')
| -rw-r--r-- | Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp index de01513f..49b930e3 100644 --- a/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp +++ b/Graphics/GraphicsEngineOpenGL/src/RenderDeviceGLImpl.cpp @@ -359,6 +359,11 @@ RenderDeviceGLImpl::RenderDeviceGLImpl(IReferenceCounters* pRefCounters, SET_FEATURE_STATE(MultiViewport, IsGL41OrAbove || CheckExtension("GL_ARB_viewport_array"), "Multi viewport is"); SET_FEATURE_STATE(PixelUAVWritesAndAtomics, IsGL42OrAbove || CheckExtension("GL_ARB_shader_image_load_store"), "Pixel UAV writes and atomics are"); SET_FEATURE_STATE(TextureUAVExtendedFormats, false, "Texture UAV extended formats are"); + + SET_FEATURE_STATE(ShaderFloat16, CheckExtension("GL_EXT_shader_explicit_arithmetic_types_float16"), "16-bit float shader operations are"); + SET_FEATURE_STATE(ResourceBuffer16BitAccess, CheckExtension("GL_EXT_shader_16bit_storage"), "16-bit resoure buffer access is"); + SET_FEATURE_STATE(UniformBuffer16BitAccess, CheckExtension("GL_EXT_shader_16bit_storage"), "16-bit uniform buffer access is"); + SET_FEATURE_STATE(ShaderInputOutput16, false, "16-bit shader inputs/outputs are"); // clang-format on TexCaps.MaxTexture1DDimension = MaxTextureSize; @@ -413,6 +418,11 @@ RenderDeviceGLImpl::RenderDeviceGLImpl(IReferenceCounters* pRefCounters, SET_FEATURE_STATE(MultiViewport, strstr(Extensions, "viewport_array"), "Multi viewport"); SET_FEATURE_STATE(PixelUAVWritesAndAtomics, IsGLES31OrAbove || strstr(Extensions, "shader_image_load_store"), "Pixel UAV writes and atomics"); SET_FEATURE_STATE(TextureUAVExtendedFormats, false, "Texture UAV extended formats"); + + SET_FEATURE_STATE(ShaderFloat16, strstr(Extensions, "shader_explicit_arithmetic_types_float16"), "16-bit float shader operations are"); + SET_FEATURE_STATE(ResourceBuffer16BitAccess, strstr(Extensions, "shader_16bit_storage"), "16-bit resoure buffer access is"); + SET_FEATURE_STATE(UniformBuffer16BitAccess, strstr(Extensions, "shader_16bit_storage"), "16-bit uniform buffer access is"); + SET_FEATURE_STATE(ShaderInputOutput16, false, "16-bit shader inputs/outputs are"); // clang-format on TexCaps.MaxTexture1DDimension = 0; // Not supported in GLES 3.2 @@ -438,6 +448,10 @@ RenderDeviceGLImpl::RenderDeviceGLImpl(IReferenceCounters* pRefCounters, SET_FEATURE_STATE(TextureCompressionBC, bRGTC && bBPTC && bS3TC, "BC texture compression is"); #undef SET_FEATURE_STATE + +#if defined(_MSC_VER) && defined(_WIN64) + static_assert(sizeof(DeviceFeatures) == 27, "Did you add a new feature to DeviceFeatures? Please handle its satus here."); +#endif } RenderDeviceGLImpl::~RenderDeviceGLImpl() |
