24e2e601d5
Because of the recent separation of GPU functionality into sync/async variants, we need to mark the destructor virtual to provide proper destruction behavior, given we use the base class within the System class. Prior to this, it was undefined behavior whether or not the destructor in the derived classes would ever execute.
30 lines
880 B
C++
30 lines
880 B
C++
// Copyright 2019 yuzu Emulator Project
|
|
// Licensed under GPLv2 or any later version
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include "video_core/gpu.h"
|
|
|
|
namespace VideoCore {
|
|
class RendererBase;
|
|
} // namespace VideoCore
|
|
|
|
namespace VideoCommon {
|
|
|
|
/// Implementation of GPU interface that runs the GPU synchronously
|
|
class GPUSynch : public Tegra::GPU {
|
|
public:
|
|
explicit GPUSynch(Core::System& system, VideoCore::RendererBase& renderer);
|
|
~GPUSynch() override;
|
|
|
|
void PushGPUEntries(Tegra::CommandList&& entries) override;
|
|
void SwapBuffers(
|
|
std::optional<std::reference_wrapper<const Tegra::FramebufferConfig>> framebuffer) override;
|
|
void FlushRegion(VAddr addr, u64 size) override;
|
|
void InvalidateRegion(VAddr addr, u64 size) override;
|
|
void FlushAndInvalidateRegion(VAddr addr, u64 size) override;
|
|
};
|
|
|
|
} // namespace VideoCommon
|