1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2025-03-13 19:29:14 +01:00

[d3d11] Implement IDXGIResource1 for textures and buffers

This commit is contained in:
Philip Rebohle 2019-04-27 19:33:47 +02:00
parent 54592b7852
commit 2c61303976
4 changed files with 34 additions and 0 deletions

View File

@ -11,6 +11,7 @@ namespace dxvk {
const D3D11_BUFFER_DESC* pDesc)
: m_device (pDevice),
m_desc (*pDesc),
m_resource (this),
m_d3d10 (this, pDevice->GetD3D10Interface()) {
DxvkBufferCreateInfo info;
info.size = pDesc->ByteWidth;
@ -132,6 +133,12 @@ namespace dxvk {
*ppvObject = ref(&m_d3d10);
return S_OK;
}
if (riid == __uuidof(IDXGIResource)
|| riid == __uuidof(IDXGIResource1)) {
*ppvObject = ref(&m_resource);
return S_OK;
}
Logger::warn("D3D11Buffer::QueryInterface: Unknown interface query");
Logger::warn(str::format(riid));

View File

@ -6,6 +6,7 @@
#include "d3d11_device_child.h"
#include "d3d11_interfaces.h"
#include "d3d11_resource.h"
namespace dxvk {
@ -120,6 +121,7 @@ namespace dxvk {
DxvkBufferSlice m_soCounter;
DxvkBufferSliceHandle m_mapped;
D3D11DXGIResource m_resource;
D3D10Buffer m_d3d10;
BOOL CheckFormatFeatureSupport(

View File

@ -744,6 +744,7 @@ namespace dxvk {
const D3D11_COMMON_TEXTURE_DESC* pDesc)
: m_texture (pDevice, pDesc, D3D11_RESOURCE_DIMENSION_TEXTURE1D),
m_interop (this, &m_texture),
m_resource(this),
m_d3d10 (this, pDevice->GetD3D10Interface()) {
}
@ -775,6 +776,12 @@ namespace dxvk {
return S_OK;
}
if (riid == __uuidof(IDXGIResource)
|| riid == __uuidof(IDXGIResource1)) {
*ppvObject = ref(&m_resource);
return S_OK;
}
if (riid == __uuidof(IDXGIVkInteropSurface)) {
*ppvObject = ref(&m_interop);
return S_OK;
@ -829,6 +836,7 @@ namespace dxvk {
: m_texture (pDevice, pDesc, D3D11_RESOURCE_DIMENSION_TEXTURE2D),
m_interop (this, &m_texture),
m_surface (this, &m_texture),
m_resource(this),
m_d3d10 (this, pDevice->GetD3D10Interface()) {
}
@ -868,6 +876,12 @@ namespace dxvk {
return S_OK;
}
if (riid == __uuidof(IDXGIResource)
|| riid == __uuidof(IDXGIResource1)) {
*ppvObject = ref(&m_resource);
return S_OK;
}
if (riid == __uuidof(IDXGIVkInteropSurface)) {
*ppvObject = ref(&m_interop);
return S_OK;
@ -923,6 +937,7 @@ namespace dxvk {
const D3D11_COMMON_TEXTURE_DESC* pDesc)
: m_texture (pDevice, pDesc, D3D11_RESOURCE_DIMENSION_TEXTURE3D),
m_interop (this, &m_texture),
m_resource(this),
m_d3d10 (this, pDevice->GetD3D10Interface()) {
}
@ -954,6 +969,12 @@ namespace dxvk {
return S_OK;
}
if (riid == __uuidof(IDXGIResource)
|| riid == __uuidof(IDXGIResource1)) {
*ppvObject = ref(&m_resource);
return S_OK;
}
if (riid == __uuidof(IDXGIVkInteropSurface)) {
*ppvObject = ref(&m_interop);
return S_OK;

View File

@ -6,6 +6,7 @@
#include "d3d11_device_child.h"
#include "d3d11_interfaces.h"
#include "d3d11_resource.h"
namespace dxvk {
@ -386,6 +387,7 @@ namespace dxvk {
D3D11CommonTexture m_texture;
D3D11VkInteropSurface m_interop;
D3D11DXGIResource m_resource;
D3D10Texture1D m_d3d10;
};
@ -433,6 +435,7 @@ namespace dxvk {
D3D11CommonTexture m_texture;
D3D11VkInteropSurface m_interop;
D3D11DXGISurface m_surface;
D3D11DXGIResource m_resource;
D3D10Texture2D m_d3d10;
};
@ -479,6 +482,7 @@ namespace dxvk {
D3D11CommonTexture m_texture;
D3D11VkInteropSurface m_interop;
D3D11DXGIResource m_resource;
D3D10Texture3D m_d3d10;
};