|
|
|
@ -122,11 +122,6 @@ public: |
|
|
|
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. |
|
|
|
bool IsOptimalAstcSupported() const { |
|
|
|
return is_optimal_astc_supported; |
|
|
|
@ -147,6 +142,11 @@ public: |
|
|
|
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. |
|
|
|
bool IsKhrUniformBufferStandardLayoutSupported() const { |
|
|
|
return khr_uniform_buffer_standard_layout; |
|
|
|
@ -214,26 +214,25 @@ private: |
|
|
|
static std::unordered_map<vk::Format, vk::FormatProperties> GetFormatProperties( |
|
|
|
const vk::DispatchLoaderDynamic& dldi, vk::PhysicalDevice physical); |
|
|
|
|
|
|
|
const vk::PhysicalDevice physical; ///< Physical device. |
|
|
|
vk::DispatchLoaderDynamic dld; ///< Device function pointers. |
|
|
|
vk::PhysicalDeviceProperties properties; ///< Device properties. |
|
|
|
UniqueDevice logical; ///< Logical device. |
|
|
|
vk::Queue graphics_queue; ///< Main graphics queue. |
|
|
|
vk::Queue present_queue; ///< Main present queue. |
|
|
|
u32 graphics_family{}; ///< Main graphics queue family index. |
|
|
|
u32 present_family{}; ///< Main present queue family index. |
|
|
|
vk::DriverIdKHR driver_id{}; ///< Driver ID. |
|
|
|
vk::ShaderStageFlags guest_warp_stages{}; ///< Stages where the guest warp size can be forced. |
|
|
|
bool is_optimal_astc_supported{}; ///< Support for native ASTC. |
|
|
|
bool is_float16_supported{}; ///< Support for float16 arithmetics. |
|
|
|
bool is_warp_potentially_bigger{}; ///< Host warp size can be bigger than guest. |
|
|
|
const vk::PhysicalDevice physical; ///< Physical device. |
|
|
|
vk::DispatchLoaderDynamic dld; ///< Device function pointers. |
|
|
|
vk::PhysicalDeviceProperties properties; ///< Device properties. |
|
|
|
UniqueDevice logical; ///< Logical device. |
|
|
|
vk::Queue graphics_queue; ///< Main graphics queue. |
|
|
|
vk::Queue present_queue; ///< Main present queue. |
|
|
|
u32 graphics_family{}; ///< Main graphics queue family index. |
|
|
|
u32 present_family{}; ///< Main present queue family index. |
|
|
|
vk::DriverIdKHR driver_id{}; ///< Driver ID. |
|
|
|
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_float16_supported{}; ///< Support for float16 arithmetics. |
|
|
|
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 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_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 is_shader_storage_img_read_without_format_supported{}; ///< Support for shader storage |
|
|
|
///< image read without format |
|
|
|
|
|
|
|
// Telemetry parameters |
|
|
|
std::string vendor_name; ///< Device's driver name. |
|
|
|
|