mirror of
https://github.com/skyline-emu/skyline.git
synced 2024-12-29 18:25:28 +03:00
Disable descriptor aliasing on Adreno to workaround shader compiler bug
Alised descriptor sets are incorrectly interpreted by the shader compiler causing it to bugger up LLVM function argument types and crash Co-authored-by: PixelyIon <pixelyion@protonmail.com>
This commit is contained in:
parent
fc2c123ae2
commit
fae5332f20
@ -35,7 +35,7 @@ namespace skyline::gpu {
|
|||||||
profile = Shader::Profile{
|
profile = Shader::Profile{
|
||||||
.supported_spirv = traits.supportsSpirv14 ? 0x00010400U : 0x00010000U,
|
.supported_spirv = traits.supportsSpirv14 ? 0x00010400U : 0x00010000U,
|
||||||
.unified_descriptor_binding = true,
|
.unified_descriptor_binding = true,
|
||||||
.support_descriptor_aliasing = true,
|
.support_descriptor_aliasing = !traits.quirks.brokenDescriptorAliasing,
|
||||||
.support_int8 = traits.supportsInt8,
|
.support_int8 = traits.supportsInt8,
|
||||||
.support_int16 = traits.supportsInt16,
|
.support_int16 = traits.supportsInt16,
|
||||||
.support_int64 = traits.supportsInt64,
|
.support_int64 = traits.supportsInt64,
|
||||||
|
@ -132,6 +132,7 @@ namespace skyline::gpu {
|
|||||||
case vk::DriverId::eQualcommProprietary: {
|
case vk::DriverId::eQualcommProprietary: {
|
||||||
needsIndividualTextureBindingWrites = true;
|
needsIndividualTextureBindingWrites = true;
|
||||||
vkImageMutableFormatCostly = true; // Disables UBWC
|
vkImageMutableFormatCostly = true; // Disables UBWC
|
||||||
|
brokenDescriptorAliasing = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ namespace skyline::gpu {
|
|||||||
struct QuirkManager {
|
struct QuirkManager {
|
||||||
bool needsIndividualTextureBindingWrites{}; //!< [Adreno Proprietary] A bug that requires descriptor set writes for VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be done individually with descriptorCount = 1 rather than batched
|
bool needsIndividualTextureBindingWrites{}; //!< [Adreno Proprietary] A bug that requires descriptor set writes for VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER to be done individually with descriptorCount = 1 rather than batched
|
||||||
bool vkImageMutableFormatCostly{}; //!< [Adreno Proprietary/Freedreno] An indication that VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT is costly and should not be enabled unless absolutely necessary (Disables UBWC on Adreno GPUs)
|
bool vkImageMutableFormatCostly{}; //!< [Adreno Proprietary/Freedreno] An indication that VK_IMAGE_CREATE_MUTABLE_FORMAT_BIT is costly and should not be enabled unless absolutely necessary (Disables UBWC on Adreno GPUs)
|
||||||
|
bool brokenDescriptorAliasing{}; //!< [Adreno Proprietary] A bug that causes alised descriptor sets to be incorrectly interpreted by the shader compiler leading to it buggering up LLVM function argument types and crashing
|
||||||
|
|
||||||
QuirkManager() = default;
|
QuirkManager() = default;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user