HostDisplay: Move some derived class fields to base class

This commit is contained in:
Connor McLaughlin
2020-01-24 14:51:36 +10:00
parent 736d85b0f3
commit 687772c4da
15 changed files with 75 additions and 200 deletions

View File

@ -138,30 +138,6 @@ void D3D11DisplayWindow::UpdateTexture(HostDisplayTexture* texture, u32 x, u32 y
}
}
void D3D11DisplayWindow::SetDisplayTexture(void* texture, s32 offset_x, s32 offset_y, s32 width, s32 height,
u32 texture_width, u32 texture_height, float aspect_ratio)
{
m_display_srv = static_cast<ID3D11ShaderResourceView*>(texture);
m_display_offset_x = offset_x;
m_display_offset_y = offset_y;
m_display_width = width;
m_display_height = height;
m_display_texture_width = texture_width;
m_display_texture_height = texture_height;
m_display_aspect_ratio = aspect_ratio;
m_display_texture_changed = true;
}
void D3D11DisplayWindow::SetDisplayLinearFiltering(bool enabled)
{
m_display_linear_filtering = enabled;
}
void D3D11DisplayWindow::SetDisplayTopMargin(int height)
{
m_display_top_margin = height;
}
void D3D11DisplayWindow::SetVSync(bool enabled)
{
m_vsync = enabled;
@ -452,7 +428,7 @@ void D3D11DisplayWindow::Render()
void D3D11DisplayWindow::renderDisplay()
{
if (!m_display_srv)
if (!m_display_texture_handle)
return;
// - 20 for main menu padding
@ -463,7 +439,7 @@ void D3D11DisplayWindow::renderDisplay()
m_context->IASetPrimitiveTopology(D3D11_PRIMITIVE_TOPOLOGY_TRIANGLELIST);
m_context->VSSetShader(m_display_vertex_shader.Get(), nullptr, 0);
m_context->PSSetShader(m_display_pixel_shader.Get(), nullptr, 0);
m_context->PSSetShaderResources(0, 1, &m_display_srv);
m_context->PSSetShaderResources(0, 1, reinterpret_cast<ID3D11ShaderResourceView**>(&m_display_texture_handle));
m_context->PSSetSamplers(
0, 1, m_display_linear_filtering ? m_linear_sampler.GetAddressOf() : m_point_sampler.GetAddressOf());

View File

@ -37,11 +37,6 @@ public:
void UpdateTexture(HostDisplayTexture* texture, u32 x, u32 y, u32 width, u32 height, const void* data,
u32 data_stride) override;
void SetDisplayTexture(void* texture, s32 offset_x, s32 offset_y, s32 width, s32 height, u32 texture_width,
u32 texture_height, float aspect_ratio) override;
void SetDisplayLinearFiltering(bool enabled) override;
void SetDisplayTopMargin(int height) override;
void SetVSync(bool enabled) override;
std::tuple<u32, u32> GetWindowSize() const override;
@ -79,18 +74,6 @@ private:
D3D11::Texture m_display_pixels_texture;
D3D11::StreamBuffer m_display_uniform_buffer;
ID3D11ShaderResourceView* m_display_srv = nullptr;
s32 m_display_offset_x = 0;
s32 m_display_offset_y = 0;
s32 m_display_width = 0;
s32 m_display_height = 0;
u32 m_display_texture_width = 0;
u32 m_display_texture_height = 0;
int m_display_top_margin = 0;
float m_display_aspect_ratio = 1.0f;
bool m_display_texture_changed = false;
bool m_display_linear_filtering = false;
bool m_allow_tearing_supported = false;
bool m_vsync = false;
};

View File

@ -155,30 +155,6 @@ void OpenGLDisplayWindow::UpdateTexture(HostDisplayTexture* texture, u32 x, u32
glBindTexture(GL_TEXTURE_2D, old_texture_binding);
}
void OpenGLDisplayWindow::SetDisplayTexture(void* texture, s32 offset_x, s32 offset_y, s32 width, s32 height,
u32 texture_width, u32 texture_height, float aspect_ratio)
{
m_display_texture_id = static_cast<GLuint>(reinterpret_cast<uintptr_t>(texture));
m_display_offset_x = offset_x;
m_display_offset_y = offset_y;
m_display_width = width;
m_display_height = height;
m_display_texture_width = texture_width;
m_display_texture_height = texture_height;
m_display_aspect_ratio = aspect_ratio;
m_display_texture_changed = true;
}
void OpenGLDisplayWindow::SetDisplayLinearFiltering(bool enabled)
{
m_display_linear_filtering = enabled;
}
void OpenGLDisplayWindow::SetDisplayTopMargin(int height)
{
m_display_top_margin = height;
}
void OpenGLDisplayWindow::SetVSync(bool enabled)
{
// Window framebuffer has to be bound to call SetSwapInterval.
@ -473,7 +449,7 @@ void OpenGLDisplayWindow::Render()
void OpenGLDisplayWindow::renderDisplay()
{
if (!m_display_texture_id)
if (!m_display_texture_handle)
return;
// - 20 for main menu padding
@ -491,7 +467,7 @@ void OpenGLDisplayWindow::renderDisplay()
static_cast<float>(m_display_offset_y) / static_cast<float>(m_display_texture_height),
static_cast<float>(m_display_width) / static_cast<float>(m_display_texture_width),
static_cast<float>(m_display_height) / static_cast<float>(m_display_texture_height));
glBindTexture(GL_TEXTURE_2D, m_display_texture_id);
glBindTexture(GL_TEXTURE_2D, static_cast<GLuint>(reinterpret_cast<uintptr_t>(m_display_texture_handle)));
glBindSampler(0, m_display_linear_filtering ? m_display_linear_sampler : m_display_nearest_sampler);
glBindVertexArray(m_display_vao);
glDrawArrays(GL_TRIANGLES, 0, 3);

View File

@ -36,11 +36,6 @@ public:
void UpdateTexture(HostDisplayTexture* texture, u32 x, u32 y, u32 width, u32 height, const void* data,
u32 data_stride) override;
void SetDisplayTexture(void* texture, s32 offset_x, s32 offset_y, s32 width, s32 height, u32 texture_width,
u32 texture_height, float aspect_ratio) override;
void SetDisplayLinearFiltering(bool enabled) override;
void SetDisplayTopMargin(int height) override;
void SetVSync(bool enabled) override;
std::tuple<u32, u32> GetWindowSize() const override;
@ -63,19 +58,8 @@ private:
GL::Program m_display_program;
GLuint m_display_vao = 0;
GLuint m_display_texture_id = 0;
s32 m_display_offset_x = 0;
s32 m_display_offset_y = 0;
s32 m_display_width = 0;
s32 m_display_height = 0;
u32 m_display_texture_width = 0;
u32 m_display_texture_height = 0;
int m_display_top_margin = 0;
float m_display_aspect_ratio = 1.0f;
GLuint m_display_nearest_sampler = 0;
GLuint m_display_linear_sampler = 0;
bool m_is_gles = false;
bool m_display_texture_changed = false;
bool m_display_linear_filtering = false;
};

View File

@ -22,8 +22,6 @@ public:
virtual bool initializeDeviceContext(bool debug_device);
virtual void destroyDeviceContext();
virtual void SetDisplayLinearFiltering(bool enabled) = 0;
virtual void SetDisplayTopMargin(int height) = 0;
virtual void Render() = 0;
// this comes back on the emu thread

View File

@ -143,7 +143,7 @@ void QtHostInterface::applySettings()
}
if (m_settings.display_linear_filtering != old_display_linear_filtering)
m_display_window->SetDisplayLinearFiltering(m_settings.display_linear_filtering);
m_display_window->getHostDisplayInterface()->SetDisplayLinearFiltering(m_settings.display_linear_filtering);
}
void QtHostInterface::checkSettings()