mirror of
https://github.com/skyline-emu/skyline.git
synced 2025-01-13 22:57:57 +03:00
Enable adreno/mali LLVM misopt workaround
Fixes animal crossing character issues, see shader compiler commit for details.
This commit is contained in:
parent
737fb2207d
commit
7bfe63f679
@ -1 +1 @@
|
|||||||
Subproject commit 23a83bfdb4cff9c16694b7803a66063f41f306c5
|
Subproject commit 312e14b2c334502e7453ab200042ae688a66e3b1
|
@ -126,7 +126,8 @@ namespace skyline::gpu {
|
|||||||
.has_broken_spirv_subgroup_mask_vector_extract_dynamic = traits.quirks.brokenSubgroupMaskExtractDynamic,
|
.has_broken_spirv_subgroup_mask_vector_extract_dynamic = traits.quirks.brokenSubgroupMaskExtractDynamic,
|
||||||
.has_broken_spirv_subgroup_shuffle = traits.quirks.brokenSubgroupShuffle,
|
.has_broken_spirv_subgroup_shuffle = traits.quirks.brokenSubgroupShuffle,
|
||||||
.max_subgroup_size = traits.subgroupSize,
|
.max_subgroup_size = traits.subgroupSize,
|
||||||
.disable_subgroup_shuffle = *state.settings->disableSubgroupShuffle
|
.has_broken_spirv_vector_access_chain = traits.quirks.brokenSpirvVectorAccessChain,
|
||||||
|
.disable_subgroup_shuffle = *state.settings->disableSubgroupShuffle,
|
||||||
};
|
};
|
||||||
|
|
||||||
Shader::Settings::values = {
|
Shader::Settings::values = {
|
||||||
|
@ -237,6 +237,7 @@ namespace skyline::gpu {
|
|||||||
relaxedRenderPassCompatibility = true; // Adreno drivers support relaxed render pass compatibility rules
|
relaxedRenderPassCompatibility = true; // Adreno drivers support relaxed render pass compatibility rules
|
||||||
brokenPushDescriptors = true;
|
brokenPushDescriptors = true;
|
||||||
brokenSpirvPositionInput = true;
|
brokenSpirvPositionInput = true;
|
||||||
|
brokenSpirvAccessChainOpt = true;
|
||||||
|
|
||||||
if (deviceProperties.driverVersion < VK_MAKE_VERSION(512, 600, 0))
|
if (deviceProperties.driverVersion < VK_MAKE_VERSION(512, 600, 0))
|
||||||
maxSubpassCount = 64; // Driver will segfault while destroying the renderpass and associated objects if this is exceeded on all 5xx and below drivers
|
maxSubpassCount = 64; // Driver will segfault while destroying the renderpass and associated objects if this is exceeded on all 5xx and below drivers
|
||||||
@ -248,6 +249,7 @@ namespace skyline::gpu {
|
|||||||
brokenSubgroupMaskExtractDynamic = true;
|
brokenSubgroupMaskExtractDynamic = true;
|
||||||
|
|
||||||
brokenSubgroupShuffle = true;
|
brokenSubgroupShuffle = true;
|
||||||
|
brokenSpirvVectorAccessChain = true;
|
||||||
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
|
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -262,6 +264,7 @@ namespace skyline::gpu {
|
|||||||
if (deviceProperties.driverVersion < VK_MAKE_VERSION(42, 0, 0))
|
if (deviceProperties.driverVersion < VK_MAKE_VERSION(42, 0, 0))
|
||||||
brokenDynamicStateVertexBindings = true;
|
brokenDynamicStateVertexBindings = true;
|
||||||
|
|
||||||
|
brokenSpirvAccessChainOpt = true;
|
||||||
vkImageMutableFormatCostly = true; // Disables AFBC in some cases
|
vkImageMutableFormatCostly = true; // Disables AFBC in some cases
|
||||||
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
|
maxGlobalPriority = vk::QueueGlobalPriorityEXT::eHigh;
|
||||||
break;
|
break;
|
||||||
|
@ -73,10 +73,12 @@ namespace skyline::gpu {
|
|||||||
bool relaxedRenderPassCompatibility{}; //!< [Adreno Proprietary/Freedreno] A relaxed version of Vulkan specification's render pass compatibility clause which allows for caching pipeline objects for multi-subpass renderpasses, this is intentionally disabled by default as it requires testing prior to enabling
|
bool relaxedRenderPassCompatibility{}; //!< [Adreno Proprietary/Freedreno] A relaxed version of Vulkan specification's render pass compatibility clause which allows for caching pipeline objects for multi-subpass renderpasses, this is intentionally disabled by default as it requires testing prior to enabling
|
||||||
bool brokenPushDescriptors{}; //!< [Adreno Proprietary] A bug that causes push descriptor updates to ignored by the driver in certain situations
|
bool brokenPushDescriptors{}; //!< [Adreno Proprietary] A bug that causes push descriptor updates to ignored by the driver in certain situations
|
||||||
bool brokenSpirvPositionInput{}; //!< [Adreno Proprietary] A bug that causes the shader compiler to fail on shaders with vertex position inputs not contained within a struct
|
bool brokenSpirvPositionInput{}; //!< [Adreno Proprietary] A bug that causes the shader compiler to fail on shaders with vertex position inputs not contained within a struct
|
||||||
|
bool brokenSpirvAccessChainOpt{}; //!< [Adreno Proprietary] A broken optimisation pass causes dynamic access chain offsets to break
|
||||||
bool brokenComputeShaders{}; //!< [ARM Proprietary] A bug that causes compute shaders in some games to crash the GPU
|
bool brokenComputeShaders{}; //!< [ARM Proprietary] A bug that causes compute shaders in some games to crash the GPU
|
||||||
bool brokenMultithreadedPipelineCompilation{}; //!< [Qualcomm Proprietary] A bug that causes the shader compiler to crash when compiling pipelines on multiple threads simultaneously
|
bool brokenMultithreadedPipelineCompilation{}; //!< [Qualcomm Proprietary] A bug that causes the shader compiler to crash when compiling pipelines on multiple threads simultaneously
|
||||||
bool brokenSubgroupMaskExtractDynamic{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpVectorExtractDynamic on the subgroup mask builtins to fail to compile
|
bool brokenSubgroupMaskExtractDynamic{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpVectorExtractDynamic on the subgroup mask builtins to fail to compile
|
||||||
bool brokenSubgroupShuffle{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpSubgroupShuffle to do all sorts of weird things
|
bool brokenSubgroupShuffle{}; //!< [Qualcomm Proprietary] A bug that causes shaders using OpSubgroupShuffle to do all sorts of weird things
|
||||||
|
bool brokenSpirvVectorAccessChain{}; //!< [Qualcomm Proprietary] A bug that causes SPIR-V OpAccessChains to work incorrectly when used to index vector arrays
|
||||||
bool brokenDynamicStateVertexBindings{}; //!< [ARM Proprietary] A bug that causes VK_EXT_dynamic_state vertex bindings not to work correctly
|
bool brokenDynamicStateVertexBindings{}; //!< [ARM Proprietary] A bug that causes VK_EXT_dynamic_state vertex bindings not to work correctly
|
||||||
|
|
||||||
u32 maxSubpassCount{std::numeric_limits<u32>::max()}; //!< The maximum amount of subpasses within a renderpass, this is limited to 64 on older Adreno proprietary drivers
|
u32 maxSubpassCount{std::numeric_limits<u32>::max()}; //!< The maximum amount of subpasses within a renderpass, this is limited to 64 on older Adreno proprietary drivers
|
||||||
|
Loading…
x
Reference in New Issue
Block a user