Skip to content

Commit

Permalink
[d3d11] Added class linkage stub, required for FX11 samples
Browse files Browse the repository at this point in the history
  • Loading branch information
doitsujin committed Dec 12, 2017
1 parent 3de4274 commit 24feb78
Show file tree
Hide file tree
Showing 3 changed files with 103 additions and 6 deletions.
53 changes: 53 additions & 0 deletions src/d3d11/d3d11_class_linkage.cpp
Original file line number Diff line number Diff line change
@@ -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;
}

}
45 changes: 45 additions & 0 deletions src/d3d11/d3d11_class_linkage.h
Original file line number Diff line number Diff line change
@@ -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;

};

}
11 changes: 5 additions & 6 deletions src/d3d11/d3d11_device.cpp
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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;
}


Expand Down Expand Up @@ -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(
Expand Down

0 comments on commit 24feb78

Please sign in to comment.