mirror of
https://github.com/yuzu-emu/yuzu.git
synced 2024-07-04 23:31:19 +01:00
vk_device: Shrink formatless capability name size
This commit is contained in:
parent
ae6189d7c2
commit
c320702092
3 changed files with 23 additions and 26 deletions
|
@ -107,8 +107,7 @@ bool VKDevice::Create(const vk::DispatchLoaderDynamic& dldi, vk::Instance instan
|
||||||
features.occlusionQueryPrecise = true;
|
features.occlusionQueryPrecise = true;
|
||||||
features.fragmentStoresAndAtomics = true;
|
features.fragmentStoresAndAtomics = true;
|
||||||
features.shaderImageGatherExtended = true;
|
features.shaderImageGatherExtended = true;
|
||||||
features.shaderStorageImageReadWithoutFormat =
|
features.shaderStorageImageReadWithoutFormat = is_formatless_image_load_supported;
|
||||||
is_shader_storage_img_read_without_format_supported;
|
|
||||||
features.shaderStorageImageWriteWithoutFormat = true;
|
features.shaderStorageImageWriteWithoutFormat = true;
|
||||||
features.textureCompressionASTC_LDR = is_optimal_astc_supported;
|
features.textureCompressionASTC_LDR = is_optimal_astc_supported;
|
||||||
|
|
||||||
|
@ -467,8 +466,7 @@ void VKDevice::SetupFamilies(const vk::DispatchLoaderDynamic& dldi, vk::SurfaceK
|
||||||
|
|
||||||
void VKDevice::SetupFeatures(const vk::DispatchLoaderDynamic& dldi) {
|
void VKDevice::SetupFeatures(const vk::DispatchLoaderDynamic& dldi) {
|
||||||
const auto supported_features{physical.getFeatures(dldi)};
|
const auto supported_features{physical.getFeatures(dldi)};
|
||||||
is_shader_storage_img_read_without_format_supported =
|
is_formatless_image_load_supported = supported_features.shaderStorageImageReadWithoutFormat;
|
||||||
supported_features.shaderStorageImageReadWithoutFormat;
|
|
||||||
is_optimal_astc_supported = IsOptimalAstcSupported(supported_features, dldi);
|
is_optimal_astc_supported = IsOptimalAstcSupported(supported_features, dldi);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -122,11 +122,6 @@ public:
|
||||||
return properties.limits.maxPushConstantsSize;
|
return properties.limits.maxPushConstantsSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Returns true if Shader storage Image Read Without Format supported.
|
|
||||||
bool IsShaderStorageImageReadWithoutFormatSupported() const {
|
|
||||||
return is_shader_storage_img_read_without_format_supported;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Returns true if ASTC is natively supported.
|
/// Returns true if ASTC is natively supported.
|
||||||
bool IsOptimalAstcSupported() const {
|
bool IsOptimalAstcSupported() const {
|
||||||
return is_optimal_astc_supported;
|
return is_optimal_astc_supported;
|
||||||
|
@ -147,6 +142,11 @@ public:
|
||||||
return (guest_warp_stages & stage) != vk::ShaderStageFlags{};
|
return (guest_warp_stages & stage) != vk::ShaderStageFlags{};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Returns true if formatless image load is supported.
|
||||||
|
bool IsFormatlessImageLoadSupported() const {
|
||||||
|
return is_formatless_image_load_supported;
|
||||||
|
}
|
||||||
|
|
||||||
/// Returns true if the device supports VK_EXT_scalar_block_layout.
|
/// Returns true if the device supports VK_EXT_scalar_block_layout.
|
||||||
bool IsKhrUniformBufferStandardLayoutSupported() const {
|
bool IsKhrUniformBufferStandardLayoutSupported() const {
|
||||||
return khr_uniform_buffer_standard_layout;
|
return khr_uniform_buffer_standard_layout;
|
||||||
|
@ -214,26 +214,25 @@ private:
|
||||||
static std::unordered_map<vk::Format, vk::FormatProperties> GetFormatProperties(
|
static std::unordered_map<vk::Format, vk::FormatProperties> GetFormatProperties(
|
||||||
const vk::DispatchLoaderDynamic& dldi, vk::PhysicalDevice physical);
|
const vk::DispatchLoaderDynamic& dldi, vk::PhysicalDevice physical);
|
||||||
|
|
||||||
const vk::PhysicalDevice physical; ///< Physical device.
|
const vk::PhysicalDevice physical; ///< Physical device.
|
||||||
vk::DispatchLoaderDynamic dld; ///< Device function pointers.
|
vk::DispatchLoaderDynamic dld; ///< Device function pointers.
|
||||||
vk::PhysicalDeviceProperties properties; ///< Device properties.
|
vk::PhysicalDeviceProperties properties; ///< Device properties.
|
||||||
UniqueDevice logical; ///< Logical device.
|
UniqueDevice logical; ///< Logical device.
|
||||||
vk::Queue graphics_queue; ///< Main graphics queue.
|
vk::Queue graphics_queue; ///< Main graphics queue.
|
||||||
vk::Queue present_queue; ///< Main present queue.
|
vk::Queue present_queue; ///< Main present queue.
|
||||||
u32 graphics_family{}; ///< Main graphics queue family index.
|
u32 graphics_family{}; ///< Main graphics queue family index.
|
||||||
u32 present_family{}; ///< Main present queue family index.
|
u32 present_family{}; ///< Main present queue family index.
|
||||||
vk::DriverIdKHR driver_id{}; ///< Driver ID.
|
vk::DriverIdKHR driver_id{}; ///< Driver ID.
|
||||||
vk::ShaderStageFlags guest_warp_stages{}; ///< Stages where the guest warp size can be forced.
|
vk::ShaderStageFlags guest_warp_stages{}; ///< Stages where the guest warp size can be forced.ed
|
||||||
bool is_optimal_astc_supported{}; ///< Support for native ASTC.
|
bool is_optimal_astc_supported{}; ///< Support for native ASTC.
|
||||||
bool is_float16_supported{}; ///< Support for float16 arithmetics.
|
bool is_float16_supported{}; ///< Support for float16 arithmetics.
|
||||||
bool is_warp_potentially_bigger{}; ///< Host warp size can be bigger than guest.
|
bool is_warp_potentially_bigger{}; ///< Host warp size can be bigger than guest.
|
||||||
|
bool is_formatless_image_load_supported{}; ///< Support for shader image read without format.
|
||||||
bool khr_uniform_buffer_standard_layout{}; ///< Support for std430 on UBOs.
|
bool khr_uniform_buffer_standard_layout{}; ///< Support for std430 on UBOs.
|
||||||
bool ext_index_type_uint8{}; ///< Support for VK_EXT_index_type_uint8.
|
bool ext_index_type_uint8{}; ///< Support for VK_EXT_index_type_uint8.
|
||||||
bool ext_depth_range_unrestricted{}; ///< Support for VK_EXT_depth_range_unrestricted.
|
bool ext_depth_range_unrestricted{}; ///< Support for VK_EXT_depth_range_unrestricted.
|
||||||
bool ext_shader_viewport_index_layer{}; ///< Support for VK_EXT_shader_viewport_index_layer.
|
bool ext_shader_viewport_index_layer{}; ///< Support for VK_EXT_shader_viewport_index_layer.
|
||||||
bool nv_device_diagnostic_checkpoints{}; ///< Support for VK_NV_device_diagnostic_checkpoints.
|
bool nv_device_diagnostic_checkpoints{}; ///< Support for VK_NV_device_diagnostic_checkpoints.
|
||||||
bool is_shader_storage_img_read_without_format_supported{}; ///< Support for shader storage
|
|
||||||
///< image read without format
|
|
||||||
|
|
||||||
// Telemetry parameters
|
// Telemetry parameters
|
||||||
std::string vendor_name; ///< Device's driver name.
|
std::string vendor_name; ///< Device's driver name.
|
||||||
|
|
|
@ -298,7 +298,7 @@ public:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (device.IsShaderStorageImageReadWithoutFormatSupported()) {
|
if (device.IsFormatlessImageLoadSupported()) {
|
||||||
AddCapability(spv::Capability::StorageImageReadWithoutFormat);
|
AddCapability(spv::Capability::StorageImageReadWithoutFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1800,7 +1800,7 @@ private:
|
||||||
}
|
}
|
||||||
|
|
||||||
Expression ImageLoad(Operation operation) {
|
Expression ImageLoad(Operation operation) {
|
||||||
if (!device.IsShaderStorageImageReadWithoutFormatSupported()) {
|
if (!device.IsFormatlessImageLoadSupported()) {
|
||||||
return {v_float_zero, Type::Float};
|
return {v_float_zero, Type::Float};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue