|
|
@ -139,6 +139,7 @@ void RasterizerOpenGL::LoadDiskResources(u64 title_id, std::stop_token stop_load |
|
|
void RasterizerOpenGL::Clear(u32 layer_count) { |
|
|
void RasterizerOpenGL::Clear(u32 layer_count) { |
|
|
MICROPROFILE_SCOPE(OpenGL_Clears); |
|
|
MICROPROFILE_SCOPE(OpenGL_Clears); |
|
|
|
|
|
|
|
|
|
|
|
gpu_memory->FlushCaching(); |
|
|
const auto& regs = maxwell3d->regs; |
|
|
const auto& regs = maxwell3d->regs; |
|
|
bool use_color{}; |
|
|
bool use_color{}; |
|
|
bool use_depth{}; |
|
|
bool use_depth{}; |
|
|
@ -207,6 +208,7 @@ void RasterizerOpenGL::PrepareDraw(bool is_indexed, Func&& draw_func) { |
|
|
MICROPROFILE_SCOPE(OpenGL_Drawing); |
|
|
MICROPROFILE_SCOPE(OpenGL_Drawing); |
|
|
|
|
|
|
|
|
SCOPE_EXIT({ gpu.TickWork(); }); |
|
|
SCOPE_EXIT({ gpu.TickWork(); }); |
|
|
|
|
|
gpu_memory->FlushCaching(); |
|
|
query_cache.UpdateCounters(); |
|
|
query_cache.UpdateCounters(); |
|
|
|
|
|
|
|
|
GraphicsPipeline* const pipeline{shader_cache.CurrentGraphicsPipeline()}; |
|
|
GraphicsPipeline* const pipeline{shader_cache.CurrentGraphicsPipeline()}; |
|
|
@ -319,6 +321,7 @@ void RasterizerOpenGL::DrawIndirect() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
void RasterizerOpenGL::DispatchCompute() { |
|
|
void RasterizerOpenGL::DispatchCompute() { |
|
|
|
|
|
gpu_memory->FlushCaching(); |
|
|
ComputePipeline* const pipeline{shader_cache.CurrentComputePipeline()}; |
|
|
ComputePipeline* const pipeline{shader_cache.CurrentComputePipeline()}; |
|
|
if (!pipeline) { |
|
|
if (!pipeline) { |
|
|
return; |
|
|
return; |
|
|
@ -526,6 +529,7 @@ void RasterizerOpenGL::TickFrame() { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
bool RasterizerOpenGL::AccelerateConditionalRendering() { |
|
|
bool RasterizerOpenGL::AccelerateConditionalRendering() { |
|
|
|
|
|
gpu_memory->FlushCaching(); |
|
|
if (Settings::IsGPULevelHigh()) { |
|
|
if (Settings::IsGPULevelHigh()) { |
|
|
// Reimplement Host conditional rendering.
|
|
|
// Reimplement Host conditional rendering.
|
|
|
return false; |
|
|
return false; |
|
|
|