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:
parent
54592b7852
commit
2c61303976
@ -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));
|
||||
|
@ -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(
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
};
|
||||
|
Loading…
x
Reference in New Issue
Block a user