vulkan: Conditionally use shaderInt16

Add support for Polaris AMD devices.
This commit is contained in:
ReinUsesLisp 2021-05-30 20:44:28 -03:00 committed by ameerj
parent 77372443c3
commit 1148a4eac7
3 changed files with 9 additions and 2 deletions

View File

@ -249,7 +249,7 @@ PipelineCache::PipelineCache(RasterizerVulkan& rasterizer_, Tegra::Engines::Maxw
.unified_descriptor_binding = true, .unified_descriptor_binding = true,
.support_descriptor_aliasing = true, .support_descriptor_aliasing = true,
.support_int8 = true, .support_int8 = true,
.support_int16 = true, .support_int16 = device.IsShaderInt16Supported(),
.support_vertex_instance_id = false, .support_vertex_instance_id = false,
.support_float_controls = true, .support_float_controls = true,
.support_separate_denorm_behavior = float_control.denormBehaviorIndependence == .support_separate_denorm_behavior = float_control.denormBehaviorIndependence ==

View File

@ -253,7 +253,7 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
.shaderCullDistance = true, .shaderCullDistance = true,
.shaderFloat64 = is_shader_float64_supported, .shaderFloat64 = is_shader_float64_supported,
.shaderInt64 = is_shader_int64_supported, .shaderInt64 = is_shader_int64_supported,
.shaderInt16 = true, .shaderInt16 = is_shader_int16_supported,
.shaderResourceResidency = false, .shaderResourceResidency = false,
.shaderResourceMinLod = false, .shaderResourceMinLod = false,
.sparseBinding = false, .sparseBinding = false,
@ -912,6 +912,7 @@ void Device::SetupFeatures() {
is_formatless_image_load_supported = features.shaderStorageImageReadWithoutFormat; is_formatless_image_load_supported = features.shaderStorageImageReadWithoutFormat;
is_shader_float64_supported = features.shaderFloat64; is_shader_float64_supported = features.shaderFloat64;
is_shader_int64_supported = features.shaderInt64; is_shader_int64_supported = features.shaderInt64;
is_shader_int16_supported = features.shaderInt16;
is_shader_storage_image_multisample = features.shaderStorageImageMultisample; is_shader_storage_image_multisample = features.shaderStorageImageMultisample;
is_blit_depth_stencil_supported = TestDepthStencilBlits(); is_blit_depth_stencil_supported = TestDepthStencilBlits();
is_optimal_astc_supported = IsOptimalAstcSupported(features); is_optimal_astc_supported = IsOptimalAstcSupported(features);

View File

@ -159,6 +159,11 @@ public:
return is_formatless_image_load_supported; return is_formatless_image_load_supported;
} }
/// Returns true if shader int16 is supported.
bool IsShaderInt16Supported() const {
return is_shader_int16_supported;
}
// Returns true if depth bounds is supported. // Returns true if depth bounds is supported.
bool IsDepthBoundsSupported() const { bool IsDepthBoundsSupported() const {
return is_depth_bounds_supported; return is_depth_bounds_supported;
@ -322,6 +327,7 @@ private:
bool is_depth_bounds_supported{}; ///< Support for depth bounds. bool is_depth_bounds_supported{}; ///< Support for depth bounds.
bool is_shader_float64_supported{}; ///< Support for float64. bool is_shader_float64_supported{}; ///< Support for float64.
bool is_shader_int64_supported{}; ///< Support for int64. bool is_shader_int64_supported{}; ///< Support for int64.
bool is_shader_int16_supported{}; ///< Support for int16.
bool is_shader_storage_image_multisample{}; ///< Support for image operations on MSAA images. bool is_shader_storage_image_multisample{}; ///< Support for image operations on MSAA images.
bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil. bool is_blit_depth_stencil_supported{}; ///< Support for blitting from and to depth stencil.
bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle. bool nv_viewport_swizzle{}; ///< Support for VK_NV_viewport_swizzle.