[vk, gl, spv] Opcode Promotion path emulation

This commit is contained in:
CamilleLaVey 2025-11-29 14:06:18 -04:00 committed by Caio Oliveira
parent 4cc99b9ff5
commit 178a0ce571
11 changed files with 391 additions and 75 deletions

View file

@ -440,6 +440,9 @@ Device::Device(VkInstance instance_, vk::PhysicalDevice physical_, VkSurfaceKHR
const bool is_turnip = driver_id == VK_DRIVER_ID_MESA_TURNIP;
const bool is_arm = driver_id == VK_DRIVER_ID_ARM_PROPRIETARY;
// Qualcomm hardware (both proprietary and Turnip drivers) rejects Sampled1D capability.
supports_sampled_1d = !(is_qualcomm || is_turnip);
if (!is_suitable)
LOG_WARNING(Render_Vulkan, "Unsuitable driver - continuing anyways");

View file

@ -881,6 +881,10 @@ public:
return features2.features.multiViewport;
}
bool SupportsSampled1D() const {
return supports_sampled_1d;
}
/// Returns true if the device supports VK_KHR_maintenance1.
bool IsKhrMaintenance1Supported() const {
return extensions.maintenance1;
@ -1108,6 +1112,7 @@ private:
bool dynamic_state3_alpha_to_coverage{};
bool dynamic_state3_alpha_to_one{};
bool supports_conditional_barriers{}; ///< Allows barriers in conditional control flow.
bool supports_sampled_1d{true}; ///< Supports declaring Sampled1D in shaders.
size_t sampler_heap_budget{}; ///< Sampler budget for buggy drivers (0 = unlimited).
VkDeviceSize uniform_buffer_alignment_minimum{}; ///< Minimum enforced UBO alignment.
VkDeviceSize storage_buffer_alignment_minimum{}; ///< Minimum enforced SSBO alignment.