1
0
forked from 0ad/0ad

Adds AcquireNextBackbuffer to CDevice to have something to present.

This was SVN commit r27148.
This commit is contained in:
Vladislav Belov 2022-10-11 22:48:07 +00:00
parent 344ec2c166
commit 8ae3a2bfd6
9 changed files with 34 additions and 0 deletions

View File

@ -426,6 +426,9 @@ void CRenderer::RenderFrame(const bool needsPresent)
}
else
{
if (needsPresent)
g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer();
RenderFrameImpl(true, true);
m->deviceCommandContext->Flush();
@ -540,6 +543,9 @@ void CRenderer::RenderScreenShot(const bool needsPresent)
const size_t width = static_cast<size_t>(g_xres), height = static_cast<size_t>(g_yres);
const size_t bpp = 24;
if (needsPresent)
g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer();
// Hide log messages and re-render
RenderFrameImpl(true, false);
@ -647,6 +653,9 @@ void CRenderer::RenderBigScreenShot(const bool needsPresent)
}
g_Game->GetView()->GetCamera()->SetProjection(projection);
if (needsPresent)
g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer();
RenderFrameImpl(false, false);
m->deviceCommandContext->ReadbackFramebufferSync(0, 0, tileWidth, tileHeight, tileData);

View File

@ -95,6 +95,7 @@ public:
virtual std::unique_ptr<IShaderProgram> CreateShaderProgram(
const CStr& name, const CShaderDefines& defines) = 0;
virtual void AcquireNextBackbuffer() = 0;
virtual void Present() = 0;
virtual bool IsTextureFormatSupported(const Format format) const = 0;

View File

@ -112,6 +112,11 @@ std::unique_ptr<IShaderProgram> CDevice::CreateShaderProgram(
return CShaderProgram::Create(this);
}
void CDevice::AcquireNextBackbuffer()
{
// We have nothing to acquire.
}
void CDevice::Present()
{
// We have nothing to present.

View File

@ -72,6 +72,7 @@ public:
std::unique_ptr<IShaderProgram> CreateShaderProgram(
const CStr& name, const CShaderDefines& defines) override;
void AcquireNextBackbuffer() override;
void Present() override;
bool IsTextureFormatSupported(const Format format) const override;

View File

@ -904,8 +904,17 @@ std::unique_ptr<IShaderProgram> CDevice::CreateShaderProgram(
return CShaderProgram::Create(this, name, defines);
}
void CDevice::AcquireNextBackbuffer()
{
ENSURE(!m_BackbufferAcquired);
m_BackbufferAcquired = true;
}
void CDevice::Present()
{
ENSURE(m_BackbufferAcquired);
m_BackbufferAcquired = false;
if (m_Window)
{
PROFILE3("swap buffers");

View File

@ -89,6 +89,7 @@ public:
std::unique_ptr<IShaderProgram> CreateShaderProgram(
const CStr& name, const CShaderDefines& defines) override;
void AcquireNextBackbuffer() override;
void Present() override;
bool IsTextureFormatSupported(const Format format) const override;
@ -116,6 +117,7 @@ private:
CDeviceCommandContext* m_ActiveCommandContext = nullptr;
std::unique_ptr<CFramebuffer> m_Backbuffer;
bool m_BackbufferAcquired = false;
Capabilities m_Capabilities{};
};

View File

@ -152,6 +152,10 @@ std::unique_ptr<IShaderProgram> CDevice::CreateShaderProgram(
return nullptr;
}
void CDevice::AcquireNextBackbuffer()
{
}
void CDevice::Present()
{
}

View File

@ -77,6 +77,7 @@ public:
std::unique_ptr<IShaderProgram> CreateShaderProgram(
const CStr& name, const CShaderDefines& defines) override;
void AcquireNextBackbuffer() override;
void Present() override;
bool IsTextureFormatSupported(const Format format) const override;

View File

@ -223,6 +223,8 @@ void AtlasViewGame::Update(float realFrameLength)
void AtlasViewGame::Render()
{
g_VideoMode.GetBackendDevice()->AcquireNextBackbuffer();
SViewPort vp = { 0, 0, g_xres, g_yres };
CCamera& camera = GetCamera();
camera.SetViewPort(vp);