mirror of
https://github.com/WinDurango/WinDurango.git
synced 2026-01-06 11:19:42 -06:00
Forza Horizon 2 boots (D3D11X only)
This commit is contained in:
@@ -19,4 +19,5 @@ EXPORTS
|
||||
WD11XNotify = WD11XNotify_X @17
|
||||
WDWaitForKeyboard = WDWaitForKeyboard @18
|
||||
IID_ID3D11DeviceContextX @40
|
||||
IID_ID3D11DeviceX @41
|
||||
IID_ID3D11DeviceX @41
|
||||
IID_ID3D11Texture2D @61
|
||||
@@ -7,6 +7,7 @@ DEFINE_GUID(IID_ID3D11PerformanceDeviceX, 0x88671610, 0x712E, 0x4F1E, 0x84, 0xAB
|
||||
DEFINE_GUID(IID_ID3D11PerformanceContextX, 0x9458FE06, 0xC78D, 0x47F7, 0x96, 0xA0, 0xEC, 0x7B, 0x72, 0x7B, 0xE1, 0xE9);
|
||||
DEFINE_GUID(IID_ID3D11DmaEngineContextX, 0xA6332DDB, 0x8E02, 0x427D, 0xB0, 0xB7, 0x34, 0xA1, 0xE6, 0x1A, 0x64, 0x88);
|
||||
DEFINE_GUID(IID_ID3D11DeviceX, 0x177700F9, 0x876A, 0x4436, 0xB3, 0x68, 0x36, 0xA6, 0x04, 0xF8, 0x2C, 0xEF);
|
||||
DEFINE_GUID(IID_ID3D11Texture2D, 0x6f15AAF2, 0xD208, 0x4E89, 0x9A, 0xB4, 48, 95, 35, 0xD3, 0x4F, 0x9C);
|
||||
DEFINE_GUID(IID_ID3D11DeviceContextX, 0x48800095, 0x7134, 0x4BE7, 0x91, 0x86, 0xb8, 0x6B, 0xEC, 0xB2, 64, 77);
|
||||
DEFINE_GUID(IID_ID3D11CounterSetX, 0xF9F6A732, 0xC5F8, 0x4A57, 0xBA, 0x36, 0xEA, 0xE7, 0xC2, 0x7B, 0xA7, 0x4A);
|
||||
DEFINE_GUID(IID_ID3D11CounterSampleX, 0x806CEEE4, 0x280B, 0x43D9, 0x90, 0x08, 0xB4, 0xFD, 0xF7, 0xFE, 0xBE, 0xE2);
|
||||
|
||||
@@ -11,6 +11,7 @@ extern const IID IID_ID3D11PerformanceDeviceX;
|
||||
extern const IID IID_ID3D11PerformanceContextX;
|
||||
extern const IID IID_ID3D11DmaEngineContextX;
|
||||
extern const IID IID_ID3D11DeviceX;
|
||||
extern const IID IID_ID3D11Texture2D;
|
||||
extern const IID IID_ID3D11DeviceContextX;
|
||||
extern const IID IID_ID3D11CounterSetX;
|
||||
extern const IID IID_ID3D11CounterSampleX;
|
||||
|
||||
@@ -4,9 +4,21 @@
|
||||
#include "overlay/overlay.h"
|
||||
#include <d3d11.h>
|
||||
#include <d3d12.h>
|
||||
#include <dxgi1_2.h>
|
||||
#include "device_context_x.h"
|
||||
#include "device_x.h"
|
||||
#include "wrl.h"
|
||||
#include <windows.ui.core.h>
|
||||
|
||||
|
||||
using namespace Microsoft::WRL;
|
||||
using namespace ABI::Windows::UI::Core;
|
||||
|
||||
#define DXGI_SWAPCHAIN_FLAG_MASK DXGI_SWAP_CHAIN_FLAG_NONPREROTATED | DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH | DXGI_SWAP_CHAIN_FLAG_GDI_COMPATIBLE \
|
||||
| DXGI_SWAP_CHAIN_FLAG_RESTRICTED_CONTENT | DXGI_SWAP_CHAIN_FLAG_RESTRICT_SHARED_RESOURCE_DRIVER | DXGI_SWAP_CHAIN_FLAG_DISPLAY_ONLY | DXGI_SWAP_CHAIN_FLAG_FRAME_LATENCY_WAITABLE_OBJECT \
|
||||
| DXGI_SWAP_CHAIN_FLAG_FOREGROUND_LAYER | DXGI_SWAP_CHAIN_FLAG_FULLSCREEN_VIDEO | DXGI_SWAP_CHAIN_FLAG_YUV_VIDEO \
|
||||
| DXGI_SWAP_CHAIN_FLAG_HW_PROTECTED | DXGI_SWAP_CHAIN_FLAG_ALLOW_TEARING \
|
||||
| DXGI_SWAP_CHAIN_FLAG_RESTRICTED_TO_ALL_HOLOGRAPHIC_DISPLAYS
|
||||
|
||||
HRESULT CreateDevice(UINT Flags, wdi::ID3D11Device** ppDevice, wdi::ID3D11DeviceContext** ppImmediateContext)
|
||||
{
|
||||
@@ -51,6 +63,7 @@ HRESULT CreateDevice(UINT Flags, wdi::ID3D11Device** ppDevice, wdi::ID3D11Device
|
||||
#include "../common/debug.h"
|
||||
#include <wrl/client.h>
|
||||
#include <iostream>
|
||||
#include "dxgi_swapchain.h"
|
||||
|
||||
HRESULT _stdcall D3DQuerySEQCounters_X(D3D_SEQ_COUNTER_DATA* pData)
|
||||
{
|
||||
@@ -69,10 +82,72 @@ HRESULT _stdcall D3DUploadCustomMicrocode_X(
|
||||
return E_NOTIMPL;
|
||||
}
|
||||
|
||||
HRESULT CreateDeviceAndSwapChain(UINT Flags, wdi::ID3D11Device** ppDevice, wdi::ID3D11DeviceContext** ppImmediateContext, wdi::IDXGISwapChain1** ppSwapChain, const DXGI_SWAP_CHAIN_DESC1* pSwapChainDesc)
|
||||
{
|
||||
D3D_FEATURE_LEVEL featurelevels[] = {
|
||||
D3D_FEATURE_LEVEL_11_1,
|
||||
D3D_FEATURE_LEVEL_11_0,
|
||||
};
|
||||
|
||||
ID3D11Device2* device2{};
|
||||
ID3D11DeviceContext2* device_context2{};
|
||||
IDXGISwapChain1* swap_chain1{};
|
||||
|
||||
|
||||
auto flags = Flags & CREATE_DEVICE_FLAG_MASK;
|
||||
|
||||
#ifdef _DEBUG
|
||||
flags |= D3D11_CREATE_DEVICE_DEBUG;
|
||||
#endif
|
||||
|
||||
HRESULT hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, NULL, flags, featurelevels, _ARRAYSIZE(featurelevels), D3D11_SDK_VERSION, reinterpret_cast<ID3D11Device**>(ppDevice), NULL, reinterpret_cast<ID3D11DeviceContext**>(ppImmediateContext));
|
||||
if (SUCCEEDED(hr))
|
||||
{
|
||||
// get dx11.2 feature level, since that's what dx11.x inherits from
|
||||
if (ppDevice != nullptr)
|
||||
{
|
||||
(*ppDevice)->QueryInterface(IID_PPV_ARGS(&device2));
|
||||
*ppDevice = reinterpret_cast<wdi::ID3D11Device*>(new wd::device_x(device2));
|
||||
}
|
||||
|
||||
if (ppImmediateContext != nullptr)
|
||||
{
|
||||
(*ppImmediateContext)->QueryInterface(IID_PPV_ARGS(&device_context2));
|
||||
*ppImmediateContext = reinterpret_cast<wdi::ID3D11DeviceContext*>(new wd::device_context_x(device_context2));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("failed to assign wrapped device, result code 0x%X, error code 0x%X\n", hr, GetLastError( ));
|
||||
}
|
||||
|
||||
ComPtr<IDXGIFactory2> pFactory;
|
||||
CreateDXGIFactory1(IID_PPV_ARGS(&pFactory));
|
||||
|
||||
ComPtr<ICoreWindowStatic> pWindowStatic;
|
||||
RoGetActivationFactory(Microsoft::WRL::Wrappers::HStringReference::HStringReference(RuntimeClass_Windows_UI_Core_CoreWindow).Get( ), IID_PPV_ARGS(&pWindowStatic));
|
||||
|
||||
ComPtr<ICoreWindow> pWindow;
|
||||
pWindowStatic->GetForCurrentThread(&pWindow);
|
||||
|
||||
auto swap_chain_desc = *pSwapChainDesc;
|
||||
|
||||
swap_chain_desc.Scaling = DXGI_SCALING_ASPECT_RATIO_STRETCH;
|
||||
swap_chain_desc.Flags &= DXGI_SWAPCHAIN_FLAG_MASK;
|
||||
|
||||
pFactory->CreateSwapChainForCoreWindow(reinterpret_cast<IUnknown*>(device2), pWindow.Get( ), &swap_chain_desc, nullptr, &swap_chain1);
|
||||
|
||||
if (ppSwapChain != nullptr)
|
||||
{
|
||||
*ppSwapChain = new wd::dxgi_swapchain(swap_chain1);
|
||||
}
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT __stdcall D3D11XCreateDeviceXAndSwapChain1_X(const D3D11X_CREATE_DEVICE_PARAMETERS* pParameters,
|
||||
const DXGI_SWAP_CHAIN_DESC1* pSwapChainDesc, IDXGISwapChain1** ppSwapChain,
|
||||
const DXGI_SWAP_CHAIN_DESC1* pSwapChainDesc, wdi::IDXGISwapChain1** ppSwapChain,
|
||||
// ID3D11DeviceX** ppDevice, ID3D11DeviceContextX** ppImmediateContext
|
||||
ID3D11Device** ppDevice, ID3D11DeviceContext** ppImmediateContext)
|
||||
wdi::ID3D11Device** ppDevice, wdi::ID3D11DeviceContext** ppImmediateContext)
|
||||
{
|
||||
// D3D11_CREATE_DEVICE_VIDEO_EXCLUSIVE
|
||||
if ((pParameters->Flags & 0x10000) != 0 || !ppSwapChain)
|
||||
@@ -83,12 +158,7 @@ HRESULT __stdcall D3D11XCreateDeviceXAndSwapChain1_X(const D3D11X_CREATE_DEVICE_
|
||||
DEBUGPRINT("!!! Game is trying to initialize D3D11 through D3D11X !!!");
|
||||
DEBUGPRINT("SDK Version: %d\n", pParameters->Version);
|
||||
|
||||
HRESULT hr = D3D11CreateDevice(NULL, D3D_DRIVER_TYPE_HARDWARE, 0, pParameters->Flags & CREATE_DEVICE_FLAG_MASK, NULL, NULL, D3D11_SDK_VERSION, ppDevice, NULL, ppImmediateContext);
|
||||
|
||||
if (FAILED(hr))
|
||||
{
|
||||
DEBUGPRINT("!!!D3D11XCreateDeviceXAndSwapChain1_X failed!!!");
|
||||
}
|
||||
HRESULT hr = CreateDeviceAndSwapChain(pParameters->Flags, ppDevice, ppImmediateContext, ppSwapChain, pSwapChainDesc);
|
||||
|
||||
return hr;
|
||||
}
|
||||
@@ -146,7 +216,7 @@ HRESULT __stdcall D3DFreeGraphicsMemory_X(void* pAddress)
|
||||
|
||||
HRESULT __stdcall D3DMapEsramMemory_X(UINT Flags, VOID* pVirtualAddress, UINT NumPages, const UINT* pPageList)
|
||||
{
|
||||
DEBUGPRINT( );
|
||||
printf("D3DMapEsramMemory_X was called!!!\n");
|
||||
|
||||
//Rodrigo Todescatto: This will allocate 4mb of RAM as a stub.
|
||||
VirtualAlloc(pVirtualAddress, 0x3D0900, MEM_COMMIT, PAGE_READWRITE);
|
||||
@@ -171,11 +241,15 @@ HRESULT _stdcall DXGIXPresentArray_X(
|
||||
_In_ UINT PresentImmediateThreshold,
|
||||
_In_ UINT Flags,
|
||||
_In_ UINT NumSwapChains,
|
||||
_In_ IDXGISwapChain1* const* ppSwapChain,
|
||||
_In_ wdi::IDXGISwapChain1* const* ppSwapChain,
|
||||
_In_ const DXGIX_PRESENTARRAY_PARAMETERS* pPresentParameters)
|
||||
{
|
||||
DEBUGPRINT();
|
||||
return E_NOTIMPL;
|
||||
//printf("DXGIXPresentArray_X was called!!!\n");
|
||||
|
||||
int i = 0;
|
||||
HRESULT hr = ppSwapChain[i]->Present(SyncInterval, Flags);
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
HRESULT __stdcall DXGIXSetFrameNotification_X(
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
#include <stdexcept>
|
||||
|
||||
#include "view.hpp"
|
||||
#include <vector>
|
||||
|
||||
void wd::device_context_x::GetDevice(ID3D11Device** ppDevice)
|
||||
{
|
||||
@@ -41,7 +42,7 @@ HRESULT wd::device_context_x::SetName(LPCWSTR pName)
|
||||
|
||||
void wd::device_context_x::VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers)
|
||||
{
|
||||
printf("VSSetConstantBuffers was called!!!!!!!\n");
|
||||
//printf("VSSetConstantBuffers was called!!!!!!!\n");
|
||||
|
||||
if (ppConstantBuffers != nullptr && *ppConstantBuffers != nullptr)
|
||||
{
|
||||
@@ -60,7 +61,7 @@ void wd::device_context_x::VSSetConstantBuffers(UINT StartSlot, UINT NumBuffers,
|
||||
|
||||
void wd::device_context_x::Draw(UINT VertexCount, UINT StartVertexLocation)
|
||||
{
|
||||
printf("Draw was called!!!!!!!\n");
|
||||
//printf("Draw was called!!!!!!!\n");
|
||||
|
||||
ProcessDirtyFlags( );
|
||||
wrapped_interface->Draw(VertexCount, StartVertexLocation);
|
||||
@@ -81,7 +82,7 @@ void wd::device_context_x::Unmap(ID3D11Resource* pResource, UINT Subresource)
|
||||
|
||||
void wd::device_context_x::PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers)
|
||||
{
|
||||
printf("PSSetConstantBuffers was called!!!!!!!\n");
|
||||
//printf("PSSetConstantBuffers was called!!!!!!!\n");
|
||||
|
||||
if (ppConstantBuffers != nullptr && *ppConstantBuffers != nullptr)
|
||||
{
|
||||
@@ -100,7 +101,7 @@ void wd::device_context_x::PSSetConstantBuffers(UINT StartSlot, UINT NumBuffers,
|
||||
|
||||
void wd::device_context_x::IASetInputLayout(ID3D11InputLayout* pInputLayout)
|
||||
{
|
||||
printf("IASetInputLayout was called!!!!!!!\n");
|
||||
//printf("IASetInputLayout was called!!!!!!!\n");
|
||||
|
||||
wrapped_interface->IASetInputLayout(pInputLayout);
|
||||
}
|
||||
@@ -108,7 +109,7 @@ void wd::device_context_x::IASetInputLayout(ID3D11InputLayout* pInputLayout)
|
||||
void wd::device_context_x::IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppVertexBuffers,
|
||||
const UINT* pStrides, const UINT* pOffsets)
|
||||
{
|
||||
printf("IASetVertexBuffers was called!!!!!!!\n");
|
||||
//printf("IASetVertexBuffers was called!!!!!!!\n");
|
||||
|
||||
if (NumBuffers > D3D11_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT - StartSlot)
|
||||
{
|
||||
@@ -137,7 +138,23 @@ void wd::device_context_x::IASetVertexBuffers(UINT StartSlot, UINT NumBuffers, I
|
||||
|
||||
void wd::device_context_x::GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers)
|
||||
{
|
||||
wrapped_interface->GSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers);
|
||||
if (ppConstantBuffers != NULL)
|
||||
{
|
||||
ID3D11Buffer* modifiedBuffers[ D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT ] = {};
|
||||
for (UINT i = 0; i < NumBuffers; i++)
|
||||
{
|
||||
if (ppConstantBuffers[ i ] == nullptr)
|
||||
modifiedBuffers[ i ] = nullptr;
|
||||
else
|
||||
modifiedBuffers[ i ] = reinterpret_cast<wd::buffer*>(ppConstantBuffers[ i ])->wrapped_interface;
|
||||
}
|
||||
|
||||
wrapped_interface->GSSetConstantBuffers(StartSlot, NumBuffers, modifiedBuffers);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->GSSetConstantBuffers(StartSlot, NumBuffers, ppConstantBuffers);
|
||||
}
|
||||
}
|
||||
|
||||
void wd::device_context_x::GSSetShader(ID3D11GeometryShader* pShader)
|
||||
@@ -145,10 +162,9 @@ void wd::device_context_x::GSSetShader(ID3D11GeometryShader* pShader)
|
||||
wrapped_interface->GSSetShader(pShader, nullptr, 0);
|
||||
}
|
||||
|
||||
void wd::device_context_x::VSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -161,17 +177,17 @@ void wd::device_context_x::VSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->VSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
|
||||
wrapped_interface->VSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else {
|
||||
wrapped_interface->VSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
void wd::device_context_x::GSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -184,11 +200,11 @@ void wd::device_context_x::GSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->GSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
wrapped_interface->GSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->GSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
wrapped_interface->GSSetShaderResources(StartSlot, UNumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,10 +214,9 @@ void wd::device_context_x::DrawAuto()
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_context_x::HSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::HSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -214,11 +229,11 @@ void wd::device_context_x::HSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->HSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
wrapped_interface->HSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->HSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
wrapped_interface->HSSetShaderResources(StartSlot, UNumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,10 +242,9 @@ void wd::device_context_x::HSSetShader(ID3D11HullShader* pHullShader)
|
||||
wrapped_interface->HSSetShader(pHullShader, nullptr, 0);
|
||||
}
|
||||
|
||||
void wd::device_context_x::DSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::DSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -243,11 +257,11 @@ void wd::device_context_x::DSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->DSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
wrapped_interface->DSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->DSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
wrapped_interface->DSSetShaderResources(StartSlot, UNumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -256,10 +270,9 @@ void wd::device_context_x::DSSetShader(ID3D11DomainShader* pDomainShader)
|
||||
wrapped_interface->DSSetShader(pDomainShader, nullptr, 0);
|
||||
}
|
||||
|
||||
void wd::device_context_x::CSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::CSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -272,23 +285,24 @@ void wd::device_context_x::CSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->CSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
wrapped_interface->CSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->CSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
wrapped_interface->CSSetShaderResources(StartSlot, UNumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
void wd::device_context_x::CSSetShader(ID3D11ComputeShader* pComputeShader)
|
||||
{
|
||||
printf("CSSetShader was called!!!!!!!\n");
|
||||
//printf("CSSetShader was called!!!!!!!\n");
|
||||
|
||||
wrapped_interface->CSSetShader(pComputeShader, nullptr, 0);
|
||||
}
|
||||
|
||||
void wd::device_context_x::VSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState* const* ppSamplers)
|
||||
{
|
||||
printf("VSSetSamplers was called!!!!!!!\n");
|
||||
//printf("VSSetSamplers was called!!!!!!!\n");
|
||||
wrapped_interface->VSSetSamplers(StartSlot, NumSamplers, ppSamplers);
|
||||
}
|
||||
|
||||
@@ -318,14 +332,14 @@ void wd::device_context_x::SetPredication(ID3D11Predicate* pPredicate, BOOL Pred
|
||||
|
||||
void wd::device_context_x::GSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState* const* ppSamplers)
|
||||
{
|
||||
printf("GSSetSamplers was called!!!!!!!\n");
|
||||
//printf("GSSetSamplers was called!!!!!!!\n");
|
||||
wrapped_interface->GSSetSamplers(StartSlot, NumSamplers, ppSamplers);
|
||||
}
|
||||
|
||||
void wd::device_context_x::OMSetRenderTargets(UINT NumViews, ID3D11RenderTargetView* const* ppRenderTargetViews,
|
||||
ID3D11DepthStencilView* pDepthStencilView)
|
||||
{
|
||||
printf("OMSetRenderTargets was called!!!!!!!\n");
|
||||
//printf("OMSetRenderTargets was called!!!!!!!\n");
|
||||
auto* depthStencilView = pDepthStencilView;
|
||||
if (depthStencilView != nullptr)
|
||||
depthStencilView = reinterpret_cast<depth_stencil_view*>(pDepthStencilView)->wrapped_interface;
|
||||
@@ -352,7 +366,7 @@ void wd::device_context_x::OMSetRenderTargetsAndUnorderedAccessViews(UINT NumRTV
|
||||
ID3D11RenderTargetView* const* ppRenderTargetViews, ID3D11DepthStencilView* pDepthStencilView, UINT UAVStartSlot,
|
||||
UINT NumUAVs, ID3D11UnorderedAccessView* const* ppUnorderedAccessViews, const UINT* pUAVInitialCounts)
|
||||
{
|
||||
printf("OMSetRenderTargetsAndUnorderedAccessViews was called!!!!!!!\n");
|
||||
//printf("OMSetRenderTargetsAndUnorderedAccessViews was called!!!!!!!\n");
|
||||
wrapped_interface->OMSetRenderTargetsAndUnorderedAccessViews(NumRTVs, ppRenderTargetViews, pDepthStencilView,
|
||||
UAVStartSlot, NumUAVs, ppUnorderedAccessViews,
|
||||
pUAVInitialCounts);
|
||||
@@ -360,55 +374,55 @@ void wd::device_context_x::OMSetRenderTargetsAndUnorderedAccessViews(UINT NumRTV
|
||||
|
||||
void wd::device_context_x::OMSetBlendState(ID3D11BlendState* pBlendState, const FLOAT BlendFactor[4], UINT SampleMask)
|
||||
{
|
||||
printf("OMSetBlendState was called!!!!!!!\n");
|
||||
//printf("OMSetBlendState was called!!!!!!!\n");
|
||||
wrapped_interface->OMSetBlendState(pBlendState, BlendFactor, SampleMask);
|
||||
}
|
||||
|
||||
void wd::device_context_x::OMSetDepthStencilState(ID3D11DepthStencilState* pDepthStencilState, UINT StencilRef)
|
||||
{
|
||||
printf("OMSetDepthStencilState was called!!!!!!!\n");
|
||||
//printf("OMSetDepthStencilState was called!!!!!!!\n");
|
||||
wrapped_interface->OMSetDepthStencilState(pDepthStencilState, StencilRef);
|
||||
}
|
||||
|
||||
void wd::device_context_x::SOSetTargets(UINT NumBuffers, ID3D11Buffer* const* ppSOTargets, const UINT* pOffsets)
|
||||
{
|
||||
printf("SOSetTargets was called!!!!!!!\n");
|
||||
//printf("SOSetTargets was called!!!!!!!\n");
|
||||
wrapped_interface->SOSetTargets(NumBuffers, ppSOTargets, pOffsets);
|
||||
}
|
||||
|
||||
void wd::device_context_x::DrawIndexedInstancedIndirect(ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs)
|
||||
{
|
||||
printf("DrawIndexedInstancedIndirect was called!!!!!!!\n");
|
||||
//printf("DrawIndexedInstancedIndirect was called!!!!!!!\n");
|
||||
wrapped_interface->DrawIndexedInstancedIndirect(pBufferForArgs, AlignedByteOffsetForArgs);
|
||||
}
|
||||
|
||||
void wd::device_context_x::DrawInstancedIndirect(ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs)
|
||||
{
|
||||
printf("DrawInstancedIndirect was called!!!!!!!\n");
|
||||
//printf("DrawInstancedIndirect was called!!!!!!!\n");
|
||||
wrapped_interface->DrawInstancedIndirect(pBufferForArgs, AlignedByteOffsetForArgs);
|
||||
}
|
||||
|
||||
void wd::device_context_x::Dispatch(UINT ThreadGroupCountX, UINT ThreadGroupCountY, UINT ThreadGroupCountZ)
|
||||
{
|
||||
printf("Dispatch was called!!!!!!!\n");
|
||||
//printf("Dispatch was called!!!!!!!\n");
|
||||
wrapped_interface->Dispatch(ThreadGroupCountX, ThreadGroupCountY, ThreadGroupCountZ);
|
||||
}
|
||||
|
||||
void wd::device_context_x::DispatchIndirect(ID3D11Buffer* pBufferForArgs, UINT AlignedByteOffsetForArgs)
|
||||
{
|
||||
printf("DispatchIndirect was called!!!!!!!\n");
|
||||
//printf("DispatchIndirect was called!!!!!!!\n");
|
||||
wrapped_interface->DispatchIndirect(pBufferForArgs, AlignedByteOffsetForArgs);
|
||||
}
|
||||
|
||||
void wd::device_context_x::RSSetState(ID3D11RasterizerState* pRasterizerState)
|
||||
{
|
||||
printf("RSSetState was called!!!!!!!\n");
|
||||
//printf("RSSetState was called!!!!!!!\n");
|
||||
wrapped_interface->RSSetState(pRasterizerState);
|
||||
}
|
||||
|
||||
void wd::device_context_x::RSSetViewports(UINT NumViewports, const D3D11_VIEWPORT* pViewports)
|
||||
{
|
||||
printf("RSSetViewports was called!!!!!!!\n");
|
||||
//printf("RSSetViewports was called!!!!!!!\n");
|
||||
wrapped_interface->RSSetViewports(NumViewports, pViewports);
|
||||
}
|
||||
|
||||
@@ -462,7 +476,7 @@ void wd::device_context_x::ClearUnorderedAccessViewFloat(ID3D11UnorderedAccessVi
|
||||
void wd::device_context_x::ClearDepthStencilView(ID3D11DepthStencilView* pDepthStencilView, UINT ClearFlags,
|
||||
FLOAT Depth, UINT8 Stencil)
|
||||
{
|
||||
wrapped_interface->ClearDepthStencilView(reinterpret_cast<wd::depth_stencil_view*>(pDepthStencilView)->wrapped_interface, ClearFlags, Depth, Stencil);
|
||||
//wrapped_interface->ClearDepthStencilView(reinterpret_cast<wd::depth_stencil_view*>(pDepthStencilView)->wrapped_interface, ClearFlags, Depth, Stencil);
|
||||
}
|
||||
|
||||
void wd::device_context_x::GenerateMips(ID3D11ShaderResourceView* pShaderResourceView)
|
||||
@@ -718,25 +732,23 @@ void wd::device_context_x::GSGetSamplers(UINT StartSlot, UINT NumSamplers, ID3D1
|
||||
void wd::device_context_x::OMGetRenderTargets(UINT NumViews, ID3D11RenderTargetView** ppRenderTargetViews,
|
||||
ID3D11DepthStencilView** ppDepthStencilView)
|
||||
{
|
||||
::ID3D11RenderTargetView* target = nullptr;
|
||||
::ID3D11DepthStencilView* depth = nullptr;
|
||||
wrapped_interface->OMGetRenderTargets(NumViews, &target, &depth);
|
||||
|
||||
/*ID3D11DepthStencilView* pDepthStencilView = nullptr;
|
||||
ID3D11RenderTargetView* RenderTargetViews[ D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT ] = {};
|
||||
|
||||
wrapped_interface->OMGetRenderTargets(NumViews, RenderTargetViews, ppDepthStencilView ? &pDepthStencilView : nullptr);
|
||||
|
||||
if (ppRenderTargetViews != nullptr)
|
||||
{
|
||||
*ppRenderTargetViews = ppRenderTargetViews
|
||||
? reinterpret_cast<ID3D11RenderTargetView*>(new
|
||||
render_target_view(target))
|
||||
: nullptr;
|
||||
for (UINT i = 0; i < NumViews; i++)
|
||||
{
|
||||
ppRenderTargetViews[i] = reinterpret_cast<ID3D11RenderTargetView*>(new render_target_view(RenderTargetViews[i]));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (ppDepthStencilView != nullptr)
|
||||
{
|
||||
*ppDepthStencilView = ppDepthStencilView
|
||||
? reinterpret_cast<ID3D11DepthStencilView*>(new
|
||||
depth_stencil_view(depth))
|
||||
: nullptr;
|
||||
}
|
||||
*ppDepthStencilView = ppDepthStencilView ? reinterpret_cast<ID3D11DepthStencilView*>(new depth_stencil_view(pDepthStencilView)) : nullptr;
|
||||
}*/
|
||||
}
|
||||
|
||||
void wd::device_context_x::OMGetRenderTargetsAndUnorderedAccessViews(UINT NumRTVs,
|
||||
@@ -1373,7 +1385,7 @@ HRESULT wd::device_context_x::Suspend(UINT Flags)
|
||||
|
||||
HRESULT wd::device_context_x::Resume()
|
||||
{
|
||||
throw std::logic_error("Not implemented");
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
void wd::device_context_x::BeginCommandListExecution(UINT Flags)
|
||||
@@ -1418,7 +1430,7 @@ void wd::device_context_x::OMSetSampleMask(UINT64 QuadSampleMask)
|
||||
|
||||
UINT32* wd::device_context_x::MakeCeSpace()
|
||||
{
|
||||
throw std::logic_error("Not implemented");
|
||||
return new UINT32[ D3D11XTinyDevice::MakeCeSpaceDwordCount ];
|
||||
}
|
||||
|
||||
void wd::device_context_x::SetFastResources_Debug(UINT* pTableStart, UINT* pTableEnd)
|
||||
@@ -1754,10 +1766,9 @@ void wd::device_context_x::SetDrawBalancing(UINT BalancingMode, UINT Flags)
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_context_x::PSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader)
|
||||
void wd::device_context_x::PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews)
|
||||
{
|
||||
UINT NumViews = (PacketHeader >> 19) + 1;
|
||||
UINT UNumViews = (NumViews >> 19) + 1;
|
||||
|
||||
if (ppShaderResourceViews != NULL)
|
||||
{
|
||||
@@ -1770,11 +1781,11 @@ void wd::device_context_x::PSSetShaderResources(ID3D11ShaderResourceView* const*
|
||||
else
|
||||
modifiedViews[ i ] = reinterpret_cast<shader_resource_view*>(ppShaderResourceViews[ i ])->wrapped_interface;
|
||||
}
|
||||
wrapped_interface->PSSetShaderResources(StartSlot, NumViews, modifiedViews);
|
||||
wrapped_interface->PSSetShaderResources(StartSlot, UNumViews, modifiedViews);
|
||||
}
|
||||
else
|
||||
{
|
||||
wrapped_interface->PSSetShaderResources(StartSlot, NumViews, ppShaderResourceViews);
|
||||
wrapped_interface->PSSetShaderResources(StartSlot, UNumViews, ppShaderResourceViews);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -260,7 +260,7 @@ namespace wdi
|
||||
D3DINTERFACE(ID3D11DeviceContext, c0bfa96c, e089, 44fb, 8e, af, 26, f8, 79, 61, 90, da) : public ID3D11DeviceChild {
|
||||
public:
|
||||
virtual void (VSSetConstantBuffers)(_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) UINT NumBuffers,_In_reads_opt_(NumBuffers) ID3D11Buffer* const* ppConstantBuffers) = 0;
|
||||
virtual void (PSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (PSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (PSSetShader)(_In_opt_ ID3D11PixelShader* pPixelShader) = 0;
|
||||
virtual void (PSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
virtual void (VSSetShader)(_In_opt_ ID3D11VertexShader* pVertexShader) = 0;
|
||||
@@ -276,13 +276,13 @@ namespace wdi
|
||||
virtual void (DrawInstanced)(_In_ UINT VertexCountPerInstance,_In_ UINT64 StartVertexLocationAndStartInstanceLocation,_In_ UINT InstanceCount) = 0;
|
||||
virtual void (GSSetConstantBuffers)(_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) UINT NumBuffers,_In_reads_opt_(NumBuffers) ID3D11Buffer* const* ppConstantBuffers) = 0;
|
||||
virtual void (GSSetShader)(_In_opt_ ID3D11GeometryShader* pShader) = 0;
|
||||
virtual void (VSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (VSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (VSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
virtual void (Begin)(_In_ ID3D11Asynchronous* pAsync) = 0;
|
||||
virtual void (End)(_In_ ID3D11Asynchronous* pAsync) = 0;
|
||||
virtual HRESULT(GetData)(_In_ ID3D11Asynchronous* pAsync,_Out_writes_bytes_opt_(DataSize) void* pData,_In_ UINT DataSize,_In_ UINT GetDataFlags) = 0;
|
||||
virtual void (SetPredication)(_In_opt_ ID3D11Predicate* pPredicate,_In_ BOOL PredicateValue) = 0;
|
||||
virtual void (GSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (GSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (GSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
virtual void (OMSetRenderTargets)(_In_range_(0, D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT) UINT NumViews,_In_reads_opt_(NumViews) ID3D11RenderTargetView* const* ppRenderTargetViews,_In_opt_ ID3D11DepthStencilView* pDepthStencilView) = 0;
|
||||
virtual void (OMSetRenderTargetsAndUnorderedAccessViews)(_In_ UINT NumRTVs,_In_reads_opt_(NumRTVs) ID3D11RenderTargetView* const* ppRenderTargetViews,_In_opt_ ID3D11DepthStencilView* pDepthStencilView,_In_range_(0, D3D11_1_UAV_SLOT_COUNT - 1) UINT UAVStartSlot,_In_ UINT NumUAVs,_In_reads_opt_(NumUAVs) ID3D11UnorderedAccessView* const* ppUnorderedAccessViews,_In_reads_opt_(NumUAVs) const UINT* pUAVInitialCounts) = 0;
|
||||
@@ -310,15 +310,15 @@ namespace wdi
|
||||
virtual FLOAT(GetResourceMinLOD)(_In_ ID3D11Resource* pResource) = 0;
|
||||
virtual void (ResolveSubresource)(_In_ ID3D11Resource* pDstResource,_In_ UINT DstSubresource,_In_ ID3D11Resource* pSrcResource,_In_ UINT SrcSubresource,_In_ DXGI_FORMAT Format) = 0;
|
||||
virtual void (ExecuteCommandList)(_In_ ID3D11CommandList* pCommandList,BOOL RestoreContextState) = 0;
|
||||
virtual void (HSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (HSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (HSSetShader)(_In_opt_ ID3D11HullShader* pHullShader) = 0;
|
||||
virtual void (HSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
virtual void (HSSetConstantBuffers)(_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) UINT NumBuffers,_In_reads_opt_(NumBuffers) ID3D11Buffer* const* ppConstantBuffers) = 0;
|
||||
virtual void (DSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (DSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (DSSetShader)(_In_opt_ ID3D11DomainShader* pDomainShader) = 0;
|
||||
virtual void (DSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
virtual void (DSSetConstantBuffers)(_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT - StartSlot) UINT NumBuffers,_In_reads_opt_(NumBuffers) ID3D11Buffer* const* ppConstantBuffers) = 0;
|
||||
virtual void (CSSetShaderResources)(ID3D11ShaderResourceView* const* ppShaderResourceViews,_In_range_(0, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT - 1) UINT StartSlot,_In_ UINT PacketHeader) = 0;
|
||||
virtual void (CSSetShaderResources)(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) = 0;
|
||||
virtual void (CSSetUnorderedAccessViews)(_In_range_(0, D3D11_1_UAV_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_1_UAV_SLOT_COUNT - StartSlot) UINT NumUAVs,_In_reads_opt_(NumUAVs) ID3D11UnorderedAccessView* const* ppUnorderedAccessViews,_In_reads_opt_(NumUAVs) const UINT* pUAVInitialCounts) = 0;
|
||||
virtual void (CSSetShader)(_In_opt_ ID3D11ComputeShader* pComputeShader) = 0;
|
||||
virtual void (CSSetSamplers)(_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - 1) UINT StartSlot,_In_range_(0, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT - StartSlot) UINT NumSamplers,_In_reads_opt_(NumSamplers) ID3D11SamplerState* const* ppSamplers) = 0;
|
||||
@@ -1059,8 +1059,7 @@ namespace wd
|
||||
USHORT ZMax) override;
|
||||
void FillResourceWithValue(ID3D11Resource* pDstResource, UINT FillValue) override;
|
||||
void SetDrawBalancing(UINT BalancingMode, UINT Flags) override;
|
||||
void PSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void PSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void PSSetShader(ID3D11PixelShader* pPixelShader) override;
|
||||
void PSSetSamplers(UINT StartSlot, UINT NumSamplers, ID3D11SamplerState* const* ppSamplers) override;
|
||||
void VSSetShader(ID3D11VertexShader* pVertexShader) override;
|
||||
@@ -1072,19 +1071,14 @@ namespace wd
|
||||
UINT InstanceCount) override;
|
||||
void GSSetConstantBuffers(UINT StartSlot, UINT NumBuffers, ID3D11Buffer* const* ppConstantBuffers) override;
|
||||
void GSSetShader(ID3D11GeometryShader* pShader) override;
|
||||
void VSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void GSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void VSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void GSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void DrawAuto() override;
|
||||
void HSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void HSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void HSSetShader(ID3D11HullShader* pHullShader) override;
|
||||
void DSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void DSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void DSSetShader(ID3D11DomainShader* pDomainShader) override;
|
||||
void CSSetShaderResources(ID3D11ShaderResourceView* const* ppShaderResourceViews, UINT StartSlot,
|
||||
UINT PacketHeader) override;
|
||||
void CSSetShaderResources(UINT StartSlot, UINT NumViews, ID3D11ShaderResourceView* const* ppShaderResourceViews) override;
|
||||
void CSSetShader(ID3D11ComputeShader* pComputeShader) override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -11,10 +11,6 @@ HRESULT wd::device_x::CreateBuffer(const D3D11_BUFFER_DESC* pDesc, const D3D11_S
|
||||
auto pDesc2 = *pDesc;
|
||||
pDesc2.MiscFlags &= D3D11_MISC_FLAGS_MASK;
|
||||
|
||||
if (pDesc->MiscFlags != 0x0 && pDesc->MiscFlags != 0x20000 && pDesc->MiscFlags != 0x40000 && pDesc->MiscFlags != 0x20 && pDesc->MiscFlags != 0x20020 && pDesc->MiscFlags != 0x40)
|
||||
{
|
||||
printf("[CreateBuffer] Unknown pDesc->MiscFlags flag!!! Value: 0x%llX\n", pDesc->MiscFlags);
|
||||
}
|
||||
|
||||
if (pDesc->MiscFlags == 0x20020)
|
||||
{
|
||||
@@ -22,6 +18,16 @@ HRESULT wd::device_x::CreateBuffer(const D3D11_BUFFER_DESC* pDesc, const D3D11_S
|
||||
pDesc2.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS;
|
||||
}
|
||||
|
||||
if (pDesc->MiscFlags == 0x20)
|
||||
{
|
||||
pDesc2.MiscFlags = D3D11_RESOURCE_MISC_BUFFER_ALLOW_RAW_VIEWS;
|
||||
}
|
||||
|
||||
if (pDesc->MiscFlags == 0x4)
|
||||
{
|
||||
pDesc2.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE;
|
||||
}
|
||||
|
||||
ID3D11Buffer* buffer = nullptr;
|
||||
HRESULT hr = wrapped_interface->CreateBuffer(&pDesc2, pInitialData, &buffer);
|
||||
|
||||
@@ -52,10 +58,7 @@ HRESULT wd::device_x::CreateTexture1D(const D3D11_TEXTURE1D_DESC* pDesc, const D
|
||||
HRESULT wd::device_x::CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, const D3D11_SUBRESOURCE_DATA* pInitialData,
|
||||
ID3D11Texture2D** ppTexture2D)
|
||||
{
|
||||
if (pDesc->MiscFlags != 0x0 && pDesc->MiscFlags != 0x20000 && pDesc->MiscFlags != 0x40000 && pDesc->MiscFlags != 0x20)
|
||||
{
|
||||
printf("[CreateTexture2D] Unknown pDesc->MiscFlags flag!!! Value: 0x%llX\n", pDesc->MiscFlags);
|
||||
}
|
||||
std::cout << std::hex << "CreateTexture2D MiscFlag---> " << pDesc->MiscFlags << "\n";
|
||||
|
||||
auto pDesc2 = *pDesc;
|
||||
pDesc2.MiscFlags &= D3D11_MISC_FLAGS_MASK;
|
||||
@@ -78,9 +81,14 @@ HRESULT wd::device_x::CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, const D
|
||||
pDesc2.MiscFlags = 0;
|
||||
}
|
||||
|
||||
if (pDesc->MiscFlags == 0x4)
|
||||
{
|
||||
pDesc2.MiscFlags = D3D11_RESOURCE_MISC_TEXTURECUBE;
|
||||
}
|
||||
|
||||
if (pDesc->MiscFlags == D3D11X_RESOURCE_MISC_ESRAM_RESIDENT)
|
||||
{
|
||||
D3DMapEsramMemory_X(0, &pInitialData, 512, (const UINT*)0x200);
|
||||
VirtualAlloc(&pInitialData, 0x3D0900, MEM_COMMIT, PAGE_READWRITE);
|
||||
pDesc2.MiscFlags = 0;
|
||||
}
|
||||
|
||||
@@ -91,7 +99,7 @@ HRESULT wd::device_x::CreateTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, const D
|
||||
|
||||
ID3D11Texture2D* texture2d = nullptr;
|
||||
|
||||
HRESULT hr = wrapped_interface->CreateTexture2D(&pDesc2, 0, &texture2d);
|
||||
HRESULT hr = wrapped_interface->CreateTexture2D(&pDesc2, pInitialData, &texture2d);
|
||||
|
||||
printf("[CreateTexture2D] created texture at 0x%llX\n", texture2d);
|
||||
|
||||
@@ -268,7 +276,6 @@ HRESULT wd::device_x::SetDriverHint(UINT Feature, UINT Value)
|
||||
HRESULT wd::device_x::CreateDmaEngineContext(const wdi::D3D11_DMA_ENGINE_CONTEXT_DESC* pDmaEngineContextDesc,
|
||||
wdi::ID3D11DmaEngineContextX** ppDmaDeviceContext)
|
||||
{
|
||||
*ppDmaDeviceContext = reinterpret_cast<wdi::ID3D11DmaEngineContextX*>(new D3D11DmaEngineContextX());
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -284,11 +291,17 @@ BOOL wd::device_x::IsResourcePending(ID3D11Resource* pResource)
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
#include <vector>
|
||||
|
||||
HRESULT wd::device_x::CreatePlacementBuffer(const D3D11_BUFFER_DESC* pDesc, void* pVirtualAddress,
|
||||
ID3D11Buffer** ppBuffer)
|
||||
{
|
||||
printf("CreatePlacementBuffer was called!!!!!!!\n");
|
||||
CreateBuffer(pDesc, 0, ppBuffer);
|
||||
|
||||
D3D11_SUBRESOURCE_DATA initialData = {};
|
||||
initialData.pSysMem = pVirtualAddress;
|
||||
initialData.SysMemPitch = pDesc->ByteWidth * 3;
|
||||
return CreateBuffer(pDesc, &initialData, ppBuffer);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
@@ -296,15 +309,15 @@ HRESULT wd::device_x::CreatePlacementBuffer(const D3D11_BUFFER_DESC* pDesc, void
|
||||
HRESULT wd::device_x::CreatePlacementTexture1D(const D3D11_TEXTURE1D_DESC* pDesc, UINT TileModeIndex, UINT Pitch,
|
||||
void* pVirtualAddress, ID3D11Texture1D** ppTexture1D)
|
||||
{
|
||||
auto pInitialData = new D3D11_SUBRESOURCE_DATA[pDesc->MipLevels * pDesc->ArraySize];
|
||||
std::vector<D3D11_SUBRESOURCE_DATA> initialData(pDesc->MipLevels);
|
||||
|
||||
pInitialData->pSysMem = pVirtualAddress;
|
||||
pInitialData->SysMemPitch = Pitch;
|
||||
pInitialData->SysMemSlicePitch = 0;
|
||||
for (int i = 0; i < initialData.size( ); i++)
|
||||
{
|
||||
initialData[ i ].pSysMem = pVirtualAddress;
|
||||
initialData[ i ].SysMemPitch = pDesc->Width;
|
||||
}
|
||||
|
||||
CreateTexture1D(pDesc, pInitialData, ppTexture1D);
|
||||
|
||||
delete[] pInitialData;
|
||||
CreateTexture1D(pDesc, initialData.data(), ppTexture1D);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
@@ -312,24 +325,40 @@ HRESULT wd::device_x::CreatePlacementTexture1D(const D3D11_TEXTURE1D_DESC* pDesc
|
||||
HRESULT wd::device_x::CreatePlacementTexture2D(const D3D11_TEXTURE2D_DESC* pDesc, UINT TileModeIndex, UINT Pitch,
|
||||
void* pVirtualAddress, ID3D11Texture2D** ppTexture2D)
|
||||
{
|
||||
auto pInitialData = new D3D11_SUBRESOURCE_DATA[pDesc->MipLevels * pDesc->ArraySize];
|
||||
std::vector<D3D11_SUBRESOURCE_DATA> initialData(pDesc->MipLevels * pDesc->ArraySize);
|
||||
|
||||
pInitialData->pSysMem = ppTexture2D;
|
||||
pInitialData->SysMemPitch = Pitch + 2;
|
||||
pInitialData->SysMemSlicePitch = 0;
|
||||
if (pDesc->BindFlags == 72)
|
||||
{
|
||||
CreateTexture2D(pDesc, 0, ppTexture2D);
|
||||
|
||||
CreateTexture2D(pDesc, pInitialData, ppTexture2D);
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
delete[] pInitialData;
|
||||
for (int i = 0; i < initialData.size( ); i++)
|
||||
{
|
||||
initialData[ i ].pSysMem = pVirtualAddress;
|
||||
initialData[ i ].SysMemPitch = pDesc->Width;
|
||||
}
|
||||
|
||||
CreateTexture2D(pDesc, initialData.data(), ppTexture2D);
|
||||
|
||||
return S_OK;
|
||||
|
||||
}
|
||||
|
||||
HRESULT wd::device_x::CreatePlacementTexture3D(const D3D11_TEXTURE3D_DESC* pDesc, UINT TileModeIndex, UINT Pitch,
|
||||
void* pVirtualAddress, ID3D11Texture3D** ppTexture3D)
|
||||
{
|
||||
CreateTexture3D(pDesc, 0, ppTexture3D);
|
||||
std::vector<D3D11_SUBRESOURCE_DATA> initialData(pDesc->MipLevels);
|
||||
|
||||
for (int i = 0; i < initialData.size( ); i++)
|
||||
{
|
||||
initialData[ i ].pSysMem = pVirtualAddress;
|
||||
initialData[ i ].SysMemPitch = pDesc->Width;
|
||||
initialData[ i ].SysMemSlicePitch = pDesc->Width;
|
||||
}
|
||||
|
||||
CreateTexture3D(pDesc, initialData.data(), ppTexture3D);
|
||||
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
@@ -354,8 +383,7 @@ HRESULT wd::device_x::CreateDeferredContextX(UINT Flags, wdi::ID3D11DeviceContex
|
||||
|
||||
void wd::device_x::GarbageCollect(UINT Flags)
|
||||
{
|
||||
printf("GarbageCollect was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
|
||||
}
|
||||
|
||||
HRESULT wd::device_x::CreateDepthStencilStateX(const D3D11_DEPTH_STENCIL_DESC* pDepthStencilStateDesc,
|
||||
@@ -377,7 +405,6 @@ HRESULT wd::device_x::CreatePlacementRenderableTexture2D(const D3D11_TEXTURE2D_D
|
||||
void wd::device_x::GetDriverStatistics(UINT StructSize, wdi::D3D11X_DRIVER_STATISTICS* pStatistics)
|
||||
{
|
||||
printf("GetDriverStatistics was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
HRESULT wd::device_x::CreateComputeContextX(const wdi::D3D11_COMPUTE_CONTEXT_DESC* pComputeContextDesc,
|
||||
@@ -392,7 +419,6 @@ void wd::device_x::ComposeShaderResourceView(const wdi::D3D11X_DESCRIPTOR_RESOUR
|
||||
wdi::D3D11X_DESCRIPTOR_SHADER_RESOURCE_VIEW* pDescriptorSrv)
|
||||
{
|
||||
printf("ComposeShaderResourceView was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::ComposeUnorderedAccessView(const wdi::D3D11X_DESCRIPTOR_RESOURCE* pDescriptorResource,
|
||||
@@ -400,7 +426,6 @@ void wd::device_x::ComposeUnorderedAccessView(const wdi::D3D11X_DESCRIPTOR_RESOU
|
||||
wdi::D3D11X_DESCRIPTOR_UNORDERED_ACCESS_VIEW* pDescriptorUav)
|
||||
{
|
||||
printf("ComposeUnorderedAccessView was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::ComposeConstantBufferView(const wdi::D3D11X_DESCRIPTOR_RESOURCE* pDescriptorResource,
|
||||
@@ -408,7 +433,6 @@ void wd::device_x::ComposeConstantBufferView(const wdi::D3D11X_DESCRIPTOR_RESOUR
|
||||
wdi::D3D11X_DESCRIPTOR_CONSTANT_BUFFER_VIEW* pDescriptorCb)
|
||||
{
|
||||
printf("ComposeConstantBufferView was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::ComposeVertexBufferView(const wdi::D3D11X_DESCRIPTOR_RESOURCE* pDescriptorResource,
|
||||
@@ -416,20 +440,17 @@ void wd::device_x::ComposeVertexBufferView(const wdi::D3D11X_DESCRIPTOR_RESOURCE
|
||||
wdi::D3D11X_DESCRIPTOR_VERTEX_BUFFER_VIEW* pDescriptorVb)
|
||||
{
|
||||
printf("ComposeVertexBufferView was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::ComposeSamplerState(const wdi::D3D11X_SAMPLER_STATE_DESC* pSamplerDesc,
|
||||
wdi::D3D11X_DESCRIPTOR_SAMPLER_STATE* pDescriptorSamplerState)
|
||||
{
|
||||
printf("ComposeSamplerState was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::PlaceSwapChainView(ID3D11Resource* pSwapChainBuffer, ID3D11View* pView)
|
||||
{
|
||||
printf("PlaceSwapChainView was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::SetDebugFlags(UINT Flags)
|
||||
@@ -440,20 +461,18 @@ void wd::device_x::SetDebugFlags(UINT Flags)
|
||||
UINT wd::device_x::GetDebugFlags( )
|
||||
{
|
||||
printf("GetDebugFlags was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
return 0;
|
||||
}
|
||||
|
||||
void wd::device_x::SetHangCallbacks(wdi::D3D11XHANGBEGINCALLBACK pBeginCallback, wdi::D3D11XHANGPRINTCALLBACK pPrintCallback,
|
||||
wdi::D3D11XHANGDUMPCALLBACK pDumpCallback)
|
||||
{
|
||||
printf("SetHangCallbacks was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
void wd::device_x::ReportGpuHang(UINT Flags)
|
||||
{
|
||||
printf("ReportGpuHang was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
HRESULT wd::device_x::SetGpuMemoryPriority(UINT Priority)
|
||||
@@ -465,5 +484,4 @@ HRESULT wd::device_x::SetGpuMemoryPriority(UINT Priority)
|
||||
void wd::device_x::GetGpuHardwareConfiguration(wdi::D3D11X_GPU_HARDWARE_CONFIGURATION* pGpuHardwareConfiguration)
|
||||
{
|
||||
printf("GetGpuHardwareConfiguration was called!!!!!!!\n");
|
||||
throw std::logic_error("Not implemented");
|
||||
}
|
||||
|
||||
@@ -35,7 +35,6 @@ HRESULT wd::dxgi_swapchain::GetDevice(const IID& riid, void** ppDevice)
|
||||
|
||||
HRESULT wd::dxgi_swapchain::Present(UINT SyncInterval, UINT Flags)
|
||||
{
|
||||
printf("Present\n");
|
||||
return wrapped_interface->Present(SyncInterval, Flags);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user