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