android: video_core: Disable problematic compute shaders.
- Fixes #104.
This commit is contained in:
		| @@ -214,7 +214,6 @@ void Config::ReadValues() { | ||||
|     ReadSetting("Renderer", Settings::values.shader_backend); | ||||
|     ReadSetting("Renderer", Settings::values.use_asynchronous_shaders); | ||||
|     ReadSetting("Renderer", Settings::values.nvdec_emulation); | ||||
|     ReadSetting("Renderer", Settings::values.accelerate_astc); | ||||
|     ReadSetting("Renderer", Settings::values.use_fast_gpu_time); | ||||
|     ReadSetting("Renderer", Settings::values.use_vulkan_driver_pipeline_cache); | ||||
|     ReadSetting("Renderer", Settings::values.async_presentation); | ||||
| @@ -227,6 +226,9 @@ void Config::ReadValues() { | ||||
|     ReadSetting("Renderer", Settings::values.bg_green); | ||||
|     ReadSetting("Renderer", Settings::values.bg_blue); | ||||
|  | ||||
|     // Disable ASTC compute by default on Android | ||||
|     Settings::values.accelerate_astc = config->GetBoolean("Renderer", "accelerate_astc", false); | ||||
|  | ||||
|     // Enable force_max_clock by default on Android | ||||
|     Settings::values.renderer_force_max_clock = | ||||
|         config->GetBoolean("Renderer", "force_max_clock", true); | ||||
|   | ||||
| @@ -333,7 +333,7 @@ use_asynchronous_shaders = | ||||
| nvdec_emulation = | ||||
|  | ||||
| # Accelerate ASTC texture decoding. | ||||
| # 0: Off, 1 (default): On | ||||
| # 0 (default): Off, 1: On | ||||
| accelerate_astc = | ||||
|  | ||||
| # Turns on the speed limiter, which will limit the emulation speed to the desired speed limit value | ||||
|   | ||||
| @@ -303,9 +303,13 @@ BufferCacheRuntime::BufferCacheRuntime(const Device& device_, MemoryAllocator& m | ||||
|                                        DescriptorPool& descriptor_pool) | ||||
|     : device{device_}, memory_allocator{memory_allocator_}, scheduler{scheduler_}, | ||||
|       staging_pool{staging_pool_}, guest_descriptor_queue{guest_descriptor_queue_}, | ||||
|       uint8_pass(device, scheduler, descriptor_pool, staging_pool, compute_pass_descriptor_queue), | ||||
|       quad_index_pass(device, scheduler, descriptor_pool, staging_pool, | ||||
|                       compute_pass_descriptor_queue) { | ||||
|     if (device.GetDriverID() != VK_DRIVER_ID_QUALCOMM_PROPRIETARY) { | ||||
|         // TODO: FixMe: Uint8Pass compute shader does not build on some Qualcomm drivers. | ||||
|         uint8_pass = std::make_unique<Uint8Pass>(device, scheduler, descriptor_pool, staging_pool, | ||||
|                                                  compute_pass_descriptor_queue); | ||||
|     } | ||||
|     quad_array_index_buffer = std::make_shared<QuadArrayIndexBuffer>(device_, memory_allocator_, | ||||
|                                                                      scheduler_, staging_pool_); | ||||
|     quad_strip_index_buffer = std::make_shared<QuadStripIndexBuffer>(device_, memory_allocator_, | ||||
| @@ -442,7 +446,9 @@ void BufferCacheRuntime::BindIndexBuffer(PrimitiveTopology topology, IndexFormat | ||||
|                                      topology == PrimitiveTopology::QuadStrip); | ||||
|     } else if (vk_index_type == VK_INDEX_TYPE_UINT8_EXT && !device.IsExtIndexTypeUint8Supported()) { | ||||
|         vk_index_type = VK_INDEX_TYPE_UINT16; | ||||
|         std::tie(vk_buffer, vk_offset) = uint8_pass.Assemble(num_indices, buffer, offset); | ||||
|         if (uint8_pass) { | ||||
|             std::tie(vk_buffer, vk_offset) = uint8_pass->Assemble(num_indices, buffer, offset); | ||||
|         } | ||||
|     } | ||||
|     if (vk_buffer == VK_NULL_HANDLE) { | ||||
|         // Vulkan doesn't support null index buffers. Replace it with our own null buffer. | ||||
|   | ||||
| @@ -139,7 +139,7 @@ private: | ||||
|     vk::Buffer null_buffer; | ||||
|     MemoryCommit null_buffer_commit; | ||||
|  | ||||
|     Uint8Pass uint8_pass; | ||||
|     std::unique_ptr<Uint8Pass> uint8_pass; | ||||
|     QuadIndexedPass quad_index_pass; | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -500,6 +500,10 @@ public: | ||||
|     } | ||||
|  | ||||
|     bool HasTimelineSemaphore() const { | ||||
|         if (GetDriverID() == VK_DRIVER_ID_QUALCOMM_PROPRIETARY) { | ||||
|             // Timeline semaphores do not work properly on all Qualcomm drivers. | ||||
|             return false; | ||||
|         } | ||||
|         return features.timeline_semaphore.timelineSemaphore; | ||||
|     } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user