mirror of
https://github.com/doitsujin/dxvk.git
synced 2025-03-21 13:29:26 +01:00
[d3d11] Move D3D11DeviceContextExt to D3D11CommonContext
Will be needed for both EmitCs and TrackSequenceNumber functions.
This commit is contained in:
parent
3f5f731c42
commit
a7c25a01f2
@ -15,7 +15,6 @@ namespace dxvk {
|
||||
const Rc<DxvkDevice>& Device,
|
||||
DxvkCsChunkFlags CsFlags)
|
||||
: D3D11DeviceChild<ID3D11DeviceContext4>(pParent),
|
||||
m_contextExt(this),
|
||||
m_multithread(this, false),
|
||||
m_device (Device),
|
||||
m_staging (Device, StagingBufferSize),
|
||||
|
@ -19,6 +19,7 @@ namespace dxvk {
|
||||
class D3D11Device;
|
||||
|
||||
class D3D11DeviceContext : public D3D11DeviceChild<ID3D11DeviceContext4> {
|
||||
template<typename T>
|
||||
friend class D3D11DeviceContextExt;
|
||||
// Needed in order to call EmitCs for pushing markers
|
||||
template<typename T>
|
||||
@ -687,7 +688,6 @@ namespace dxvk {
|
||||
|
||||
protected:
|
||||
|
||||
D3D11DeviceContextExt m_contextExt;
|
||||
D3D10Multithread m_multithread;
|
||||
|
||||
Rc<DxvkDevice> m_device;
|
||||
|
@ -10,6 +10,7 @@ namespace dxvk {
|
||||
const Rc<DxvkDevice>& Device,
|
||||
DxvkCsChunkFlags CsFlags)
|
||||
: D3D11DeviceContext(pParent, Device, CsFlags),
|
||||
m_contextExt(static_cast<ContextType*>(this)),
|
||||
m_annotation(static_cast<ContextType*>(this), Device) {
|
||||
|
||||
}
|
||||
|
@ -89,6 +89,7 @@ namespace dxvk {
|
||||
|
||||
protected:
|
||||
|
||||
D3D11DeviceContextExt<ContextType> m_contextExt;
|
||||
D3D11UserDefinedAnnotation<ContextType> m_annotation;
|
||||
|
||||
void UpdateResource(
|
||||
|
@ -3,38 +3,44 @@
|
||||
#include <cstring>
|
||||
|
||||
#include "d3d11_device.h"
|
||||
#include "d3d11_context.h"
|
||||
#include "d3d11_context_imm.h"
|
||||
#include "d3d11_context_def.h"
|
||||
#include "d3d11_cuda.h"
|
||||
|
||||
#include "../util/log/log.h"
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
D3D11DeviceContextExt::D3D11DeviceContextExt(
|
||||
D3D11DeviceContext* pContext)
|
||||
template<typename ContextType>
|
||||
D3D11DeviceContextExt<ContextType>::D3D11DeviceContextExt(
|
||||
ContextType* pContext)
|
||||
: m_ctx(pContext) {
|
||||
|
||||
}
|
||||
|
||||
|
||||
ULONG STDMETHODCALLTYPE D3D11DeviceContextExt::AddRef() {
|
||||
template<typename ContextType>
|
||||
ULONG STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::AddRef() {
|
||||
return m_ctx->AddRef();
|
||||
}
|
||||
|
||||
|
||||
ULONG STDMETHODCALLTYPE D3D11DeviceContextExt::Release() {
|
||||
template<typename ContextType>
|
||||
ULONG STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::Release() {
|
||||
return m_ctx->Release();
|
||||
}
|
||||
|
||||
|
||||
HRESULT STDMETHODCALLTYPE D3D11DeviceContextExt::QueryInterface(
|
||||
template<typename ContextType>
|
||||
HRESULT STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::QueryInterface(
|
||||
REFIID riid,
|
||||
void** ppvObject) {
|
||||
return m_ctx->QueryInterface(riid, ppvObject);
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::MultiDrawIndirect(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::MultiDrawIndirect(
|
||||
UINT DrawCount,
|
||||
ID3D11Buffer* pBufferForArgs,
|
||||
UINT ByteOffsetForArgs,
|
||||
@ -52,7 +58,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::MultiDrawIndexedIndirect(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::MultiDrawIndexedIndirect(
|
||||
UINT DrawCount,
|
||||
ID3D11Buffer* pBufferForArgs,
|
||||
UINT ByteOffsetForArgs,
|
||||
@ -70,7 +77,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::MultiDrawIndirectCount(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::MultiDrawIndirectCount(
|
||||
UINT MaxDrawCount,
|
||||
ID3D11Buffer* pBufferForCount,
|
||||
UINT ByteOffsetForCount,
|
||||
@ -91,7 +99,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::MultiDrawIndexedIndirectCount(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::MultiDrawIndexedIndirectCount(
|
||||
UINT MaxDrawCount,
|
||||
ID3D11Buffer* pBufferForCount,
|
||||
UINT ByteOffsetForCount,
|
||||
@ -112,7 +121,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::SetDepthBoundsTest(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::SetDepthBoundsTest(
|
||||
BOOL Enable,
|
||||
FLOAT MinDepthBounds,
|
||||
FLOAT MaxDepthBounds) {
|
||||
@ -129,7 +139,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt::SetBarrierControl(
|
||||
template<typename ContextType>
|
||||
void STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::SetBarrierControl(
|
||||
UINT ControlFlags) {
|
||||
D3D10DeviceLock lock = m_ctx->LockContext();
|
||||
DxvkBarrierControlFlags flags;
|
||||
@ -146,7 +157,8 @@ namespace dxvk {
|
||||
}
|
||||
|
||||
|
||||
bool STDMETHODCALLTYPE D3D11DeviceContextExt::LaunchCubinShaderNVX(IUnknown* hShader, uint32_t GridX, uint32_t GridY, uint32_t GridZ,
|
||||
template<typename ContextType>
|
||||
bool STDMETHODCALLTYPE D3D11DeviceContextExt<ContextType>::LaunchCubinShaderNVX(IUnknown* hShader, uint32_t GridX, uint32_t GridY, uint32_t GridZ,
|
||||
const void* pParams, uint32_t ParamSize, void* const* pReadResources, uint32_t NumReadResources, void* const* pWriteResources, uint32_t NumWriteResources) {
|
||||
D3D10DeviceLock lock = m_ctx->LockContext();
|
||||
|
||||
@ -202,4 +214,9 @@ namespace dxvk {
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
template class D3D11DeviceContextExt<D3D11DeferredContext>;
|
||||
template class D3D11DeviceContextExt<D3D11ImmediateContext>;
|
||||
|
||||
}
|
||||
|
@ -4,14 +4,16 @@
|
||||
|
||||
namespace dxvk {
|
||||
|
||||
class D3D11DeviceContext;
|
||||
class D3D11DeferredContext;
|
||||
class D3D11ImmediateContext;
|
||||
|
||||
template<typename ContextType>
|
||||
class D3D11DeviceContextExt : public ID3D11VkExtContext1 {
|
||||
|
||||
public:
|
||||
|
||||
D3D11DeviceContextExt(
|
||||
D3D11DeviceContext* pContext);
|
||||
ContextType* pContext);
|
||||
|
||||
ULONG STDMETHODCALLTYPE AddRef();
|
||||
|
||||
@ -71,7 +73,7 @@ namespace dxvk {
|
||||
|
||||
private:
|
||||
|
||||
D3D11DeviceContext* m_ctx;
|
||||
ContextType* m_ctx;
|
||||
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user