-
Notifications
You must be signed in to change notification settings - Fork 205
ppsspp: bump SA+LR to v1.20.2, default RK3566 to Vulkan backend #2406
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,10 @@ | ||
| --- a/CMakeLists.txt | ||
| +++ b/CMakeLists.txt | ||
| @@ -395,6 +395,7 @@ | ||
| @@ -413,6 +413,7 @@ | ||
| # NEON optimizations in libpng17 seem to cause PNG load errors, see #14485. | ||
| add_compile_definitions(PNG_ARM_NEON_OPT=0) | ||
|
|
||
| + add_compile_options(-Ofast -fno-tree-slp-vectorize) | ||
| add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable) | ||
| add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types) | ||
| if(NOT CLANG) | ||
| # This one is very useful but has many false positives. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -1,10 +1,10 @@ | ||
| --- a/CMakeLists.txt | ||
| +++ b/CMakeLists.txt | ||
| @@ -396,6 +396,7 @@ | ||
| @@ -414,6 +414,7 @@ | ||
| add_compile_definitions(PNG_ARM_NEON_OPT=0) | ||
|
|
||
| add_compile_options(-Ofast -fno-tree-slp-vectorize) | ||
| + add_compile_options(-mno-outline-atomics) | ||
| add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable) | ||
| add_compile_options(-Wall -Werror=return-type -Wno-unused-function -Wno-sign-compare -Wno-unused-but-set-variable "$<$<COMPILE_LANGUAGE:CXX>:-Wno-reorder>" -Wno-unknown-pragmas -Wno-unused-value -Wno-unused-variable -Wno-error=incompatible-pointer-types) | ||
| if(NOT CLANG) | ||
| # This one is very useful but has many false positives. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,45 @@ | ||
| --- a/libretro/libretro_vulkan.cpp | ||
| +++ b/libretro/libretro_vulkan.cpp | ||
| @@ -109,27 +109,34 @@ static VKAPI_ATTR VkResult VKAPI_CALL vkCreateDevice_libretro(VkPhysicalDevice p | ||
| newInfo.enabledExtensionCount = (uint32_t)enabledExtensionNames.size(); | ||
| newInfo.ppEnabledExtensionNames = newInfo.enabledExtensionCount ? enabledExtensionNames.data() : nullptr; | ||
|
|
||
| - // Then check for VkPhysicalDeviceFeatures2 chaining or pEnabledFeatures to enable required features. Note that when both | ||
| - // structs are present Features2 takes precedence. vkCreateDevice parameters don't give us a simple way to detect | ||
| - // VK_KHR_get_physical_device_properties2 usage so we'll always try both paths. | ||
| + // Check for VkPhysicalDeviceFeatures2 in pNext chain. Per Vulkan spec, pEnabledFeatures | ||
| + // must be NULL when VkPhysicalDeviceFeatures2 is present in pNext. | ||
| std::unordered_map<VkPhysicalDeviceFeatures *, VkPhysicalDeviceFeatures> originalFeaturePointers; | ||
| VkPhysicalDeviceFeatures placeholderEnabledFeatures{}; | ||
| + bool hasFeatures2InChain = false; | ||
|
|
||
| for (const VkBaseOutStructure *next = (const VkBaseOutStructure *)pCreateInfo->pNext; next != nullptr;) { | ||
| if (next->sType == VK_STRUCTURE_TYPE_PHYSICAL_DEVICE_FEATURES_2) { | ||
| VkPhysicalDeviceFeatures *enabledFeatures = &((VkPhysicalDeviceFeatures2 *)next)->features; | ||
| originalFeaturePointers.try_emplace(enabledFeatures, *enabledFeatures); | ||
| + hasFeatures2InChain = true; | ||
| } | ||
|
|
||
| next = (const VkBaseOutStructure *)next->pNext; | ||
| } | ||
|
|
||
| - if (newInfo.pEnabledFeatures) { | ||
| - placeholderEnabledFeatures = *newInfo.pEnabledFeatures; | ||
| - } | ||
| + if (!hasFeatures2InChain) { | ||
| + // Only use pEnabledFeatures when VkPhysicalDeviceFeatures2 is NOT in pNext chain. | ||
| + if (newInfo.pEnabledFeatures) { | ||
| + placeholderEnabledFeatures = *newInfo.pEnabledFeatures; | ||
| + } | ||
|
|
||
| - newInfo.pEnabledFeatures = &placeholderEnabledFeatures; | ||
| - originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures); | ||
| + newInfo.pEnabledFeatures = &placeholderEnabledFeatures; | ||
| + originalFeaturePointers.try_emplace((VkPhysicalDeviceFeatures *)newInfo.pEnabledFeatures, *newInfo.pEnabledFeatures); | ||
| + } else { | ||
| + // Ensure pEnabledFeatures is NULL when features2 is used (Vulkan spec requirement). | ||
| + newInfo.pEnabledFeatures = nullptr; | ||
| + } | ||
|
|
||
| for (const auto& pair : originalFeaturePointers) { | ||
| for (uint32_t i = 0; i < sizeof(VkPhysicalDeviceFeatures) / sizeof(VkBool32); i++) { |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -90,9 +90,9 @@ CardboardScreenSize = 50 | |
| CardboardXShift = 0 | ||
| CardboardYShift = 0 | ||
| ShowFPSCounter = 3 | ||
| GraphicsBackend = 0 (OPENGL) | ||
| FailedGraphicsBackends = | ||
| VulkanDevice = | ||
| GraphicsBackend = 3 (VULKAN) | ||
| FailedGraphicsBackends = | ||
| VulkanDevice = | ||
| RenderingMode = 0 | ||
| SoftwareRenderer = False | ||
| HardwareTransform = True | ||
|
|
@@ -102,14 +102,14 @@ BufferFiltering = 1 | |
| InternalResolution = 1 | ||
| AndroidHwScale = 1 | ||
| HighQualityDepth = 1 | ||
| FrameSkip = 3 | ||
| FrameSkip = 1 | ||
| FrameSkipType = 0 | ||
| AutoFrameSkip = True | ||
| FrameRate = -1 | ||
| FrameRate2 = -1 | ||
| FrameSkipUnthrottle = True | ||
| ForceMaxEmulatedFPS = 30 | ||
| AnisotropyLevel = 4 | ||
| ForceMaxEmulatedFPS = 0 | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. this seems sane to me and helps with audio stretching. But I didn't do thorough testing |
||
| AnisotropyLevel = 0 | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Leaving this off as a default seems sane, if users want prettier in lieu of smooth they can set it themselves |
||
| VertexDecCache = True | ||
| TextureBackoffCache = True | ||
| TextureSecondaryCache = False | ||
|
|
@@ -130,7 +130,7 @@ TexScalingType = 0 | |
| TexDeposterize = False | ||
| VSyncInterval = True | ||
| DisableStencilTest = False | ||
| BloomHack = 2 | ||
| BloomHack = 0 | ||
| TimerHack = False | ||
| SplineBezierQuality = 0 | ||
| HardwareTessellation = False | ||
|
|
@@ -179,7 +179,7 @@ UberShaderFragment = True | |
| [Sound] | ||
| Enable = True | ||
| AudioBackend = 0 | ||
| AudioLatency = 1 | ||
| AudioLatency = 2 | ||
|
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Relaxing this seemed to help with the 3 titles I tested (lumines2 which is very audio latency sensitive) |
||
| ExtraAudioBuffering = False | ||
| SoundSpeedHack = False | ||
| AudioResampler = False | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
3 seems to aggressive as a default with vulkan