android: video_core: Disable some problematic things on GPU Normal.
This commit is contained in:
		| @@ -593,6 +593,12 @@ void Maxwell3D::ProcessQueryCondition() { | ||||
| } | ||||
|  | ||||
| void Maxwell3D::ProcessCounterReset() { | ||||
| #if ANDROID | ||||
|     if (!Settings::IsGPULevelHigh()) { | ||||
|         // This is problematic on Android, disable on GPU Normal. | ||||
|         return; | ||||
|     } | ||||
| #endif | ||||
|     switch (regs.clear_report_value) { | ||||
|     case Regs::ClearReport::ZPassPixelCount: | ||||
|         rasterizer->ResetCounter(QueryType::SamplesPassed); | ||||
| @@ -614,6 +620,12 @@ std::optional<u64> Maxwell3D::GetQueryResult() { | ||||
|     case Regs::ReportSemaphore::Report::Payload: | ||||
|         return regs.report_semaphore.payload; | ||||
|     case Regs::ReportSemaphore::Report::ZPassPixelCount64: | ||||
| #if ANDROID | ||||
|         if (!Settings::IsGPULevelHigh()) { | ||||
|             // This is problematic on Android, disable on GPU Normal. | ||||
|             return 120; | ||||
|         } | ||||
| #endif | ||||
|         // Deferred. | ||||
|         rasterizer->Query(regs.report_semaphore.Address(), QueryType::SamplesPassed, | ||||
|                           system.GPU().GetTicks()); | ||||
|   | ||||
| @@ -188,7 +188,14 @@ void RasterizerVulkan::PrepareDraw(bool is_indexed, Func&& draw_func) { | ||||
|     FlushWork(); | ||||
|     gpu_memory->FlushCaching(); | ||||
|  | ||||
| #if ANDROID | ||||
|     if (Settings::IsGPULevelHigh()) { | ||||
|         // This is problematic on Android, disable on GPU Normal. | ||||
|         query_cache.UpdateCounters(); | ||||
|     } | ||||
| #else | ||||
|     query_cache.UpdateCounters(); | ||||
| #endif | ||||
|  | ||||
|     GraphicsPipeline* const pipeline{pipeline_cache.CurrentGraphicsPipeline()}; | ||||
|     if (!pipeline) { | ||||
| @@ -272,7 +279,14 @@ void RasterizerVulkan::DrawTexture() { | ||||
|     SCOPE_EXIT({ gpu.TickWork(); }); | ||||
|     FlushWork(); | ||||
|  | ||||
| #if ANDROID | ||||
|     if (Settings::IsGPULevelHigh()) { | ||||
|         // This is problematic on Android, disable on GPU Normal. | ||||
|         query_cache.UpdateCounters(); | ||||
|     } | ||||
| #else | ||||
|     query_cache.UpdateCounters(); | ||||
| #endif | ||||
|  | ||||
|     texture_cache.SynchronizeGraphicsDescriptors(); | ||||
|     texture_cache.UpdateRenderTargets(false); | ||||
|   | ||||
| @@ -239,7 +239,14 @@ u64 Scheduler::SubmitExecution(VkSemaphore signal_semaphore, VkSemaphore wait_se | ||||
| void Scheduler::AllocateNewContext() { | ||||
|     // Enable counters once again. These are disabled when a command buffer is finished. | ||||
|     if (query_cache) { | ||||
| #if ANDROID | ||||
|         if (Settings::IsGPULevelHigh()) { | ||||
|             // This is problematic on Android, disable on GPU Normal. | ||||
|             query_cache->UpdateCounters(); | ||||
|         } | ||||
| #else | ||||
|         query_cache->UpdateCounters(); | ||||
| #endif | ||||
|     } | ||||
| } | ||||
|  | ||||
| @@ -250,7 +257,14 @@ void Scheduler::InvalidateState() { | ||||
| } | ||||
|  | ||||
| void Scheduler::EndPendingOperations() { | ||||
| #if ANDROID | ||||
|     if (Settings::IsGPULevelHigh()) { | ||||
|         // This is problematic on Android, disable on GPU Normal. | ||||
|         query_cache->DisableStreams(); | ||||
|     } | ||||
| #else | ||||
|     query_cache->DisableStreams(); | ||||
| #endif | ||||
|     EndRenderPass(); | ||||
| } | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 bunnei
					bunnei