mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-13 19:29:14 +01:00
[dxvk] Move presenter implementation to DXVK module
This commit is contained in:
parent
be875cd7e6
commit
b1b0abdbbf
@ -350,8 +350,8 @@ namespace dxvk {
|
||||
return DXGI_STATUS_OCCLUDED;
|
||||
|
||||
// Presentation semaphores and WSI swap chain image
|
||||
vk::PresenterInfo info = m_presenter->info();
|
||||
vk::PresenterSync sync;
|
||||
PresenterInfo info = m_presenter->info();
|
||||
PresenterSync sync;
|
||||
|
||||
uint32_t imageIndex = 0;
|
||||
|
||||
@ -397,7 +397,7 @@ namespace dxvk {
|
||||
|
||||
void D3D11SwapChain::SubmitPresent(
|
||||
D3D11ImmediateContext* pContext,
|
||||
const vk::PresenterSync& Sync,
|
||||
const PresenterSync& Sync,
|
||||
uint32_t FrameId) {
|
||||
auto lock = pContext->LockContext();
|
||||
|
||||
@ -441,7 +441,7 @@ namespace dxvk {
|
||||
m_presentStatus.result = VK_SUCCESS;
|
||||
m_dirtyHdrMetadata = true;
|
||||
|
||||
vk::PresenterDesc presenterDesc;
|
||||
PresenterDesc presenterDesc;
|
||||
presenterDesc.imageExtent = { m_desc.Width, m_desc.Height };
|
||||
presenterDesc.imageCount = PickImageCount(m_desc.BufferCount + 1);
|
||||
presenterDesc.numFormats = PickFormats(m_desc.Format, presenterDesc.formats);
|
||||
@ -479,21 +479,21 @@ namespace dxvk {
|
||||
void D3D11SwapChain::CreatePresenter() {
|
||||
DxvkDeviceQueue graphicsQueue = m_device->queues().graphics;
|
||||
|
||||
vk::PresenterDevice presenterDevice;
|
||||
PresenterDevice presenterDevice;
|
||||
presenterDevice.queueFamily = graphicsQueue.queueFamily;
|
||||
presenterDevice.queue = graphicsQueue.queueHandle;
|
||||
presenterDevice.adapter = m_device->adapter()->handle();
|
||||
presenterDevice.features.fullScreenExclusive = m_device->features().extFullScreenExclusive;
|
||||
presenterDevice.features.hdrMetadata = m_device->features().extHdrMetadata;
|
||||
|
||||
vk::PresenterDesc presenterDesc;
|
||||
PresenterDesc presenterDesc;
|
||||
presenterDesc.imageExtent = { m_desc.Width, m_desc.Height };
|
||||
presenterDesc.imageCount = PickImageCount(m_desc.BufferCount + 1);
|
||||
presenterDesc.numFormats = PickFormats(m_desc.Format, presenterDesc.formats);
|
||||
presenterDesc.numPresentModes = PickPresentModes(false, presenterDesc.presentModes);
|
||||
presenterDesc.fullScreenExclusive = PickFullscreenMode();
|
||||
|
||||
m_presenter = new vk::Presenter(
|
||||
m_presenter = new Presenter(
|
||||
m_device->adapter()->vki(),
|
||||
m_device->vkd(),
|
||||
presenterDevice,
|
||||
@ -513,7 +513,7 @@ namespace dxvk {
|
||||
|
||||
|
||||
void D3D11SwapChain::CreateRenderTargetViews() {
|
||||
vk::PresenterInfo info = m_presenter->info();
|
||||
PresenterInfo info = m_presenter->info();
|
||||
|
||||
m_imageViews.clear();
|
||||
m_imageViews.resize(info.imageCount);
|
||||
|
@ -97,7 +97,7 @@ namespace dxvk {
|
||||
Rc<DxvkDevice> m_device;
|
||||
Rc<DxvkContext> m_context;
|
||||
|
||||
Rc<vk::Presenter> m_presenter;
|
||||
Rc<Presenter> m_presenter;
|
||||
|
||||
Rc<DxvkImage> m_swapImage;
|
||||
Rc<DxvkImageView> m_swapImageView;
|
||||
@ -130,7 +130,7 @@ namespace dxvk {
|
||||
|
||||
void SubmitPresent(
|
||||
D3D11ImmediateContext* pContext,
|
||||
const vk::PresenterSync& Sync,
|
||||
const PresenterSync& Sync,
|
||||
uint32_t FrameId);
|
||||
|
||||
void SynchronizePresent();
|
||||
|
@ -754,8 +754,8 @@ namespace dxvk {
|
||||
SynchronizePresent();
|
||||
|
||||
// Presentation semaphores and WSI swap chain image
|
||||
vk::PresenterInfo info = m_presenter->info();
|
||||
vk::PresenterSync sync;
|
||||
PresenterInfo info = m_presenter->info();
|
||||
PresenterSync sync;
|
||||
|
||||
uint32_t imageIndex = 0;
|
||||
|
||||
@ -808,7 +808,7 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void D3D9SwapChainEx::SubmitPresent(const vk::PresenterSync& Sync, uint32_t FrameId) {
|
||||
void D3D9SwapChainEx::SubmitPresent(const PresenterSync& Sync, uint32_t FrameId) {
|
||||
// Present from CS thread so that we don't
|
||||
// have to synchronize with it first.
|
||||
m_presentStatus.result = VK_NOT_READY;
|
||||
@ -847,7 +847,7 @@ namespace dxvk {
|
||||
|
||||
m_presentStatus.result = VK_SUCCESS;
|
||||
|
||||
vk::PresenterDesc presenterDesc;
|
||||
PresenterDesc presenterDesc;
|
||||
presenterDesc.imageExtent = GetPresentExtent();
|
||||
presenterDesc.imageCount = PickImageCount(m_presentParams.BackBufferCount + 1);
|
||||
presenterDesc.numFormats = PickFormats(EnumerateFormat(m_presentParams.BackBufferFormat), presenterDesc.formats);
|
||||
@ -883,19 +883,19 @@ namespace dxvk {
|
||||
|
||||
DxvkDeviceQueue graphicsQueue = m_device->queues().graphics;
|
||||
|
||||
vk::PresenterDevice presenterDevice;
|
||||
PresenterDevice presenterDevice;
|
||||
presenterDevice.queueFamily = graphicsQueue.queueFamily;
|
||||
presenterDevice.queue = graphicsQueue.queueHandle;
|
||||
presenterDevice.adapter = m_device->adapter()->handle();
|
||||
|
||||
vk::PresenterDesc presenterDesc;
|
||||
PresenterDesc presenterDesc;
|
||||
presenterDesc.imageExtent = GetPresentExtent();
|
||||
presenterDesc.imageCount = PickImageCount(m_presentParams.BackBufferCount + 1);
|
||||
presenterDesc.numFormats = PickFormats(EnumerateFormat(m_presentParams.BackBufferFormat), presenterDesc.formats);
|
||||
presenterDesc.numPresentModes = PickPresentModes(false, presenterDesc.presentModes);
|
||||
presenterDesc.fullScreenExclusive = PickFullscreenMode();
|
||||
|
||||
m_presenter = new vk::Presenter(
|
||||
m_presenter = new Presenter(
|
||||
m_device->adapter()->vki(),
|
||||
m_device->vkd(),
|
||||
presenterDevice,
|
||||
@ -916,7 +916,7 @@ namespace dxvk {
|
||||
|
||||
|
||||
void D3D9SwapChainEx::CreateRenderTargetViews() {
|
||||
vk::PresenterInfo info = m_presenter->info();
|
||||
PresenterInfo info = m_presenter->info();
|
||||
|
||||
m_imageViews.clear();
|
||||
m_imageViews.resize(info.imageCount);
|
||||
|
@ -134,7 +134,7 @@ namespace dxvk {
|
||||
Rc<DxvkContext> m_context;
|
||||
Rc<DxvkSwapchainBlitter> m_blitter;
|
||||
|
||||
Rc<vk::Presenter> m_presenter;
|
||||
Rc<Presenter> m_presenter;
|
||||
|
||||
Rc<hud::Hud> m_hud;
|
||||
|
||||
@ -179,7 +179,7 @@ namespace dxvk {
|
||||
|
||||
void PresentImage(UINT PresentInterval);
|
||||
|
||||
void SubmitPresent(const vk::PresenterSync& Sync, uint32_t FrameId);
|
||||
void SubmitPresent(const PresenterSync& Sync, uint32_t FrameId);
|
||||
|
||||
void SynchronizePresent();
|
||||
|
||||
|
@ -397,7 +397,7 @@ namespace dxvk {
|
||||
m_cmdSubmissions.clear();
|
||||
m_cmdSparseBinds.clear();
|
||||
|
||||
m_wsiSemaphores = vk::PresenterSync();
|
||||
m_wsiSemaphores = PresenterSync();
|
||||
|
||||
// Reset actual command buffers and pools
|
||||
m_graphicsPool->reset();
|
||||
|
@ -2,8 +2,6 @@
|
||||
|
||||
#include <limits>
|
||||
|
||||
#include "../vulkan/vulkan_presenter.h"
|
||||
|
||||
#include "dxvk_bind_mask.h"
|
||||
#include "dxvk_buffer.h"
|
||||
#include "dxvk_descriptor.h"
|
||||
@ -14,6 +12,7 @@
|
||||
#include "dxvk_lifetime.h"
|
||||
#include "dxvk_limits.h"
|
||||
#include "dxvk_pipelayout.h"
|
||||
#include "dxvk_presenter.h"
|
||||
#include "dxvk_signal.h"
|
||||
#include "dxvk_sparse.h"
|
||||
#include "dxvk_staging.h"
|
||||
@ -354,7 +353,7 @@ namespace dxvk {
|
||||
* The given semaphores must be binary semaphores.
|
||||
* \param [in] wsiSemaphores Pair of WSI semaphores
|
||||
*/
|
||||
void setWsiSemaphores(const vk::PresenterSync& wsiSemaphores) {
|
||||
void setWsiSemaphores(const PresenterSync& wsiSemaphores) {
|
||||
m_wsiSemaphores = wsiSemaphores;
|
||||
}
|
||||
|
||||
@ -1027,7 +1026,7 @@ namespace dxvk {
|
||||
|
||||
DxvkCommandSubmissionInfo m_cmd;
|
||||
|
||||
vk::PresenterSync m_wsiSemaphores = { };
|
||||
PresenterSync m_wsiSemaphores = { };
|
||||
|
||||
DxvkLifetimeTracker m_resources;
|
||||
DxvkSignalTracker m_signalTracker;
|
||||
|
@ -252,7 +252,7 @@ namespace dxvk {
|
||||
|
||||
|
||||
void DxvkDevice::presentImage(
|
||||
const Rc<vk::Presenter>& presenter,
|
||||
const Rc<Presenter>& presenter,
|
||||
DxvkSubmitStatus* status) {
|
||||
status->result = VK_NOT_READY;
|
||||
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "dxvk_objects.h"
|
||||
#include "dxvk_options.h"
|
||||
#include "dxvk_pipemanager.h"
|
||||
#include "dxvk_presenter.h"
|
||||
#include "dxvk_queue.h"
|
||||
#include "dxvk_recycler.h"
|
||||
#include "dxvk_renderpass.h"
|
||||
@ -25,8 +26,6 @@
|
||||
#include "dxvk_unbound.h"
|
||||
#include "dxvk_marker.h"
|
||||
|
||||
#include "../vulkan/vulkan_presenter.h"
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
class DxvkInstance;
|
||||
@ -458,7 +457,7 @@ namespace dxvk {
|
||||
* \param [out] status Present status
|
||||
*/
|
||||
void presentImage(
|
||||
const Rc<vk::Presenter>& presenter,
|
||||
const Rc<Presenter>& presenter,
|
||||
DxvkSubmitStatus* status);
|
||||
|
||||
/**
|
||||
|
@ -1,14 +1,12 @@
|
||||
#include "vulkan_presenter.h"
|
||||
|
||||
#include "../dxvk/dxvk_format.h"
|
||||
#include "dxvk_presenter.h"
|
||||
|
||||
#include "../wsi/wsi_window.h"
|
||||
|
||||
namespace dxvk::vk {
|
||||
namespace dxvk {
|
||||
|
||||
Presenter::Presenter(
|
||||
const Rc<InstanceFn>& vki,
|
||||
const Rc<DeviceFn>& vkd,
|
||||
const Rc<vk::InstanceFn>& vki,
|
||||
const Rc<vk::DeviceFn>& vkd,
|
||||
PresenterDevice device,
|
||||
const PresenterDesc& desc)
|
||||
: m_vki(vki), m_vkd(vkd), m_device(device) {
|
@ -10,9 +10,11 @@
|
||||
#include "../util/util_math.h"
|
||||
#include "../util/util_string.h"
|
||||
|
||||
#include "vulkan_loader.h"
|
||||
#include "../vulkan/vulkan_loader.h"
|
||||
|
||||
namespace dxvk::vk {
|
||||
#include "dxvk_format.h"
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
/**
|
||||
* \brief Presenter description
|
||||
@ -95,8 +97,8 @@ namespace dxvk::vk {
|
||||
public:
|
||||
|
||||
Presenter(
|
||||
const Rc<InstanceFn>& vki,
|
||||
const Rc<DeviceFn>& vkd,
|
||||
const Rc<vk::InstanceFn>& vki,
|
||||
const Rc<vk::DeviceFn>& vkd,
|
||||
PresenterDevice device,
|
||||
const PresenterDesc& desc);
|
||||
|
||||
@ -201,8 +203,8 @@ namespace dxvk::vk {
|
||||
|
||||
private:
|
||||
|
||||
Rc<InstanceFn> m_vki;
|
||||
Rc<DeviceFn> m_vkd;
|
||||
Rc<vk::InstanceFn> m_vki;
|
||||
Rc<vk::DeviceFn> m_vkd;
|
||||
|
||||
PresenterDevice m_device;
|
||||
PresenterInfo m_info;
|
@ -6,9 +6,8 @@
|
||||
|
||||
#include "../util/thread.h"
|
||||
|
||||
#include "../vulkan/vulkan_presenter.h"
|
||||
|
||||
#include "dxvk_cmdlist.h"
|
||||
#include "dxvk_presenter.h"
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
@ -43,7 +42,7 @@ namespace dxvk {
|
||||
* a swap chain image on the device.
|
||||
*/
|
||||
struct DxvkPresentInfo {
|
||||
Rc<vk::Presenter> presenter;
|
||||
Rc<Presenter> presenter;
|
||||
};
|
||||
|
||||
|
||||
|
@ -92,6 +92,7 @@ dxvk_src = [
|
||||
'dxvk_options.cpp',
|
||||
'dxvk_pipelayout.cpp',
|
||||
'dxvk_pipemanager.cpp',
|
||||
'dxvk_presenter.cpp',
|
||||
'dxvk_queue.cpp',
|
||||
'dxvk_resource.cpp',
|
||||
'dxvk_sampler.cpp',
|
||||
|
@ -1,7 +1,6 @@
|
||||
vkcommon_src = files([
|
||||
'vulkan_loader.cpp',
|
||||
'vulkan_names.cpp',
|
||||
'vulkan_presenter.cpp',
|
||||
])
|
||||
|
||||
thread_dep = dependency('threads')
|
||||
|
Loading…
x
Reference in New Issue
Block a user