1
0
mirror of https://github.com/EduApps-CDG/OpenDX synced 2024-12-30 09:45:37 +01:00

[d3d10] Use context lock instead of separate device lock

This commit is contained in:
Robin 2018-12-30 20:38:35 +01:00 committed by Philip Rebohle
parent 4e22e4bc3a
commit 4c9af44356
9 changed files with 16 additions and 165 deletions

View File

@ -73,8 +73,6 @@ namespace dxvk {
D3D10_MAP MapType, D3D10_MAP MapType,
UINT MapFlags, UINT MapFlags,
void** ppData) { void** ppData) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -92,9 +90,7 @@ namespace dxvk {
} }
void STDMETHODCALLTYPE D3D10Buffer::Unmap() { void STDMETHODCALLTYPE D3D10Buffer::Unmap() {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);

View File

@ -8,9 +8,7 @@ namespace dxvk {
D3D10Device::D3D10Device( D3D10Device::D3D10Device(
D3D11Device* pDevice, D3D11Device* pDevice,
D3D11ImmediateContext* pContext) D3D11ImmediateContext* pContext)
: m_device(pDevice), m_context(pContext), : m_device(pDevice), m_context(pContext) {
m_multithread(this, !(pDevice->GetCreationFlags() & D3D10_CREATE_DEVICE_SINGLETHREADED)) {
} }
@ -716,8 +714,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::ClearRenderTargetView( void STDMETHODCALLTYPE D3D10Device::ClearRenderTargetView(
ID3D10RenderTargetView* pRenderTargetView, ID3D10RenderTargetView* pRenderTargetView,
const FLOAT ColorRGBA[4]) { const FLOAT ColorRGBA[4]) {
D3D10DeviceLock lock = LockDevice();
D3D10RenderTargetView* d3d10View = static_cast<D3D10RenderTargetView*>(pRenderTargetView); D3D10RenderTargetView* d3d10View = static_cast<D3D10RenderTargetView*>(pRenderTargetView);
D3D11RenderTargetView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr; D3D11RenderTargetView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr;
@ -730,8 +726,6 @@ namespace dxvk {
UINT ClearFlags, UINT ClearFlags,
FLOAT Depth, FLOAT Depth,
UINT8 Stencil) { UINT8 Stencil) {
D3D10DeviceLock lock = LockDevice();
D3D10DepthStencilView* d3d10View = static_cast<D3D10DepthStencilView*>(pDepthStencilView); D3D10DepthStencilView* d3d10View = static_cast<D3D10DepthStencilView*>(pDepthStencilView);
D3D11DepthStencilView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr; D3D11DepthStencilView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr;
@ -742,8 +736,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::SetPredication( void STDMETHODCALLTYPE D3D10Device::SetPredication(
ID3D10Predicate* pPredicate, ID3D10Predicate* pPredicate,
BOOL PredicateValue) { BOOL PredicateValue) {
D3D10DeviceLock lock = LockDevice();
D3D10Query* d3d10Predicate = static_cast<D3D10Query*>(pPredicate); D3D10Query* d3d10Predicate = static_cast<D3D10Query*>(pPredicate);
D3D11Query* d3d11Predicate = d3d10Predicate ? d3d10Predicate->GetD3D11Iface() : nullptr; D3D11Query* d3d11Predicate = d3d10Predicate ? d3d10Predicate->GetD3D11Iface() : nullptr;
@ -754,7 +746,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::GetPredication( void STDMETHODCALLTYPE D3D10Device::GetPredication(
ID3D10Predicate** ppPredicate, ID3D10Predicate** ppPredicate,
BOOL* pPredicateValue) { BOOL* pPredicateValue) {
D3D10DeviceLock lock = LockDevice();
ID3D11Predicate* d3d11Predicate = nullptr; ID3D11Predicate* d3d11Predicate = nullptr;
m_context->GetPredication( m_context->GetPredication(
@ -775,8 +766,6 @@ namespace dxvk {
ID3D10Resource* pSrcResource, ID3D10Resource* pSrcResource,
UINT SrcSubresource, UINT SrcSubresource,
const D3D10_BOX* pSrcBox) { const D3D10_BOX* pSrcBox) {
D3D10DeviceLock lock = LockDevice();
Com<ID3D11Resource> d3d11DstResource; Com<ID3D11Resource> d3d11DstResource;
Com<ID3D11Resource> d3d11SrcResource; Com<ID3D11Resource> d3d11SrcResource;
@ -793,8 +782,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::CopyResource( void STDMETHODCALLTYPE D3D10Device::CopyResource(
ID3D10Resource* pDstResource, ID3D10Resource* pDstResource,
ID3D10Resource* pSrcResource) { ID3D10Resource* pSrcResource) {
D3D10DeviceLock lock = LockDevice();
Com<ID3D11Resource> d3d11DstResource; Com<ID3D11Resource> d3d11DstResource;
Com<ID3D11Resource> d3d11SrcResource; Com<ID3D11Resource> d3d11SrcResource;
@ -814,8 +801,6 @@ namespace dxvk {
const void* pSrcData, const void* pSrcData,
UINT SrcRowPitch, UINT SrcRowPitch,
UINT SrcDepthPitch) { UINT SrcDepthPitch) {
D3D10DeviceLock lock = LockDevice();
Com<ID3D11Resource> d3d11DstResource; Com<ID3D11Resource> d3d11DstResource;
GetD3D11Resource(pDstResource, &d3d11DstResource); GetD3D11Resource(pDstResource, &d3d11DstResource);
@ -828,8 +813,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::GenerateMips( void STDMETHODCALLTYPE D3D10Device::GenerateMips(
ID3D10ShaderResourceView* pShaderResourceView) { ID3D10ShaderResourceView* pShaderResourceView) {
D3D10DeviceLock lock = LockDevice();
D3D10ShaderResourceView* d3d10View = static_cast<D3D10ShaderResourceView*>(pShaderResourceView); D3D10ShaderResourceView* d3d10View = static_cast<D3D10ShaderResourceView*>(pShaderResourceView);
D3D11ShaderResourceView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr; D3D11ShaderResourceView* d3d11View = d3d10View ? d3d10View->GetD3D11Iface() : nullptr;
@ -843,8 +826,6 @@ namespace dxvk {
ID3D10Resource* pSrcResource, ID3D10Resource* pSrcResource,
UINT SrcSubresource, UINT SrcSubresource,
DXGI_FORMAT Format) { DXGI_FORMAT Format) {
D3D10DeviceLock lock = LockDevice();
Com<ID3D11Resource> d3d11DstResource; Com<ID3D11Resource> d3d11DstResource;
Com<ID3D11Resource> d3d11SrcResource; Com<ID3D11Resource> d3d11SrcResource;
@ -861,8 +842,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::Draw( void STDMETHODCALLTYPE D3D10Device::Draw(
UINT VertexCount, UINT VertexCount,
UINT StartVertexLocation) { UINT StartVertexLocation) {
D3D10DeviceLock lock = LockDevice();
m_context->Draw(VertexCount, m_context->Draw(VertexCount,
StartVertexLocation); StartVertexLocation);
} }
@ -872,8 +851,6 @@ namespace dxvk {
UINT IndexCount, UINT IndexCount,
UINT StartIndexLocation, UINT StartIndexLocation,
INT BaseVertexLocation) { INT BaseVertexLocation) {
D3D10DeviceLock lock = LockDevice();
m_context->DrawIndexed(IndexCount, m_context->DrawIndexed(IndexCount,
StartIndexLocation, StartIndexLocation,
BaseVertexLocation); BaseVertexLocation);
@ -885,8 +862,6 @@ namespace dxvk {
UINT InstanceCount, UINT InstanceCount,
UINT StartVertexLocation, UINT StartVertexLocation,
UINT StartInstanceLocation) { UINT StartInstanceLocation) {
D3D10DeviceLock lock = LockDevice();
m_context->DrawInstanced( m_context->DrawInstanced(
VertexCountPerInstance, VertexCountPerInstance,
InstanceCount, InstanceCount,
@ -901,8 +876,6 @@ namespace dxvk {
UINT StartIndexLocation, UINT StartIndexLocation,
INT BaseVertexLocation, INT BaseVertexLocation,
UINT StartInstanceLocation) { UINT StartInstanceLocation) {
D3D10DeviceLock lock = LockDevice();
m_context->DrawIndexedInstanced( m_context->DrawIndexedInstanced(
IndexCountPerInstance, IndexCountPerInstance,
InstanceCount, InstanceCount,
@ -913,16 +886,12 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::DrawAuto() { void STDMETHODCALLTYPE D3D10Device::DrawAuto() {
D3D10DeviceLock lock = LockDevice();
m_context->DrawAuto(); m_context->DrawAuto();
} }
void STDMETHODCALLTYPE D3D10Device::IASetInputLayout( void STDMETHODCALLTYPE D3D10Device::IASetInputLayout(
ID3D10InputLayout* pInputLayout) { ID3D10InputLayout* pInputLayout) {
D3D10DeviceLock lock = LockDevice();
D3D10InputLayout* d3d10InputLayout = static_cast<D3D10InputLayout*>(pInputLayout); D3D10InputLayout* d3d10InputLayout = static_cast<D3D10InputLayout*>(pInputLayout);
D3D11InputLayout* d3d11InputLayout = d3d10InputLayout ? d3d10InputLayout->GetD3D11Iface() : nullptr; D3D11InputLayout* d3d11InputLayout = d3d10InputLayout ? d3d10InputLayout->GetD3D11Iface() : nullptr;
@ -932,8 +901,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::IASetPrimitiveTopology( void STDMETHODCALLTYPE D3D10Device::IASetPrimitiveTopology(
D3D10_PRIMITIVE_TOPOLOGY Topology) { D3D10_PRIMITIVE_TOPOLOGY Topology) {
D3D10DeviceLock lock = LockDevice();
m_context->IASetPrimitiveTopology( m_context->IASetPrimitiveTopology(
D3D11_PRIMITIVE_TOPOLOGY(Topology)); D3D11_PRIMITIVE_TOPOLOGY(Topology));
} }
@ -945,8 +912,6 @@ namespace dxvk {
ID3D10Buffer* const* ppVertexBuffers, ID3D10Buffer* const* ppVertexBuffers,
const UINT* pStrides, const UINT* pStrides,
const UINT* pOffsets) { const UINT* pOffsets) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT];
if (NumBuffers > D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT) if (NumBuffers > D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT)
@ -968,8 +933,6 @@ namespace dxvk {
ID3D10Buffer* pIndexBuffer, ID3D10Buffer* pIndexBuffer,
DXGI_FORMAT Format, DXGI_FORMAT Format,
UINT Offset) { UINT Offset) {
D3D10DeviceLock lock = LockDevice();
D3D10Buffer* d3d10Buffer = static_cast<D3D10Buffer*>(pIndexBuffer); D3D10Buffer* d3d10Buffer = static_cast<D3D10Buffer*>(pIndexBuffer);
D3D11Buffer* d3d11Buffer = d3d10Buffer ? d3d10Buffer->GetD3D11Iface() : nullptr; D3D11Buffer* d3d11Buffer = d3d10Buffer ? d3d10Buffer->GetD3D11Iface() : nullptr;
@ -980,8 +943,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::IAGetInputLayout( void STDMETHODCALLTYPE D3D10Device::IAGetInputLayout(
ID3D10InputLayout** ppInputLayout) { ID3D10InputLayout** ppInputLayout) {
ID3D11InputLayout* d3d11InputLayout = nullptr; ID3D11InputLayout* d3d11InputLayout = nullptr;
D3D10DeviceLock lock = LockDevice();
m_context->IAGetInputLayout(&d3d11InputLayout); m_context->IAGetInputLayout(&d3d11InputLayout);
*ppInputLayout = static_cast<D3D11InputLayout*>( *ppInputLayout = static_cast<D3D11InputLayout*>(
@ -991,8 +952,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::IAGetPrimitiveTopology( void STDMETHODCALLTYPE D3D10Device::IAGetPrimitiveTopology(
D3D10_PRIMITIVE_TOPOLOGY* pTopology) { D3D10_PRIMITIVE_TOPOLOGY* pTopology) {
D3D10DeviceLock lock = LockDevice();
D3D11_PRIMITIVE_TOPOLOGY d3d11Topology; D3D11_PRIMITIVE_TOPOLOGY d3d11Topology;
m_context->IAGetPrimitiveTopology(&d3d11Topology); m_context->IAGetPrimitiveTopology(&d3d11Topology);
@ -1008,15 +967,13 @@ namespace dxvk {
ID3D10Buffer** ppVertexBuffers, ID3D10Buffer** ppVertexBuffers,
UINT* pStrides, UINT* pStrides,
UINT* pOffsets) { UINT* pOffsets) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT];
m_context->IAGetVertexBuffers( m_context->IAGetVertexBuffers(
StartSlot, NumBuffers, StartSlot, NumBuffers,
ppVertexBuffers ? d3d11Buffers : nullptr, ppVertexBuffers ? d3d11Buffers : nullptr,
pStrides, pOffsets); pStrides, pOffsets);
if (ppVertexBuffers != nullptr) { if (ppVertexBuffers != nullptr) {
for (uint32_t i = 0; i < NumBuffers; i++) { for (uint32_t i = 0; i < NumBuffers; i++) {
ppVertexBuffers[i] = d3d11Buffers[i] ppVertexBuffers[i] = d3d11Buffers[i]
@ -1031,14 +988,12 @@ namespace dxvk {
ID3D10Buffer** pIndexBuffer, ID3D10Buffer** pIndexBuffer,
DXGI_FORMAT* Format, DXGI_FORMAT* Format,
UINT* Offset) { UINT* Offset) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffer = nullptr; ID3D11Buffer* d3d11Buffer = nullptr;
m_context->IAGetIndexBuffer( m_context->IAGetIndexBuffer(
pIndexBuffer ? &d3d11Buffer : nullptr, pIndexBuffer ? &d3d11Buffer : nullptr,
Format, Offset); Format, Offset);
if (pIndexBuffer != nullptr) if (pIndexBuffer != nullptr)
*pIndexBuffer = static_cast<D3D11Buffer*>(d3d11Buffer)->GetD3D10Iface(); *pIndexBuffer = static_cast<D3D11Buffer*>(d3d11Buffer)->GetD3D10Iface();
} }
@ -1046,8 +1001,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::VSSetShader( void STDMETHODCALLTYPE D3D10Device::VSSetShader(
ID3D10VertexShader* pVertexShader) { ID3D10VertexShader* pVertexShader) {
D3D10DeviceLock lock = LockDevice();
D3D10VertexShader* d3d10Shader = static_cast<D3D10VertexShader*>(pVertexShader); D3D10VertexShader* d3d10Shader = static_cast<D3D10VertexShader*>(pVertexShader);
D3D11VertexShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr; D3D11VertexShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr;
@ -1059,8 +1012,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers) { ID3D10Buffer* const* ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT) if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)
@ -1080,13 +1031,11 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews) { ID3D10ShaderResourceView* const* ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT) if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)
return; return;
for (uint32_t i = 0; i < NumViews; i++) { for (uint32_t i = 0; i < NumViews; i++) {
d3d11Views[i] = ppShaderResourceViews && ppShaderResourceViews[i] d3d11Views[i] = ppShaderResourceViews && ppShaderResourceViews[i]
? static_cast<D3D10ShaderResourceView*>(ppShaderResourceViews[i])->GetD3D11Iface() ? static_cast<D3D10ShaderResourceView*>(ppShaderResourceViews[i])->GetD3D11Iface()
@ -1101,8 +1050,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers) { ID3D10SamplerState* const* ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT) if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)
@ -1120,8 +1067,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::VSGetShader( void STDMETHODCALLTYPE D3D10Device::VSGetShader(
ID3D10VertexShader** ppVertexShader) { ID3D10VertexShader** ppVertexShader) {
D3D10DeviceLock lock = LockDevice();
ID3D11VertexShader* d3d11Shader = nullptr; ID3D11VertexShader* d3d11Shader = nullptr;
m_context->VSGetShader(&d3d11Shader, nullptr, nullptr); m_context->VSGetShader(&d3d11Shader, nullptr, nullptr);
@ -1133,8 +1078,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers) { ID3D10Buffer** ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
m_context->VSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers); m_context->VSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers);
@ -1150,8 +1093,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews) { ID3D10ShaderResourceView** ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
m_context->VSGetShaderResources(StartSlot, NumViews, d3d11Views); m_context->VSGetShaderResources(StartSlot, NumViews, d3d11Views);
@ -1167,8 +1108,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState** ppSamplers) { ID3D10SamplerState** ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
m_context->VSGetSamplers(StartSlot, NumSamplers, d3d11Samplers); m_context->VSGetSamplers(StartSlot, NumSamplers, d3d11Samplers);
@ -1182,8 +1121,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::GSSetShader( void STDMETHODCALLTYPE D3D10Device::GSSetShader(
ID3D10GeometryShader* pShader) { ID3D10GeometryShader* pShader) {
D3D10DeviceLock lock = LockDevice();
D3D10GeometryShader* d3d10Shader = static_cast<D3D10GeometryShader*>(pShader); D3D10GeometryShader* d3d10Shader = static_cast<D3D10GeometryShader*>(pShader);
D3D11GeometryShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr; D3D11GeometryShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr;
@ -1195,8 +1132,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers) { ID3D10Buffer* const* ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT) if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)
@ -1216,8 +1151,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews) { ID3D10ShaderResourceView* const* ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT) if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)
@ -1237,8 +1170,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers) { ID3D10SamplerState* const* ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT) if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)
@ -1256,8 +1187,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::GSGetShader( void STDMETHODCALLTYPE D3D10Device::GSGetShader(
ID3D10GeometryShader** ppGeometryShader) { ID3D10GeometryShader** ppGeometryShader) {
D3D10DeviceLock lock = LockDevice();
ID3D11GeometryShader* d3d11Shader = nullptr; ID3D11GeometryShader* d3d11Shader = nullptr;
m_context->GSGetShader(&d3d11Shader, nullptr, nullptr); m_context->GSGetShader(&d3d11Shader, nullptr, nullptr);
@ -1269,8 +1198,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers) { ID3D10Buffer** ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
m_context->GSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers); m_context->GSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers);
@ -1286,8 +1213,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews) { ID3D10ShaderResourceView** ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
m_context->GSGetShaderResources(StartSlot, NumViews, d3d11Views); m_context->GSGetShaderResources(StartSlot, NumViews, d3d11Views);
@ -1303,8 +1228,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState** ppSamplers) { ID3D10SamplerState** ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
m_context->GSGetSamplers(StartSlot, NumSamplers, d3d11Samplers); m_context->GSGetSamplers(StartSlot, NumSamplers, d3d11Samplers);
@ -1318,8 +1241,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::PSSetShader( void STDMETHODCALLTYPE D3D10Device::PSSetShader(
ID3D10PixelShader* pPixelShader) { ID3D10PixelShader* pPixelShader) {
D3D10DeviceLock lock = LockDevice();
D3D10PixelShader* d3d10Shader = static_cast<D3D10PixelShader*>(pPixelShader); D3D10PixelShader* d3d10Shader = static_cast<D3D10PixelShader*>(pPixelShader);
D3D11PixelShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr; D3D11PixelShader* d3d11Shader = d3d10Shader ? d3d10Shader->GetD3D11Iface() : nullptr;
@ -1331,8 +1252,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers) { ID3D10Buffer* const* ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT) if (NumBuffers > D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT)
@ -1352,8 +1271,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews) { ID3D10ShaderResourceView* const* ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT) if (NumViews > D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT)
@ -1373,8 +1290,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers) { ID3D10SamplerState* const* ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT) if (NumSamplers > D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT)
@ -1392,8 +1307,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::PSGetShader( void STDMETHODCALLTYPE D3D10Device::PSGetShader(
ID3D10PixelShader** ppPixelShader) { ID3D10PixelShader** ppPixelShader) {
D3D10DeviceLock lock = LockDevice();
ID3D11PixelShader* d3d11Shader = nullptr; ID3D11PixelShader* d3d11Shader = nullptr;
m_context->PSGetShader(&d3d11Shader, nullptr, nullptr); m_context->PSGetShader(&d3d11Shader, nullptr, nullptr);
@ -1405,8 +1318,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers) { ID3D10Buffer** ppConstantBuffers) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT];
m_context->PSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers); m_context->PSGetConstantBuffers(StartSlot, NumBuffers, d3d11Buffers);
@ -1422,8 +1333,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumViews, UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews) { ID3D10ShaderResourceView** ppShaderResourceViews) {
D3D10DeviceLock lock = LockDevice();
ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT]; ID3D11ShaderResourceView* d3d11Views[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT];
m_context->PSGetShaderResources(StartSlot, NumViews, d3d11Views); m_context->PSGetShaderResources(StartSlot, NumViews, d3d11Views);
@ -1439,8 +1348,6 @@ namespace dxvk {
UINT StartSlot, UINT StartSlot,
UINT NumSamplers, UINT NumSamplers,
ID3D10SamplerState** ppSamplers) { ID3D10SamplerState** ppSamplers) {
D3D10DeviceLock lock = LockDevice();
ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT]; ID3D11SamplerState* d3d11Samplers[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT];
m_context->PSGetSamplers(StartSlot, NumSamplers, d3d11Samplers); m_context->PSGetSamplers(StartSlot, NumSamplers, d3d11Samplers);
@ -1456,8 +1363,6 @@ namespace dxvk {
UINT NumViews, UINT NumViews,
ID3D10RenderTargetView* const* ppRenderTargetViews, ID3D10RenderTargetView* const* ppRenderTargetViews,
ID3D10DepthStencilView* pDepthStencilView) { ID3D10DepthStencilView* pDepthStencilView) {
D3D10DeviceLock lock = LockDevice();
ID3D11RenderTargetView* d3d11Rtv[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT]; ID3D11RenderTargetView* d3d11Rtv[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT];
if (NumViews > D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT) if (NumViews > D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT)
@ -1480,8 +1385,6 @@ namespace dxvk {
ID3D10BlendState* pBlendState, ID3D10BlendState* pBlendState,
const FLOAT BlendFactor[4], const FLOAT BlendFactor[4],
UINT SampleMask) { UINT SampleMask) {
D3D10DeviceLock lock = LockDevice();
D3D10BlendState* d3d10BlendState = static_cast<D3D10BlendState*>(pBlendState); D3D10BlendState* d3d10BlendState = static_cast<D3D10BlendState*>(pBlendState);
D3D11BlendState* d3d11BlendState = d3d10BlendState ? d3d10BlendState->GetD3D11Iface() : nullptr; D3D11BlendState* d3d11BlendState = d3d10BlendState ? d3d10BlendState->GetD3D11Iface() : nullptr;
@ -1503,15 +1406,13 @@ namespace dxvk {
UINT NumViews, UINT NumViews,
ID3D10RenderTargetView** ppRenderTargetViews, ID3D10RenderTargetView** ppRenderTargetViews,
ID3D10DepthStencilView** ppDepthStencilView) { ID3D10DepthStencilView** ppDepthStencilView) {
D3D10DeviceLock lock = LockDevice();
ID3D11RenderTargetView* d3d11Rtv[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT]; ID3D11RenderTargetView* d3d11Rtv[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT];
ID3D11DepthStencilView* d3d11Dsv = nullptr; ID3D11DepthStencilView* d3d11Dsv = nullptr;
m_context->OMGetRenderTargets(NumViews, m_context->OMGetRenderTargets(NumViews,
ppRenderTargetViews ? d3d11Rtv : nullptr, ppRenderTargetViews ? d3d11Rtv : nullptr,
ppDepthStencilView ? &d3d11Dsv : nullptr); ppDepthStencilView ? &d3d11Dsv : nullptr);
if (ppRenderTargetViews != nullptr) { if (ppRenderTargetViews != nullptr) {
for (uint32_t i = 0; i < NumViews; i++) { for (uint32_t i = 0; i < NumViews; i++) {
ppRenderTargetViews[i] = d3d11Rtv[i] ppRenderTargetViews[i] = d3d11Rtv[i]
@ -1529,8 +1430,6 @@ namespace dxvk {
ID3D10BlendState** ppBlendState, ID3D10BlendState** ppBlendState,
FLOAT BlendFactor[4], FLOAT BlendFactor[4],
UINT* pSampleMask) { UINT* pSampleMask) {
D3D10DeviceLock lock = LockDevice();
ID3D11BlendState* d3d11BlendState = nullptr; ID3D11BlendState* d3d11BlendState = nullptr;
m_context->OMGetBlendState( m_context->OMGetBlendState(
@ -1545,8 +1444,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::OMGetDepthStencilState( void STDMETHODCALLTYPE D3D10Device::OMGetDepthStencilState(
ID3D10DepthStencilState** ppDepthStencilState, ID3D10DepthStencilState** ppDepthStencilState,
UINT* pStencilRef) { UINT* pStencilRef) {
D3D10DeviceLock lock = LockDevice();
ID3D11DepthStencilState* d3d11DepthStencilState = nullptr; ID3D11DepthStencilState* d3d11DepthStencilState = nullptr;
m_context->OMGetDepthStencilState( m_context->OMGetDepthStencilState(
@ -1560,8 +1457,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::RSSetState( void STDMETHODCALLTYPE D3D10Device::RSSetState(
ID3D10RasterizerState* pRasterizerState) { ID3D10RasterizerState* pRasterizerState) {
D3D10DeviceLock lock = LockDevice();
D3D10RasterizerState* d3d10RasterizerState = static_cast<D3D10RasterizerState*>(pRasterizerState); D3D10RasterizerState* d3d10RasterizerState = static_cast<D3D10RasterizerState*>(pRasterizerState);
D3D11RasterizerState* d3d11RasterizerState = d3d10RasterizerState ? d3d10RasterizerState->GetD3D11Iface() : nullptr; D3D11RasterizerState* d3d11RasterizerState = d3d10RasterizerState ? d3d10RasterizerState->GetD3D11Iface() : nullptr;
@ -1572,8 +1467,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::RSSetViewports( void STDMETHODCALLTYPE D3D10Device::RSSetViewports(
UINT NumViewports, UINT NumViewports,
const D3D10_VIEWPORT* pViewports) { const D3D10_VIEWPORT* pViewports) {
D3D10DeviceLock lock = LockDevice();
D3D11_VIEWPORT vp[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]; D3D11_VIEWPORT vp[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE];
if (NumViewports > D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE) if (NumViewports > D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE)
@ -1595,16 +1488,12 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::RSSetScissorRects( void STDMETHODCALLTYPE D3D10Device::RSSetScissorRects(
UINT NumRects, UINT NumRects,
const D3D10_RECT* pRects) { const D3D10_RECT* pRects) {
D3D10DeviceLock lock = LockDevice();
m_context->RSSetScissorRects(NumRects, pRects); m_context->RSSetScissorRects(NumRects, pRects);
} }
void STDMETHODCALLTYPE D3D10Device::RSGetState( void STDMETHODCALLTYPE D3D10Device::RSGetState(
ID3D10RasterizerState** ppRasterizerState) { ID3D10RasterizerState** ppRasterizerState) {
D3D10DeviceLock lock = LockDevice();
ID3D11RasterizerState* d3d11RasterizerState = nullptr; ID3D11RasterizerState* d3d11RasterizerState = nullptr;
m_context->RSGetState(&d3d11RasterizerState); m_context->RSGetState(&d3d11RasterizerState);
@ -1615,8 +1504,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::RSGetViewports( void STDMETHODCALLTYPE D3D10Device::RSGetViewports(
UINT* NumViewports, UINT* NumViewports,
D3D10_VIEWPORT* pViewports) { D3D10_VIEWPORT* pViewports) {
D3D10DeviceLock lock = LockDevice();
D3D11_VIEWPORT vp[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE]; D3D11_VIEWPORT vp[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE];
m_context->RSGetViewports(NumViewports, pViewports != nullptr ? vp : nullptr); m_context->RSGetViewports(NumViewports, pViewports != nullptr ? vp : nullptr);
@ -1636,8 +1523,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Device::RSGetScissorRects( void STDMETHODCALLTYPE D3D10Device::RSGetScissorRects(
UINT* NumRects, UINT* NumRects,
D3D10_RECT* pRects) { D3D10_RECT* pRects) {
D3D10DeviceLock lock = LockDevice();
m_context->RSGetScissorRects(NumRects, pRects); m_context->RSGetScissorRects(NumRects, pRects);
} }
@ -1646,8 +1531,6 @@ namespace dxvk {
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer* const* ppSOTargets, ID3D10Buffer* const* ppSOTargets,
const UINT* pOffsets) { const UINT* pOffsets) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D10_SO_BUFFER_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D10_SO_BUFFER_SLOT_COUNT];
if (NumBuffers > D3D10_SO_BUFFER_SLOT_COUNT) if (NumBuffers > D3D10_SO_BUFFER_SLOT_COUNT)
@ -1662,13 +1545,11 @@ namespace dxvk {
m_context->SOSetTargets(NumBuffers, d3d11Buffers, pOffsets); m_context->SOSetTargets(NumBuffers, d3d11Buffers, pOffsets);
} }
void STDMETHODCALLTYPE D3D10Device::SOGetTargets( void STDMETHODCALLTYPE D3D10Device::SOGetTargets(
UINT NumBuffers, UINT NumBuffers,
ID3D10Buffer** ppSOTargets, ID3D10Buffer** ppSOTargets,
UINT* pOffsets) { UINT* pOffsets) {
D3D10DeviceLock lock = LockDevice();
ID3D11Buffer* d3d11Buffers[D3D10_SO_BUFFER_SLOT_COUNT]; ID3D11Buffer* d3d11Buffers[D3D10_SO_BUFFER_SLOT_COUNT];
m_context->SOGetTargetsWithOffsets(NumBuffers, m_context->SOGetTargetsWithOffsets(NumBuffers,

View File

@ -469,20 +469,11 @@ namespace dxvk {
void STDMETHODCALLTYPE GetTextFilterSize( void STDMETHODCALLTYPE GetTextFilterSize(
UINT* pWidth, UINT* pWidth,
UINT* pHeight); UINT* pHeight);
D3D10DeviceLock LockDevice() {
return m_multithread.AcquireLock();
}
D3D10Multithread* GetMultithread() {
return &m_multithread;
}
private: private:
D3D11Device* m_device; D3D11Device* m_device;
D3D11ImmediateContext* m_context; D3D11ImmediateContext* m_context;
D3D10Multithread m_multithread;
}; };

View File

@ -40,10 +40,14 @@ extern "C" {
hr = D3D11CoreCreateDevice(pFactory, pAdapter, hr = D3D11CoreCreateDevice(pFactory, pAdapter,
Flags, &FeatureLevel, 1, &d3d11Device); Flags, &FeatureLevel, 1, &d3d11Device);
if (FAILED(hr)) if (FAILED(hr))
return hr; return hr;
Com<ID3D10Multithread> multithread;
d3d11Device->QueryInterface(__uuidof(ID3D10Multithread), reinterpret_cast<void**>(&multithread));
multithread->SetMultithreadProtected(!(Flags & D3D10_CREATE_DEVICE_SINGLETHREADED));
if (FAILED(d3d11Device->QueryInterface( if (FAILED(d3d11Device->QueryInterface(
__uuidof(ID3D10Device), reinterpret_cast<void**>(ppDevice)))) __uuidof(ID3D10Device), reinterpret_cast<void**>(ppDevice))))
return E_FAIL; return E_FAIL;

View File

@ -54,8 +54,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Query::Begin() { void STDMETHODCALLTYPE D3D10Query::Begin() {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -64,8 +62,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Query::End() { void STDMETHODCALLTYPE D3D10Query::End() {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -77,8 +73,6 @@ namespace dxvk {
void* pData, void* pData,
UINT DataSize, UINT DataSize,
UINT GetDataFlags) { UINT GetDataFlags) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);

View File

@ -75,8 +75,6 @@ namespace dxvk {
D3D10_MAP MapType, D3D10_MAP MapType,
UINT MapFlags, UINT MapFlags,
void** ppData) { void** ppData) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -96,8 +94,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Texture1D::Unmap( void STDMETHODCALLTYPE D3D10Texture1D::Unmap(
UINT Subresource) { UINT Subresource) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -189,8 +185,6 @@ namespace dxvk {
D3D10_MAP MapType, D3D10_MAP MapType,
UINT MapFlags, UINT MapFlags,
D3D10_MAPPED_TEXTURE2D* pMappedTex2D) { D3D10_MAPPED_TEXTURE2D* pMappedTex2D) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -211,8 +205,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Texture2D::Unmap( void STDMETHODCALLTYPE D3D10Texture2D::Unmap(
UINT Subresource) { UINT Subresource) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -306,8 +298,6 @@ namespace dxvk {
D3D10_MAP MapType, D3D10_MAP MapType,
UINT MapFlags, UINT MapFlags,
D3D10_MAPPED_TEXTURE3D* pMappedTex3D) { D3D10_MAPPED_TEXTURE3D* pMappedTex3D) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);
@ -329,8 +319,6 @@ namespace dxvk {
void STDMETHODCALLTYPE D3D10Texture3D::Unmap( void STDMETHODCALLTYPE D3D10Texture3D::Unmap(
UINT Subresource) { UINT Subresource) {
D3D10DeviceLock lock = m_device->LockDevice();
Com<ID3D11DeviceContext> ctx; Com<ID3D11DeviceContext> ctx;
GetD3D11Context(m_d3d11, &ctx); GetD3D11Context(m_d3d11, &ctx);

View File

@ -644,7 +644,7 @@ namespace dxvk {
const VkImageSubresourceRange* pSubresources, const VkImageSubresourceRange* pSubresources,
VkImageLayout OldLayout, VkImageLayout OldLayout,
VkImageLayout NewLayout); VkImageLayout NewLayout);
protected: protected:
D3D11Device* const m_parent; D3D11Device* const m_parent;

View File

@ -1779,8 +1779,9 @@ namespace dxvk {
} }
if (riid == __uuidof(ID3D10Multithread)) { if (riid == __uuidof(ID3D10Multithread)) {
*ppvObject = ref(m_d3d11Device.GetD3D10Multithread()); Com<ID3D11DeviceContext> context;
return S_OK; m_d3d11Device.GetImmediateContext(&context);
return context->QueryInterface(riid, ppvObject);
} }
if (riid == __uuidof(ID3D11Debug)) if (riid == __uuidof(ID3D11Debug))

View File

@ -318,10 +318,6 @@ namespace dxvk {
D3D10Device* GetD3D10Interface() const { D3D10Device* GetD3D10Interface() const {
return m_d3d10Device; return m_d3d10Device;
} }
D3D10Multithread* GetD3D10Multithread() const {
return m_d3d10Device->GetMultithread();
}
DxvkBufferSlice AllocUavCounterSlice() { return m_uavCounters->AllocSlice(); } DxvkBufferSlice AllocUavCounterSlice() { return m_uavCounters->AllocSlice(); }
DxvkBufferSlice AllocXfbCounterSlice() { return m_xfbCounters->AllocSlice(); } DxvkBufferSlice AllocXfbCounterSlice() { return m_xfbCounters->AllocSlice(); }