mirror of https://github.com/doitsujin/dxvk
43 lines
963 B
C
43 lines
963 B
C
|
#pragma once
|
||
|
|
||
|
#include "../util/com/com_object.h"
|
||
|
|
||
|
#include "../vulkan/vulkan_loader.h"
|
||
|
|
||
|
#include "dxgi_interfaces.h"
|
||
|
|
||
|
namespace dxvk {
|
||
|
|
||
|
/**
|
||
|
* \brief Surface factory
|
||
|
*
|
||
|
* Provides a way to transparently create a
|
||
|
* Vulkan surface for a given platform window.
|
||
|
*/
|
||
|
class DxgiSurfaceFactory : public ComObject<IDXGIVkSurfaceFactory> {
|
||
|
|
||
|
public:
|
||
|
|
||
|
DxgiSurfaceFactory(
|
||
|
PFN_vkGetInstanceProcAddr vulkanLoaderProc,
|
||
|
HWND hWnd);
|
||
|
|
||
|
~DxgiSurfaceFactory();
|
||
|
|
||
|
HRESULT STDMETHODCALLTYPE QueryInterface(
|
||
|
REFIID riid,
|
||
|
void** ppvObject);
|
||
|
|
||
|
VkResult STDMETHODCALLTYPE CreateSurface(
|
||
|
VkInstance Instance,
|
||
|
VkPhysicalDevice Adapter,
|
||
|
VkSurfaceKHR* pSurface);
|
||
|
|
||
|
private:
|
||
|
|
||
|
PFN_vkGetInstanceProcAddr m_vkGetInstanceProcAddr;
|
||
|
HWND m_window;
|
||
|
|
||
|
};
|
||
|
|
||
|
}
|