diff options
| author | 2023-05-06 00:40:10 -0700 | |
|---|---|---|
| committer | 2023-06-03 00:06:00 -0700 | |
| commit | 8dc7fe0c968ef110d987dea75bad30817035372c (patch) | |
| tree | d4ddb7bd8f4b29bb92169512ed1a2e072edf8dbf /src | |
| parent | android: Update progard to fix settings crash (diff) | |
| download | yuzu-8dc7fe0c968ef110d987dea75bad30817035372c.tar.gz yuzu-8dc7fe0c968ef110d987dea75bad30817035372c.tar.xz yuzu-8dc7fe0c968ef110d987dea75bad30817035372c.zip | |
android: video_core: Disable problematic compute shaders.
- Fixes #104.
Diffstat (limited to 'src')
| -rw-r--r-- | src/android/app/src/main/jni/config.cpp | 4 | ||||
| -rw-r--r-- | src/android/app/src/main/jni/default_ini.h | 2 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.cpp | 10 | ||||
| -rw-r--r-- | src/video_core/renderer_vulkan/vk_buffer_cache.h | 2 | ||||
| -rw-r--r-- | src/video_core/vulkan_common/vulkan_device.h | 4 |
5 files changed, 17 insertions, 5 deletions
diff --git a/src/android/app/src/main/jni/config.cpp b/src/android/app/src/main/jni/config.cpp index 7a83fea42..34aa1ee4c 100644 --- a/src/android/app/src/main/jni/config.cpp +++ b/src/android/app/src/main/jni/config.cpp | |||
| @@ -214,7 +214,6 @@ void Config::ReadValues() { | |||
| 214 | ReadSetting("Renderer", Settings::values.shader_backend); | 214 | ReadSetting("Renderer", Settings::values.shader_backend); |
| 215 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); | 215 | ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); |
| 216 | ReadSetting("Renderer", Settings::values.nvdec_emulation); | 216 | ReadSetting("Renderer", Settings::values.nvdec_emulation); |
| 217 | ReadSetting("Renderer", Settings::values.accelerate_astc); | ||
| 218 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); | 217 | ReadSetting("Renderer", Settings::values.use_fast_gpu_time); |
| 219 | ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); | 218 | ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); |
| 220 | ReadSetting("Renderer", Settings::values.async_presentation); | 219 | ReadSetting("Renderer", Settings::values.async_presentation); |
| @@ -227,6 +226,9 @@ void Config::ReadValues() { | |||
| 227 | ReadSetting("Renderer", Settings::values.bg_green); | 226 | ReadSetting("Renderer", Settings::values.bg_green); |
| 228 | ReadSetting("Renderer", Settings::values.bg_blue); | 227 | ReadSetting("Renderer", Settings::values.bg_blue); |
| 229 | 228 | ||
| 229 | // Disable ASTC compute by default on Android | ||
| 230 | Settings::values.accelerate_astc = config->GetBoolean("Renderer", "accelerate_astc", false); | ||
| 231 | |||
| 230 | // Enable force_max_clock by default on Android | 232 | // Enable force_max_clock by default on Android |
| 231 | Settings::values.renderer_force_max_clock = | 233 | Settings::values.renderer_force_max_clock = |
| 232 | config->GetBoolean("Renderer", "force_max_clock", true); | 234 | config->GetBoolean("Renderer", "force_max_clock", true); |
diff --git a/src/android/app/src/main/jni/default_ini.h b/src/android/app/src/main/jni/default_ini.h index d6bf458a6..da541851e 100644 --- a/src/android/app/src/main/jni/default_ini.h +++ b/src/android/app/src/main/jni/default_ini.h | |||
| @@ -333,7 +333,7 @@ use_asynchronous_shaders = | |||
| 333 | nvdec_emulation = | 333 | nvdec_emulation = |
| 334 | 334 | ||
| 335 | # Accelerate ASTC texture decoding. | 335 | # Accelerate ASTC texture decoding. |
| 336 | # 0: Off, 1 (default): On | 336 | # 0 (default): Off, 1: On |
| 337 | accelerate_astc = | 337 | accelerate_astc = |
| 338 | 338 | ||
| 339 | # Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value | 339 | # Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value |
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp index 9627eb129..daa128399 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.cpp +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.cpp | |||
| @@ -303,9 +303,13 @@ BufferCacheRuntime::BufferCacheRuntime(const Device& device_, MemoryAllocator& m | |||
| 303 | DescriptorPool& descriptor_pool) | 303 | DescriptorPool& descriptor_pool) |
| 304 | : device{device_}, memory_allocator{memory_allocator_}, scheduler{scheduler_}, | 304 | : device{device_}, memory_allocator{memory_allocator_}, scheduler{scheduler_}, |
| 305 | staging_pool{staging_pool_}, guest_descriptor_queue{guest_descriptor_queue_}, | 305 | staging_pool{staging_pool_}, guest_descriptor_queue{guest_descriptor_queue_}, |
| 306 | uint8_pass(device, scheduler, descriptor_pool, staging_pool, compute_pass_descriptor_queue), | ||
| 307 | quad_index_pass(device, scheduler, descriptor_pool, staging_pool, | 306 | quad_index_pass(device, scheduler, descriptor_pool, staging_pool, |
| 308 | compute_pass_descriptor_queue) { | 307 | compute_pass_descriptor_queue) { |
| 308 | if (device.GetDriverID() != VK_DRIVER_ID_QUALCOMM_PROPRIETARY) { | ||
| 309 | // TODO: FixMe: Uint8Pass compute shader does not build on some Qualcomm drivers. | ||
| 310 | uint8_pass = std::make_unique<Uint8Pass>(device, scheduler, descriptor_pool, staging_pool, | ||
| 311 | compute_pass_descriptor_queue); | ||
| 312 | } | ||
| 309 | quad_array_index_buffer = std::make_shared<QuadArrayIndexBuffer>(device_, memory_allocator_, | 313 | quad_array_index_buffer = std::make_shared<QuadArrayIndexBuffer>(device_, memory_allocator_, |
| 310 | scheduler_, staging_pool_); | 314 | scheduler_, staging_pool_); |
| 311 | quad_strip_index_buffer = std::make_shared<QuadStripIndexBuffer>(device_, memory_allocator_, | 315 | quad_strip_index_buffer = std::make_shared<QuadStripIndexBuffer>(device_, memory_allocator_, |
| @@ -442,7 +446,9 @@ void BufferCacheRuntime::BindIndexBuffer(PrimitiveTopology topology, IndexFormat | |||
| 442 | topology == PrimitiveTopology::QuadStrip); | 446 | topology == PrimitiveTopology::QuadStrip); |
| 443 | } else if (vk_index_type == VK_INDEX_TYPE_UINT8_EXT && !device.IsExtIndexTypeUint8Supported()) { | 447 | } else if (vk_index_type == VK_INDEX_TYPE_UINT8_EXT && !device.IsExtIndexTypeUint8Supported()) { |
| 444 | vk_index_type = VK_INDEX_TYPE_UINT16; | 448 | vk_index_type = VK_INDEX_TYPE_UINT16; |
| 445 | std::tie(vk_buffer, vk_offset) = uint8_pass.Assemble(num_indices, buffer, offset); | 449 | if (uint8_pass) { |
| 450 | std::tie(vk_buffer, vk_offset) = uint8_pass->Assemble(num_indices, buffer, offset); | ||
| 451 | } | ||
| 446 | } | 452 | } |
| 447 | if (vk_buffer == VK_NULL_HANDLE) { | 453 | if (vk_buffer == VK_NULL_HANDLE) { |
| 448 | // Vulkan doesn't support null index buffers. Replace it with our own null buffer. | 454 | // Vulkan doesn't support null index buffers. Replace it with our own null buffer. |
diff --git a/src/video_core/renderer_vulkan/vk_buffer_cache.h b/src/video_core/renderer_vulkan/vk_buffer_cache.h index 5e9602905..794dd0758 100644 --- a/src/video_core/renderer_vulkan/vk_buffer_cache.h +++ b/src/video_core/renderer_vulkan/vk_buffer_cache.h | |||
| @@ -139,7 +139,7 @@ private: | |||
| 139 | vk::Buffer null_buffer; | 139 | vk::Buffer null_buffer; |
| 140 | MemoryCommit null_buffer_commit; | 140 | MemoryCommit null_buffer_commit; |
| 141 | 141 | ||
| 142 | Uint8Pass uint8_pass; | 142 | std::unique_ptr<Uint8Pass> uint8_pass; |
| 143 | QuadIndexedPass quad_index_pass; | 143 | QuadIndexedPass quad_index_pass; |
| 144 | }; | 144 | }; |
| 145 | 145 | ||
diff --git a/src/video_core/vulkan_common/vulkan_device.h b/src/video_core/vulkan_common/vulkan_device.h index 3c9d11617..b692b4be4 100644 --- a/src/video_core/vulkan_common/vulkan_device.h +++ b/src/video_core/vulkan_common/vulkan_device.h | |||
| @@ -500,6 +500,10 @@ public: | |||
| 500 | } | 500 | } |
| 501 | 501 | ||
| 502 | bool HasTimelineSemaphore() const { | 502 | bool HasTimelineSemaphore() const { |
| 503 | if (GetDriverID() == VK_DRIVER_ID_QUALCOMM_PROPRIETARY) { | ||
| 504 | // Timeline semaphores do not work properly on all Qualcomm drivers. | ||
| 505 | return false; | ||
| 506 | } | ||
| 503 | return features.timeline_semaphore.timelineSemaphore; | 507 | return features.timeline_semaphore.timelineSemaphore; |
| 504 | } | 508 | } |
| 505 | 509 | ||