FrontendCommon: Remove unnecessary #ifndef LIBRETRO macros
These were only needed because of ancient compilers on the libretro buildbot, it still compiles fine with these fields on the latest compilers.
This commit is contained in:
parent
702ed21207
commit
dc46d52029
|
@ -8,11 +8,9 @@
|
||||||
#include "core/settings.h"
|
#include "core/settings.h"
|
||||||
#include "display_ps.hlsl.h"
|
#include "display_ps.hlsl.h"
|
||||||
#include "display_vs.hlsl.h"
|
#include "display_vs.hlsl.h"
|
||||||
#include <array>
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "frontend-common/postprocessing_shadergen.h"
|
#include "frontend-common/postprocessing_shadergen.h"
|
||||||
|
#include <array>
|
||||||
#include <dxgi1_5.h>
|
#include <dxgi1_5.h>
|
||||||
#endif
|
|
||||||
#ifdef WITH_IMGUI
|
#ifdef WITH_IMGUI
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#include "imgui_impl_dx11.h"
|
#include "imgui_impl_dx11.h"
|
||||||
|
@ -78,9 +76,7 @@ D3D11HostDisplay::D3D11HostDisplay() = default;
|
||||||
D3D11HostDisplay::~D3D11HostDisplay()
|
D3D11HostDisplay::~D3D11HostDisplay()
|
||||||
{
|
{
|
||||||
AssertMsg(!m_context, "Context should have been destroyed by now");
|
AssertMsg(!m_context, "Context should have been destroyed by now");
|
||||||
#ifndef LIBRETRO
|
|
||||||
AssertMsg(!m_swap_chain, "Swap chain should have been destroyed by now");
|
AssertMsg(!m_swap_chain, "Swap chain should have been destroyed by now");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
HostDisplay::RenderAPI D3D11HostDisplay::GetRenderAPI() const
|
HostDisplay::RenderAPI D3D11HostDisplay::GetRenderAPI() const
|
||||||
|
@ -105,11 +101,7 @@ bool D3D11HostDisplay::HasRenderDevice() const
|
||||||
|
|
||||||
bool D3D11HostDisplay::HasRenderSurface() const
|
bool D3D11HostDisplay::HasRenderSurface() const
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
return static_cast<bool>(m_swap_chain);
|
return static_cast<bool>(m_swap_chain);
|
||||||
#else
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::unique_ptr<HostDisplayTexture> D3D11HostDisplay::CreateTexture(u32 width, u32 height, const void* initial_data,
|
std::unique_ptr<HostDisplayTexture> D3D11HostDisplay::CreateTexture(u32 width, u32 height, const void* initial_data,
|
||||||
|
@ -236,15 +228,12 @@ void D3D11HostDisplay::EndSetDisplayPixels()
|
||||||
|
|
||||||
void D3D11HostDisplay::SetVSync(bool enabled)
|
void D3D11HostDisplay::SetVSync(bool enabled)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
m_vsync = enabled;
|
m_vsync = enabled;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D11HostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_view adapter_name, bool debug_device,
|
bool D3D11HostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_view adapter_name, bool debug_device,
|
||||||
bool threaded_presentation)
|
bool threaded_presentation)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
UINT create_flags = 0;
|
UINT create_flags = 0;
|
||||||
if (debug_device)
|
if (debug_device)
|
||||||
create_flags |= D3D11_CREATE_DEVICE_DEBUG;
|
create_flags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||||
|
@ -347,7 +336,6 @@ bool D3D11HostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_view
|
||||||
if (SUCCEEDED(hr))
|
if (SUCCEEDED(hr))
|
||||||
m_allow_tearing_supported = (allow_tearing_supported == TRUE);
|
m_allow_tearing_supported = (allow_tearing_supported == TRUE);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
m_window_info = wi;
|
m_window_info = wi;
|
||||||
return true;
|
return true;
|
||||||
|
@ -356,13 +344,11 @@ bool D3D11HostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_view
|
||||||
bool D3D11HostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device,
|
bool D3D11HostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device,
|
||||||
bool threaded_presentation)
|
bool threaded_presentation)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (m_window_info.type != WindowInfo::Type::Surfaceless && m_window_info.type != WindowInfo::Type::Libretro &&
|
if (m_window_info.type != WindowInfo::Type::Surfaceless && m_window_info.type != WindowInfo::Type::Libretro &&
|
||||||
!CreateSwapChain(nullptr))
|
!CreateSwapChain(nullptr))
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if (!CreateResources())
|
if (!CreateResources())
|
||||||
return false;
|
return false;
|
||||||
|
@ -398,8 +384,6 @@ bool D3D11HostDisplay::DoneRenderContextCurrent()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
|
|
||||||
bool D3D11HostDisplay::CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode)
|
bool D3D11HostDisplay::CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode)
|
||||||
{
|
{
|
||||||
if (m_window_info.type != WindowInfo::Type::Win32)
|
if (m_window_info.type != WindowInfo::Type::Win32)
|
||||||
|
@ -498,35 +482,25 @@ bool D3D11HostDisplay::CreateSwapChainRTV()
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool D3D11HostDisplay::ChangeRenderWindow(const WindowInfo& new_wi)
|
bool D3D11HostDisplay::ChangeRenderWindow(const WindowInfo& new_wi)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
DestroyRenderSurface();
|
DestroyRenderSurface();
|
||||||
|
|
||||||
m_window_info = new_wi;
|
m_window_info = new_wi;
|
||||||
return CreateSwapChain(nullptr);
|
return CreateSwapChain(nullptr);
|
||||||
#else
|
|
||||||
m_window_info = new_wi;
|
|
||||||
return true;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D11HostDisplay::DestroyRenderSurface()
|
void D3D11HostDisplay::DestroyRenderSurface()
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (IsFullscreen())
|
if (IsFullscreen())
|
||||||
SetFullscreen(false, 0, 0, 0.0f);
|
SetFullscreen(false, 0, 0, 0.0f);
|
||||||
|
|
||||||
m_swap_chain_rtv.Reset();
|
m_swap_chain_rtv.Reset();
|
||||||
m_swap_chain.Reset();
|
m_swap_chain.Reset();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void D3D11HostDisplay::ResizeRenderWindow(s32 new_window_width, s32 new_window_height)
|
void D3D11HostDisplay::ResizeRenderWindow(s32 new_window_width, s32 new_window_height)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (!m_swap_chain)
|
if (!m_swap_chain)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -539,31 +513,21 @@ void D3D11HostDisplay::ResizeRenderWindow(s32 new_window_width, s32 new_window_h
|
||||||
|
|
||||||
if (!CreateSwapChainRTV())
|
if (!CreateSwapChainRTV())
|
||||||
Panic("Failed to recreate swap chain RTV after resize");
|
Panic("Failed to recreate swap chain RTV after resize");
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D11HostDisplay::SupportsFullscreen() const
|
bool D3D11HostDisplay::SupportsFullscreen() const
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D11HostDisplay::IsFullscreen()
|
bool D3D11HostDisplay::IsFullscreen()
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
BOOL is_fullscreen = FALSE;
|
BOOL is_fullscreen = FALSE;
|
||||||
return (m_swap_chain && SUCCEEDED(m_swap_chain->GetFullscreenState(&is_fullscreen, nullptr)) && is_fullscreen);
|
return (m_swap_chain && SUCCEEDED(m_swap_chain->GetFullscreenState(&is_fullscreen, nullptr)) && is_fullscreen);
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D11HostDisplay::SetFullscreen(bool fullscreen, u32 width, u32 height, float refresh_rate)
|
bool D3D11HostDisplay::SetFullscreen(bool fullscreen, u32 width, u32 height, float refresh_rate)
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (!m_swap_chain)
|
if (!m_swap_chain)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
@ -622,9 +586,6 @@ bool D3D11HostDisplay::SetFullscreen(bool fullscreen, u32 width, u32 height, flo
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
#else
|
|
||||||
return false;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool D3D11HostDisplay::CreateResources()
|
bool D3D11HostDisplay::CreateResources()
|
||||||
|
@ -687,11 +648,9 @@ bool D3D11HostDisplay::CreateResources()
|
||||||
|
|
||||||
void D3D11HostDisplay::DestroyResources()
|
void D3D11HostDisplay::DestroyResources()
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
m_post_processing_chain.ClearStages();
|
m_post_processing_chain.ClearStages();
|
||||||
m_post_processing_input_texture.Destroy();
|
m_post_processing_input_texture.Destroy();
|
||||||
m_post_processing_stages.clear();
|
m_post_processing_stages.clear();
|
||||||
#endif
|
|
||||||
|
|
||||||
m_display_uniform_buffer.Release();
|
m_display_uniform_buffer.Release();
|
||||||
m_linear_sampler.Reset();
|
m_linear_sampler.Reset();
|
||||||
|
@ -726,7 +685,6 @@ void D3D11HostDisplay::DestroyImGuiContext()
|
||||||
|
|
||||||
bool D3D11HostDisplay::Render()
|
bool D3D11HostDisplay::Render()
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (ShouldSkipDisplayingFrame())
|
if (ShouldSkipDisplayingFrame())
|
||||||
{
|
{
|
||||||
#ifdef WITH_IMGUI
|
#ifdef WITH_IMGUI
|
||||||
|
@ -761,8 +719,6 @@ bool D3D11HostDisplay::Render()
|
||||||
#ifdef WITH_IMGUI
|
#ifdef WITH_IMGUI
|
||||||
if (ImGui::GetCurrentContext())
|
if (ImGui::GetCurrentContext())
|
||||||
ImGui_ImplDX11_NewFrame();
|
ImGui_ImplDX11_NewFrame();
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
@ -783,7 +739,6 @@ void D3D11HostDisplay::RenderDisplay()
|
||||||
|
|
||||||
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (!m_post_processing_chain.IsEmpty())
|
if (!m_post_processing_chain.IsEmpty())
|
||||||
{
|
{
|
||||||
ApplyPostProcessingChain(m_swap_chain_rtv.Get(), left, top, width, height, m_display_texture_handle,
|
ApplyPostProcessingChain(m_swap_chain_rtv.Get(), left, top, width, height, m_display_texture_handle,
|
||||||
|
@ -791,7 +746,6 @@ void D3D11HostDisplay::RenderDisplay()
|
||||||
m_display_texture_view_y, m_display_texture_view_width, m_display_texture_view_height);
|
m_display_texture_view_y, m_display_texture_view_width, m_display_texture_view_height);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
RenderDisplay(left, top, width, height, m_display_texture_handle, m_display_texture_width, m_display_texture_height,
|
RenderDisplay(left, top, width, height, m_display_texture_handle, m_display_texture_width, m_display_texture_height,
|
||||||
m_display_texture_view_x, m_display_texture_view_y, m_display_texture_view_width,
|
m_display_texture_view_x, m_display_texture_view_y, m_display_texture_view_width,
|
||||||
|
@ -861,8 +815,6 @@ void D3D11HostDisplay::RenderSoftwareCursor(s32 left, s32 top, s32 width, s32 he
|
||||||
m_context->Draw(3, 0);
|
m_context->Draw(3, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
|
|
||||||
D3D11HostDisplay::AdapterInfo D3D11HostDisplay::GetAdapterInfo()
|
D3D11HostDisplay::AdapterInfo D3D11HostDisplay::GetAdapterInfo()
|
||||||
{
|
{
|
||||||
ComPtr<IDXGIFactory> dxgi_factory;
|
ComPtr<IDXGIFactory> dxgi_factory;
|
||||||
|
@ -1092,13 +1044,4 @@ void D3D11HostDisplay::ApplyPostProcessingChain(ID3D11RenderTargetView* final_ta
|
||||||
m_context->PSSetShaderResources(0, 1, &null_srv);
|
m_context->PSSetShaderResources(0, 1, &null_srv);
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // LIBRETRO
|
|
||||||
|
|
||||||
bool D3D11HostDisplay::SetPostProcessingChain(const std::string_view& config)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace FrontendCommon
|
} // namespace FrontendCommon
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include "common/window_info.h"
|
#include "common/window_info.h"
|
||||||
#include "common/windows_headers.h"
|
#include "common/windows_headers.h"
|
||||||
#include "core/host_display.h"
|
#include "core/host_display.h"
|
||||||
|
#include "frontend-common/postprocessing_chain.h"
|
||||||
#include <d3d11.h>
|
#include <d3d11.h>
|
||||||
#include <dxgi.h>
|
#include <dxgi.h>
|
||||||
#include <memory>
|
#include <memory>
|
||||||
|
@ -13,10 +14,6 @@
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <wrl/client.h>
|
#include <wrl/client.h>
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "frontend-common/postprocessing_chain.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace FrontendCommon {
|
namespace FrontendCommon {
|
||||||
|
|
||||||
class D3D11HostDisplay : public HostDisplay
|
class D3D11HostDisplay : public HostDisplay
|
||||||
|
@ -35,8 +32,10 @@ public:
|
||||||
virtual bool HasRenderDevice() const override;
|
virtual bool HasRenderDevice() const override;
|
||||||
virtual bool HasRenderSurface() const override;
|
virtual bool HasRenderSurface() const override;
|
||||||
|
|
||||||
virtual bool CreateRenderDevice(const WindowInfo& wi, std::string_view adapter_name, bool debug_device, bool threaded_presentation) override;
|
virtual bool CreateRenderDevice(const WindowInfo& wi, std::string_view adapter_name, bool debug_device,
|
||||||
virtual bool InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device, bool threaded_presentation) override;
|
bool threaded_presentation) override;
|
||||||
|
virtual bool InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device,
|
||||||
|
bool threaded_presentation) override;
|
||||||
virtual void DestroyRenderDevice() override;
|
virtual void DestroyRenderDevice() override;
|
||||||
|
|
||||||
virtual bool MakeRenderContextCurrent() override;
|
virtual bool MakeRenderContextCurrent() override;
|
||||||
|
@ -66,21 +65,17 @@ public:
|
||||||
|
|
||||||
virtual bool Render() override;
|
virtual bool Render() override;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
struct AdapterInfo
|
struct AdapterInfo
|
||||||
{
|
{
|
||||||
std::vector<std::string> adapter_names;
|
std::vector<std::string> adapter_names;
|
||||||
std::vector<std::string> fullscreen_modes;
|
std::vector<std::string> fullscreen_modes;
|
||||||
};
|
};
|
||||||
static AdapterInfo GetAdapterInfo();
|
static AdapterInfo GetAdapterInfo();
|
||||||
#endif
|
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
static constexpr u32 DISPLAY_UNIFORM_BUFFER_SIZE = 16;
|
static constexpr u32 DISPLAY_UNIFORM_BUFFER_SIZE = 16;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
static AdapterInfo GetAdapterInfo(IDXGIFactory* dxgi_factory);
|
static AdapterInfo GetAdapterInfo(IDXGIFactory* dxgi_factory);
|
||||||
#endif
|
|
||||||
|
|
||||||
virtual bool CreateResources() override;
|
virtual bool CreateResources() override;
|
||||||
virtual void DestroyResources() override;
|
virtual void DestroyResources() override;
|
||||||
|
@ -88,10 +83,8 @@ protected:
|
||||||
virtual bool CreateImGuiContext();
|
virtual bool CreateImGuiContext();
|
||||||
virtual void DestroyImGuiContext();
|
virtual void DestroyImGuiContext();
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
bool CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode);
|
bool CreateSwapChain(const DXGI_MODE_DESC* fullscreen_mode);
|
||||||
bool CreateSwapChainRTV();
|
bool CreateSwapChainRTV();
|
||||||
#endif
|
|
||||||
|
|
||||||
void RenderDisplay();
|
void RenderDisplay();
|
||||||
void RenderSoftwareCursor();
|
void RenderSoftwareCursor();
|
||||||
|
@ -102,7 +95,6 @@ protected:
|
||||||
s32 texture_view_height, bool linear_filter);
|
s32 texture_view_height, bool linear_filter);
|
||||||
void RenderSoftwareCursor(s32 left, s32 top, s32 width, s32 height, HostDisplayTexture* texture_handle);
|
void RenderSoftwareCursor(s32 left, s32 top, s32 width, s32 height, HostDisplayTexture* texture_handle);
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
struct PostProcessingStage
|
struct PostProcessingStage
|
||||||
{
|
{
|
||||||
ComPtr<ID3D11VertexShader> vertex_shader;
|
ComPtr<ID3D11VertexShader> vertex_shader;
|
||||||
|
@ -116,16 +108,13 @@ protected:
|
||||||
s32 final_height, void* texture_handle, u32 texture_width, s32 texture_height,
|
s32 final_height, void* texture_handle, u32 texture_width, s32 texture_height,
|
||||||
s32 texture_view_x, s32 texture_view_y, s32 texture_view_width,
|
s32 texture_view_x, s32 texture_view_y, s32 texture_view_width,
|
||||||
s32 texture_view_height);
|
s32 texture_view_height);
|
||||||
#endif
|
|
||||||
|
|
||||||
ComPtr<ID3D11Device> m_device;
|
ComPtr<ID3D11Device> m_device;
|
||||||
ComPtr<ID3D11DeviceContext> m_context;
|
ComPtr<ID3D11DeviceContext> m_context;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
ComPtr<IDXGIFactory> m_dxgi_factory;
|
ComPtr<IDXGIFactory> m_dxgi_factory;
|
||||||
ComPtr<IDXGISwapChain> m_swap_chain;
|
ComPtr<IDXGISwapChain> m_swap_chain;
|
||||||
ComPtr<ID3D11RenderTargetView> m_swap_chain_rtv;
|
ComPtr<ID3D11RenderTargetView> m_swap_chain_rtv;
|
||||||
#endif
|
|
||||||
|
|
||||||
ComPtr<ID3D11RasterizerState> m_display_rasterizer_state;
|
ComPtr<ID3D11RasterizerState> m_display_rasterizer_state;
|
||||||
ComPtr<ID3D11DepthStencilState> m_display_depth_stencil_state;
|
ComPtr<ID3D11DepthStencilState> m_display_depth_stencil_state;
|
||||||
|
@ -140,7 +129,6 @@ protected:
|
||||||
D3D11::StreamBuffer m_display_uniform_buffer;
|
D3D11::StreamBuffer m_display_uniform_buffer;
|
||||||
D3D11::AutoStagingTexture m_readback_staging_texture;
|
D3D11::AutoStagingTexture m_readback_staging_texture;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
bool m_allow_tearing_supported = false;
|
bool m_allow_tearing_supported = false;
|
||||||
bool m_using_flip_model_swap_chain = true;
|
bool m_using_flip_model_swap_chain = true;
|
||||||
bool m_using_allow_tearing = false;
|
bool m_using_allow_tearing = false;
|
||||||
|
@ -149,7 +137,6 @@ protected:
|
||||||
PostProcessingChain m_post_processing_chain;
|
PostProcessingChain m_post_processing_chain;
|
||||||
D3D11::Texture m_post_processing_input_texture;
|
D3D11::Texture m_post_processing_input_texture;
|
||||||
std::vector<PostProcessingStage> m_post_processing_stages;
|
std::vector<PostProcessingStage> m_post_processing_stages;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace FrontendCommon
|
} // namespace FrontendCommon
|
||||||
|
|
|
@ -8,9 +8,7 @@
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#include "imgui_impl_opengl3.h"
|
#include "imgui_impl_opengl3.h"
|
||||||
#endif
|
#endif
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "postprocessing_shadergen.h"
|
#include "postprocessing_shadergen.h"
|
||||||
#endif
|
|
||||||
Log_SetChannel(LibretroOpenGLHostDisplay);
|
Log_SetChannel(LibretroOpenGLHostDisplay);
|
||||||
|
|
||||||
namespace FrontendCommon {
|
namespace FrontendCommon {
|
||||||
|
@ -639,12 +637,10 @@ void main()
|
||||||
|
|
||||||
void OpenGLHostDisplay::DestroyResources()
|
void OpenGLHostDisplay::DestroyResources()
|
||||||
{
|
{
|
||||||
#ifndef LIBRETRO
|
|
||||||
m_post_processing_chain.ClearStages();
|
m_post_processing_chain.ClearStages();
|
||||||
m_post_processing_input_texture.Destroy();
|
m_post_processing_input_texture.Destroy();
|
||||||
m_post_processing_ubo.reset();
|
m_post_processing_ubo.reset();
|
||||||
m_post_processing_stages.clear();
|
m_post_processing_stages.clear();
|
||||||
#endif
|
|
||||||
|
|
||||||
if (m_display_pixels_texture_id != 0)
|
if (m_display_pixels_texture_id != 0)
|
||||||
{
|
{
|
||||||
|
@ -727,7 +723,6 @@ void OpenGLHostDisplay::RenderDisplay()
|
||||||
|
|
||||||
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (!m_post_processing_chain.IsEmpty())
|
if (!m_post_processing_chain.IsEmpty())
|
||||||
{
|
{
|
||||||
ApplyPostProcessingChain(0, left, GetWindowHeight() - top - height, width, height, m_display_texture_handle,
|
ApplyPostProcessingChain(0, left, GetWindowHeight() - top - height, width, height, m_display_texture_handle,
|
||||||
|
@ -735,7 +730,6 @@ void OpenGLHostDisplay::RenderDisplay()
|
||||||
m_display_texture_view_y, m_display_texture_view_width, m_display_texture_view_height);
|
m_display_texture_view_y, m_display_texture_view_width, m_display_texture_view_height);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
RenderDisplay(left, GetWindowHeight() - top - height, width, height, m_display_texture_handle,
|
RenderDisplay(left, GetWindowHeight() - top - height, width, height, m_display_texture_handle,
|
||||||
m_display_texture_width, m_display_texture_height, m_display_texture_view_x, m_display_texture_view_y,
|
m_display_texture_width, m_display_texture_height, m_display_texture_view_x, m_display_texture_view_y,
|
||||||
|
@ -836,8 +830,6 @@ void OpenGLHostDisplay::RenderSoftwareCursor(s32 left, s32 bottom, s32 width, s3
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
|
|
||||||
bool OpenGLHostDisplay::SetPostProcessingChain(const std::string_view& config)
|
bool OpenGLHostDisplay::SetPostProcessingChain(const std::string_view& config)
|
||||||
{
|
{
|
||||||
if (config.empty())
|
if (config.empty())
|
||||||
|
@ -1006,13 +998,4 @@ void OpenGLHostDisplay::ApplyPostProcessingChain(GLuint final_target, s32 final_
|
||||||
m_post_processing_ubo->Unbind();
|
m_post_processing_ubo->Unbind();
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
bool OpenGLHostDisplay::SetPostProcessingChain(const std::string_view& config)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace FrontendCommon
|
} // namespace FrontendCommon
|
||||||
|
|
|
@ -14,11 +14,8 @@
|
||||||
#include "common/gl/texture.h"
|
#include "common/gl/texture.h"
|
||||||
#include "common/window_info.h"
|
#include "common/window_info.h"
|
||||||
#include "core/host_display.h"
|
#include "core/host_display.h"
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "postprocessing_chain.h"
|
#include "postprocessing_chain.h"
|
||||||
#endif
|
#include <memory>
|
||||||
|
|
||||||
namespace FrontendCommon {
|
namespace FrontendCommon {
|
||||||
|
|
||||||
|
@ -86,7 +83,6 @@ protected:
|
||||||
s32 texture_view_height, bool linear_filter);
|
s32 texture_view_height, bool linear_filter);
|
||||||
void RenderSoftwareCursor(s32 left, s32 bottom, s32 width, s32 height, HostDisplayTexture* texture_handle);
|
void RenderSoftwareCursor(s32 left, s32 bottom, s32 width, s32 height, HostDisplayTexture* texture_handle);
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
struct PostProcessingStage
|
struct PostProcessingStage
|
||||||
{
|
{
|
||||||
GL::Program program;
|
GL::Program program;
|
||||||
|
@ -98,7 +94,6 @@ protected:
|
||||||
void ApplyPostProcessingChain(GLuint final_target, s32 final_left, s32 final_top, s32 final_width, s32 final_height,
|
void ApplyPostProcessingChain(GLuint final_target, s32 final_left, s32 final_top, s32 final_width, s32 final_height,
|
||||||
void* texture_handle, u32 texture_width, s32 texture_height, s32 texture_view_x,
|
void* texture_handle, u32 texture_width, s32 texture_height, s32 texture_view_x,
|
||||||
s32 texture_view_y, s32 texture_view_width, s32 texture_view_height);
|
s32 texture_view_y, s32 texture_view_width, s32 texture_view_height);
|
||||||
#endif
|
|
||||||
|
|
||||||
std::unique_ptr<GL::Context> m_gl_context;
|
std::unique_ptr<GL::Context> m_gl_context;
|
||||||
|
|
||||||
|
@ -114,12 +109,10 @@ protected:
|
||||||
u32 m_display_pixels_texture_pbo_map_offset = 0;
|
u32 m_display_pixels_texture_pbo_map_offset = 0;
|
||||||
u32 m_display_pixels_texture_pbo_map_size = 0;
|
u32 m_display_pixels_texture_pbo_map_size = 0;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
PostProcessingChain m_post_processing_chain;
|
PostProcessingChain m_post_processing_chain;
|
||||||
GL::Texture m_post_processing_input_texture;
|
GL::Texture m_post_processing_input_texture;
|
||||||
std::unique_ptr<GL::StreamBuffer> m_post_processing_ubo;
|
std::unique_ptr<GL::StreamBuffer> m_post_processing_ubo;
|
||||||
std::vector<PostProcessingStage> m_post_processing_stages;
|
std::vector<PostProcessingStage> m_post_processing_stages;
|
||||||
#endif
|
|
||||||
|
|
||||||
bool m_use_gles2_draw_path = false;
|
bool m_use_gles2_draw_path = false;
|
||||||
};
|
};
|
||||||
|
|
|
@ -9,14 +9,12 @@
|
||||||
#include "common/vulkan/stream_buffer.h"
|
#include "common/vulkan/stream_buffer.h"
|
||||||
#include "common/vulkan/swap_chain.h"
|
#include "common/vulkan/swap_chain.h"
|
||||||
#include "common/vulkan/util.h"
|
#include "common/vulkan/util.h"
|
||||||
|
#include "postprocessing_shadergen.h"
|
||||||
#include <array>
|
#include <array>
|
||||||
#ifdef WITH_IMGUI
|
#ifdef WITH_IMGUI
|
||||||
#include "imgui.h"
|
#include "imgui.h"
|
||||||
#include "imgui_impl_vulkan.h"
|
#include "imgui_impl_vulkan.h"
|
||||||
#endif
|
#endif
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "postprocessing_shadergen.h"
|
|
||||||
#endif
|
|
||||||
Log_SetChannel(VulkanHostDisplay);
|
Log_SetChannel(VulkanHostDisplay);
|
||||||
|
|
||||||
namespace FrontendCommon {
|
namespace FrontendCommon {
|
||||||
|
@ -330,7 +328,8 @@ bool VulkanHostDisplay::CreateRenderDevice(const WindowInfo& wi, std::string_vie
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool VulkanHostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device, bool threaded_presentation)
|
bool VulkanHostDisplay::InitializeRenderDevice(std::string_view shader_cache_directory, bool debug_device,
|
||||||
|
bool threaded_presentation)
|
||||||
{
|
{
|
||||||
Vulkan::ShaderCache::Create(shader_cache_directory, debug_device);
|
Vulkan::ShaderCache::Create(shader_cache_directory, debug_device);
|
||||||
|
|
||||||
|
@ -424,8 +423,6 @@ void main()
|
||||||
if (m_pipeline_layout == VK_NULL_HANDLE)
|
if (m_pipeline_layout == VK_NULL_HANDLE)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
|
|
||||||
dslbuilder.AddBinding(1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT);
|
dslbuilder.AddBinding(1, VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER, 1, VK_SHADER_STAGE_FRAGMENT_BIT);
|
||||||
m_post_process_descriptor_set_layout = dslbuilder.Create(device);
|
m_post_process_descriptor_set_layout = dslbuilder.Create(device);
|
||||||
if (m_post_process_descriptor_set_layout == VK_NULL_HANDLE)
|
if (m_post_process_descriptor_set_layout == VK_NULL_HANDLE)
|
||||||
|
@ -450,8 +447,6 @@ void main()
|
||||||
if (m_post_process_ubo_pipeline_layout == VK_NULL_HANDLE)
|
if (m_post_process_ubo_pipeline_layout == VK_NULL_HANDLE)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
VkShaderModule vertex_shader = g_vulkan_shader_cache->GetVertexShader(fullscreen_quad_vertex_shader);
|
VkShaderModule vertex_shader = g_vulkan_shader_cache->GetVertexShader(fullscreen_quad_vertex_shader);
|
||||||
if (vertex_shader == VK_NULL_HANDLE)
|
if (vertex_shader == VK_NULL_HANDLE)
|
||||||
return false;
|
return false;
|
||||||
|
@ -684,7 +679,6 @@ void VulkanHostDisplay::RenderDisplay()
|
||||||
|
|
||||||
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
const auto [left, top, width, height] = CalculateDrawRect(GetWindowWidth(), GetWindowHeight(), m_display_top_margin);
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
if (!m_post_processing_chain.IsEmpty())
|
if (!m_post_processing_chain.IsEmpty())
|
||||||
{
|
{
|
||||||
ApplyPostProcessingChain(left, top, width, height, m_display_texture_handle, m_display_texture_width,
|
ApplyPostProcessingChain(left, top, width, height, m_display_texture_handle, m_display_texture_width,
|
||||||
|
@ -692,7 +686,6 @@ void VulkanHostDisplay::RenderDisplay()
|
||||||
m_display_texture_view_width, m_display_texture_view_height);
|
m_display_texture_view_width, m_display_texture_view_height);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
BeginSwapChainRenderPass(m_swap_chain->GetCurrentFramebuffer());
|
BeginSwapChainRenderPass(m_swap_chain->GetCurrentFramebuffer());
|
||||||
RenderDisplay(left, top, width, height, m_display_texture_handle, m_display_texture_width, m_display_texture_height,
|
RenderDisplay(left, top, width, height, m_display_texture_handle, m_display_texture_width, m_display_texture_height,
|
||||||
|
@ -798,8 +791,6 @@ std::vector<std::string> VulkanHostDisplay::EnumerateAdapterNames()
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
|
|
||||||
VulkanHostDisplay::PostProcessingStage::PostProcessingStage(PostProcessingStage&& move)
|
VulkanHostDisplay::PostProcessingStage::PostProcessingStage(PostProcessingStage&& move)
|
||||||
: pipeline(move.pipeline), output_framebuffer(move.output_framebuffer),
|
: pipeline(move.pipeline), output_framebuffer(move.output_framebuffer),
|
||||||
output_texture(std::move(move.output_texture)), uniforms_size(move.uniforms_size)
|
output_texture(std::move(move.output_texture)), uniforms_size(move.uniforms_size)
|
||||||
|
@ -1058,13 +1049,4 @@ void VulkanHostDisplay::ApplyPostProcessingChain(s32 final_left, s32 final_top,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#else // LIBRETRO
|
|
||||||
|
|
||||||
bool VulkanHostDisplay::SetPostProcessingChain(const std::string_view& config)
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
} // namespace FrontendCommon
|
} // namespace FrontendCommon
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
#include "common/vulkan/swap_chain.h"
|
#include "common/vulkan/swap_chain.h"
|
||||||
#include "common/window_info.h"
|
#include "common/window_info.h"
|
||||||
#include "core/host_display.h"
|
#include "core/host_display.h"
|
||||||
|
#include "postprocessing_chain.h"
|
||||||
#include "vulkan_loader.h"
|
#include "vulkan_loader.h"
|
||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string_view>
|
#include <string_view>
|
||||||
|
@ -13,10 +14,6 @@ class StreamBuffer;
|
||||||
class SwapChain;
|
class SwapChain;
|
||||||
} // namespace Vulkan
|
} // namespace Vulkan
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
#include "postprocessing_chain.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace FrontendCommon {
|
namespace FrontendCommon {
|
||||||
|
|
||||||
class VulkanHostDisplay : public HostDisplay
|
class VulkanHostDisplay : public HostDisplay
|
||||||
|
@ -77,7 +74,6 @@ protected:
|
||||||
float src_rect_height;
|
float src_rect_height;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
struct PostProcessingStage
|
struct PostProcessingStage
|
||||||
{
|
{
|
||||||
PostProcessingStage() = default;
|
PostProcessingStage() = default;
|
||||||
|
@ -94,7 +90,6 @@ protected:
|
||||||
void ApplyPostProcessingChain(s32 final_left, s32 final_top, s32 final_width, s32 final_height, void* texture_handle,
|
void ApplyPostProcessingChain(s32 final_left, s32 final_top, s32 final_width, s32 final_height, void* texture_handle,
|
||||||
u32 texture_width, s32 texture_height, s32 texture_view_x, s32 texture_view_y,
|
u32 texture_width, s32 texture_height, s32 texture_view_x, s32 texture_view_y,
|
||||||
s32 texture_view_width, s32 texture_view_height);
|
s32 texture_view_width, s32 texture_view_height);
|
||||||
#endif
|
|
||||||
|
|
||||||
// Can be overridden by frontends.
|
// Can be overridden by frontends.
|
||||||
virtual VkRenderPass GetRenderPassForDisplay() const;
|
virtual VkRenderPass GetRenderPassForDisplay() const;
|
||||||
|
@ -128,7 +123,6 @@ protected:
|
||||||
Vulkan::StagingTexture m_upload_staging_texture;
|
Vulkan::StagingTexture m_upload_staging_texture;
|
||||||
Vulkan::StagingTexture m_readback_staging_texture;
|
Vulkan::StagingTexture m_readback_staging_texture;
|
||||||
|
|
||||||
#ifndef LIBRETRO
|
|
||||||
VkDescriptorSetLayout m_post_process_descriptor_set_layout = VK_NULL_HANDLE;
|
VkDescriptorSetLayout m_post_process_descriptor_set_layout = VK_NULL_HANDLE;
|
||||||
VkDescriptorSetLayout m_post_process_ubo_descriptor_set_layout = VK_NULL_HANDLE;
|
VkDescriptorSetLayout m_post_process_ubo_descriptor_set_layout = VK_NULL_HANDLE;
|
||||||
VkPipelineLayout m_post_process_pipeline_layout = VK_NULL_HANDLE;
|
VkPipelineLayout m_post_process_pipeline_layout = VK_NULL_HANDLE;
|
||||||
|
@ -139,7 +133,6 @@ protected:
|
||||||
VkFramebuffer m_post_processing_input_framebuffer = VK_NULL_HANDLE;
|
VkFramebuffer m_post_processing_input_framebuffer = VK_NULL_HANDLE;
|
||||||
Vulkan::StreamBuffer m_post_processing_ubo;
|
Vulkan::StreamBuffer m_post_processing_ubo;
|
||||||
std::vector<PostProcessingStage> m_post_processing_stages;
|
std::vector<PostProcessingStage> m_post_processing_stages;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace FrontendCommon
|
} // namespace FrontendCommon
|
Loading…
Reference in New Issue