[d3d11] Added class linkage stub, required for FX11 samples

This commit is contained in:
Philip Rebohle 2017-12-12 01:07:07 +01:00
parent 3de427439b
commit 24feb7822d
3 changed files with 103 additions and 6 deletions

View File

@ -0,0 +1,53 @@
#include "d3d11_class_linkage.h"
#include "d3d11_device.h"
namespace dxvk {
D3D11ClassLinkage::D3D11ClassLinkage(
D3D11Device* pDevice)
: m_device(pDevice) {
}
D3D11ClassLinkage::~D3D11ClassLinkage() {
}
HRESULT D3D11ClassLinkage::QueryInterface(REFIID riid, void** ppvObject) {
COM_QUERY_IFACE(riid, ppvObject, IUnknown);
COM_QUERY_IFACE(riid, ppvObject, ID3D11DeviceChild);
COM_QUERY_IFACE(riid, ppvObject, ID3D11ClassLinkage);
Logger::warn("D3D11ClassLinkage::QueryInterface: Unknown interface query");
return E_NOINTERFACE;
}
void D3D11ClassLinkage::GetDevice(ID3D11Device** ppDevice) {
*ppDevice = m_device.ref();
}
HRESULT D3D11ClassLinkage::CreateClassInstance(
LPCSTR pClassTypeName,
UINT ConstantBufferOffset,
UINT ConstantVectorOffset,
UINT TextureOffset,
UINT SamplerOffset,
ID3D11ClassInstance **ppInstance) {
Logger::err("D3D11ClassLinkage::CreateClassInstance: Not implemented yet");
return E_NOTIMPL;
}
HRESULT D3D11ClassLinkage::GetClassInstance(
LPCSTR pClassInstanceName,
UINT InstanceIndex,
ID3D11ClassInstance **ppInstance) {
Logger::err("D3D11ClassLinkage::GetClassInstance: Not implemented yet");
return E_NOTIMPL;
}
}

View File

@ -0,0 +1,45 @@
#pragma once
#include "d3d11_device_child.h"
namespace dxvk {
class D3D11Device;
// TODO implement properly
class D3D11ClassLinkage : public D3D11DeviceChild<ID3D11ClassLinkage> {
public:
D3D11ClassLinkage(
D3D11Device* pDevice);
~D3D11ClassLinkage();
HRESULT QueryInterface(
REFIID riid,
void** ppvObject) final;
void GetDevice(
ID3D11Device **ppDevice) final;
HRESULT CreateClassInstance(
LPCSTR pClassTypeName,
UINT ConstantBufferOffset,
UINT ConstantVectorOffset,
UINT TextureOffset,
UINT SamplerOffset,
ID3D11ClassInstance **ppInstance);
HRESULT GetClassInstance(
LPCSTR pClassInstanceName,
UINT InstanceIndex,
ID3D11ClassInstance **ppInstance);
private:
Com<D3D11Device> m_device;
};
}

View File

@ -1,6 +1,7 @@
#include <cstring>
#include "d3d11_buffer.h"
#include "d3d11_class_linkage.h"
#include "d3d11_context.h"
#include "d3d11_device.h"
#include "d3d11_input_layout.h"
@ -795,8 +796,8 @@ namespace dxvk {
HRESULT D3D11Device::CreateClassLinkage(ID3D11ClassLinkage** ppLinkage) {
Logger::err("D3D11Device::CreateClassLinkage: Not implemented");
return E_NOTIMPL;
*ppLinkage = ref(new D3D11ClassLinkage(this));
return S_OK;
}
@ -1185,10 +1186,8 @@ namespace dxvk {
const void* pShaderBytecode,
size_t BytecodeLength,
ID3D11ClassLinkage* pClassLinkage) {
if (pClassLinkage != nullptr) {
Logger::err("D3D11Device::CreateShaderModule: Class linkage not supported");
return E_INVALIDARG;
}
if (pClassLinkage != nullptr)
Logger::warn("D3D11Device::CreateShaderModule: Class linkage not supported");
try {
*pShaderModule = D3D11ShaderModule(