mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-01-09 22:46:08 +01:00
104 lines
3.1 KiB
C
104 lines
3.1 KiB
C
#pragma once
|
|
|
|
#include "../dxgi/dxgi_interfaces.h"
|
|
|
|
#include "d3d11_include.h"
|
|
|
|
/**
|
|
* \brief D3D11 extension
|
|
*
|
|
* Lists D3D11 extensions supported by DXVK.
|
|
*/
|
|
enum D3D11_VK_EXTENSION : uint32_t {
|
|
D3D11_VK_EXT_MULTI_DRAW_INDIRECT = 0,
|
|
D3D11_VK_EXT_MULTI_DRAW_INDIRECT_COUNT = 1,
|
|
D3D11_VK_EXT_DEPTH_BOUNDS = 2,
|
|
D3D11_VK_EXT_BARRIER_CONTROL = 3,
|
|
};
|
|
|
|
|
|
/**
|
|
* \brief Barrier control flags
|
|
*/
|
|
enum D3D11_VK_BARRIER_CONTROL : uint32_t {
|
|
D3D11_VK_BARRIER_CONTROL_IGNORE_WRITE_AFTER_WRITE = 1 << 0,
|
|
};
|
|
|
|
|
|
/**
|
|
* \brief Extended D3D11 device
|
|
*
|
|
* Introduces a method to check for extension support.
|
|
*/
|
|
MIDL_INTERFACE("8a6e3c42-f74c-45b7-8265-a231b677ca17")
|
|
ID3D11VkExtDevice : public IUnknown {
|
|
static const GUID guid;
|
|
|
|
/**
|
|
* \brief Checks whether an extension is supported
|
|
*
|
|
* \param [in] Extension The extension to check
|
|
* \returns \c TRUE if the extension is supported
|
|
*/
|
|
virtual BOOL STDMETHODCALLTYPE GetExtensionSupport(
|
|
D3D11_VK_EXTENSION Extension) = 0;
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* \brief Extended D3D11 context
|
|
*
|
|
* Provides functionality for various D3D11
|
|
* extensions.
|
|
*/
|
|
MIDL_INTERFACE("fd0bca13-5cb6-4c3a-987e-4750de2ca791")
|
|
ID3D11VkExtContext : public IUnknown {
|
|
static const GUID guid;
|
|
|
|
virtual void STDMETHODCALLTYPE MultiDrawIndirect(
|
|
UINT DrawCount,
|
|
ID3D11Buffer* pBufferForArgs,
|
|
UINT ByteOffsetForArgs,
|
|
UINT ByteStrideForArgs) = 0;
|
|
|
|
virtual void STDMETHODCALLTYPE MultiDrawIndexedIndirect(
|
|
UINT DrawCount,
|
|
ID3D11Buffer* pBufferForArgs,
|
|
UINT ByteOffsetForArgs,
|
|
UINT ByteStrideForArgs) = 0;
|
|
|
|
virtual void STDMETHODCALLTYPE MultiDrawIndirectCount(
|
|
UINT MaxDrawCount,
|
|
ID3D11Buffer* pBufferForCount,
|
|
UINT ByteOffsetForCount,
|
|
ID3D11Buffer* pBufferForArgs,
|
|
UINT ByteOffsetForArgs,
|
|
UINT ByteStrideForArgs) = 0;
|
|
|
|
virtual void STDMETHODCALLTYPE MultiDrawIndexedIndirectCount(
|
|
UINT MaxDrawCount,
|
|
ID3D11Buffer* pBufferForCount,
|
|
UINT ByteOffsetForCount,
|
|
ID3D11Buffer* pBufferForArgs,
|
|
UINT ByteOffsetForArgs,
|
|
UINT ByteStrideForArgs) = 0;
|
|
|
|
virtual void STDMETHODCALLTYPE SetDepthBoundsTest(
|
|
BOOL Enable,
|
|
FLOAT MinDepthBounds,
|
|
FLOAT MaxDepthBounds) = 0;
|
|
|
|
virtual void STDMETHODCALLTYPE SetBarrierControl(
|
|
UINT ControlFlags) = 0;
|
|
|
|
};
|
|
|
|
#ifdef _MSC_VER
|
|
struct __declspec(uuid("8a6e3c42-f74c-45b7-8265-a231b677ca17")) ID3D11VkExtDevice;
|
|
struct __declspec(uuid("fd0bca13-5cb6-4c3a-987e-4750de2ca791")) ID3D11VkExtContext;
|
|
#else
|
|
DXVK_DEFINE_GUID(ID3D11VkExtDevice);
|
|
DXVK_DEFINE_GUID(ID3D11VkExtContext);
|
|
#endif
|