1
0
mirror of https://github.com/doitsujin/dxvk.git synced 2024-12-14 09:23:53 +01:00
dxvk/src/d3d10/d3d10_device.h

480 lines
20 KiB
C++

#pragma once
#include "d3d10_multithread.h"
namespace dxvk {
class D3D11Device;
class D3D11ImmediateContext;
class D3D10Device final : public ID3D10Device1 {
public:
D3D10Device(
D3D11Device* pDevice,
D3D11ImmediateContext* pContext);
~D3D10Device();
HRESULT STDMETHODCALLTYPE QueryInterface(
REFIID riid,
void** ppvObject);
ULONG STDMETHODCALLTYPE AddRef();
ULONG STDMETHODCALLTYPE Release();
HRESULT STDMETHODCALLTYPE GetPrivateData(
REFGUID guid,
UINT* pDataSize,
void* pData);
HRESULT STDMETHODCALLTYPE SetPrivateData(
REFGUID guid,
UINT DataSize,
const void* pData);
HRESULT STDMETHODCALLTYPE SetPrivateDataInterface(
REFGUID guid,
const IUnknown* pData);
HRESULT STDMETHODCALLTYPE GetDeviceRemovedReason();
HRESULT STDMETHODCALLTYPE SetExceptionMode(
UINT RaiseFlags);
UINT STDMETHODCALLTYPE GetExceptionMode();
D3D10_FEATURE_LEVEL1 STDMETHODCALLTYPE GetFeatureLevel();
void STDMETHODCALLTYPE ClearState();
void STDMETHODCALLTYPE Flush();
HRESULT STDMETHODCALLTYPE CreateBuffer(
const D3D10_BUFFER_DESC* pDesc,
const D3D10_SUBRESOURCE_DATA* pInitialData,
ID3D10Buffer** ppBuffer);
HRESULT STDMETHODCALLTYPE CreateTexture1D(
const D3D10_TEXTURE1D_DESC* pDesc,
const D3D10_SUBRESOURCE_DATA* pInitialData,
ID3D10Texture1D** ppTexture1D);
HRESULT STDMETHODCALLTYPE CreateTexture2D(
const D3D10_TEXTURE2D_DESC* pDesc,
const D3D10_SUBRESOURCE_DATA* pInitialData,
ID3D10Texture2D** ppTexture2D);
HRESULT STDMETHODCALLTYPE CreateTexture3D(
const D3D10_TEXTURE3D_DESC* pDesc,
const D3D10_SUBRESOURCE_DATA* pInitialData,
ID3D10Texture3D** ppTexture3D);
HRESULT STDMETHODCALLTYPE CreateShaderResourceView(
ID3D10Resource* pResource,
const D3D10_SHADER_RESOURCE_VIEW_DESC* pDesc,
ID3D10ShaderResourceView** ppSRView);
HRESULT STDMETHODCALLTYPE CreateShaderResourceView1(
ID3D10Resource* pResource,
const D3D10_SHADER_RESOURCE_VIEW_DESC1* pDesc,
ID3D10ShaderResourceView1** ppSRView);
HRESULT STDMETHODCALLTYPE CreateRenderTargetView(
ID3D10Resource* pResource,
const D3D10_RENDER_TARGET_VIEW_DESC* pDesc,
ID3D10RenderTargetView** ppRTView);
HRESULT STDMETHODCALLTYPE CreateDepthStencilView(
ID3D10Resource* pResource,
const D3D10_DEPTH_STENCIL_VIEW_DESC* pDesc,
ID3D10DepthStencilView** ppDepthStencilView);
HRESULT STDMETHODCALLTYPE CreateInputLayout(
const D3D10_INPUT_ELEMENT_DESC* pInputElementDescs,
UINT NumElements,
const void* pShaderBytecodeWithInputSignature,
SIZE_T BytecodeLength,
ID3D10InputLayout** ppInputLayout);
HRESULT STDMETHODCALLTYPE CreateVertexShader(
const void* pShaderBytecode,
SIZE_T BytecodeLength,
ID3D10VertexShader** ppVertexShader);
HRESULT STDMETHODCALLTYPE CreateGeometryShader(
const void* pShaderBytecode,
SIZE_T BytecodeLength,
ID3D10GeometryShader** ppGeometryShader);
HRESULT STDMETHODCALLTYPE CreateGeometryShaderWithStreamOutput(
const void* pShaderBytecode,
SIZE_T BytecodeLength,
const D3D10_SO_DECLARATION_ENTRY* pSODeclaration,
UINT NumEntries,
UINT OutputStreamStride,
ID3D10GeometryShader** ppGeometryShader);
HRESULT STDMETHODCALLTYPE CreatePixelShader(
const void* pShaderBytecode,
SIZE_T BytecodeLength,
ID3D10PixelShader** ppPixelShader);
HRESULT STDMETHODCALLTYPE CreateBlendState(
const D3D10_BLEND_DESC* pBlendStateDesc,
ID3D10BlendState** ppBlendState);
HRESULT STDMETHODCALLTYPE CreateBlendState1(
const D3D10_BLEND_DESC1* pBlendStateDesc,
ID3D10BlendState1** ppBlendState);
HRESULT STDMETHODCALLTYPE CreateDepthStencilState(
const D3D10_DEPTH_STENCIL_DESC* pDepthStencilDesc,
ID3D10DepthStencilState** ppDepthStencilState);
HRESULT STDMETHODCALLTYPE CreateRasterizerState(
const D3D10_RASTERIZER_DESC* pRasterizerDesc,
ID3D10RasterizerState** ppRasterizerState);
HRESULT STDMETHODCALLTYPE CreateSamplerState(
const D3D10_SAMPLER_DESC* pSamplerDesc,
ID3D10SamplerState** ppSamplerState);
HRESULT STDMETHODCALLTYPE CreateQuery(
const D3D10_QUERY_DESC* pQueryDesc,
ID3D10Query** ppQuery);
HRESULT STDMETHODCALLTYPE CreatePredicate(
const D3D10_QUERY_DESC* pPredicateDesc,
ID3D10Predicate** ppPredicate);
HRESULT STDMETHODCALLTYPE CreateCounter(
const D3D10_COUNTER_DESC* pCounterDesc,
ID3D10Counter** ppCounter);
HRESULT STDMETHODCALLTYPE CheckFormatSupport(
DXGI_FORMAT Format,
UINT* pFormatSupport);
HRESULT STDMETHODCALLTYPE CheckMultisampleQualityLevels(
DXGI_FORMAT Format,
UINT SampleCount,
UINT* pNumQualityLevels);
void STDMETHODCALLTYPE CheckCounterInfo(
D3D10_COUNTER_INFO* pCounterInfo);
HRESULT STDMETHODCALLTYPE CheckCounter(
const D3D10_COUNTER_DESC* pDesc,
D3D10_COUNTER_TYPE* pType,
UINT* pActiveCounters,
char* name,
UINT* pNameLength,
char* units,
UINT* pUnitsLength,
char* description,
UINT* pDescriptionLength);
UINT STDMETHODCALLTYPE GetCreationFlags();
HRESULT STDMETHODCALLTYPE OpenSharedResource(
HANDLE hResource,
REFIID ReturnedInterface,
void** ppResource);
void STDMETHODCALLTYPE ClearRenderTargetView(
ID3D10RenderTargetView* pRenderTargetView,
const FLOAT ColorRGBA[4]);
void STDMETHODCALLTYPE ClearDepthStencilView(
ID3D10DepthStencilView* pDepthStencilView,
UINT ClearFlags,
FLOAT Depth,
UINT8 Stencil);
void STDMETHODCALLTYPE SetPredication(
ID3D10Predicate* pPredicate,
BOOL PredicateValue);
void STDMETHODCALLTYPE GetPredication(
ID3D10Predicate** ppPredicate,
BOOL* pPredicateValue);
void STDMETHODCALLTYPE CopySubresourceRegion(
ID3D10Resource* pDstResource,
UINT DstSubresource,
UINT DstX,
UINT DstY,
UINT DstZ,
ID3D10Resource* pSrcResource,
UINT SrcSubresource,
const D3D10_BOX* pSrcBox);
void STDMETHODCALLTYPE CopyResource(
ID3D10Resource* pDstResource,
ID3D10Resource* pSrcResource);
void STDMETHODCALLTYPE UpdateSubresource(
ID3D10Resource* pDstResource,
UINT DstSubresource,
const D3D10_BOX* pDstBox,
const void* pSrcData,
UINT SrcRowPitch,
UINT SrcDepthPitch);
void STDMETHODCALLTYPE GenerateMips(
ID3D10ShaderResourceView* pShaderResourceView);
void STDMETHODCALLTYPE ResolveSubresource(
ID3D10Resource* pDstResource,
UINT DstSubresource,
ID3D10Resource* pSrcResource,
UINT SrcSubresource,
DXGI_FORMAT Format);
void STDMETHODCALLTYPE Draw(
UINT VertexCount,
UINT StartVertexLocation);
void STDMETHODCALLTYPE DrawIndexed(
UINT IndexCount,
UINT StartIndexLocation,
INT BaseVertexLocation);
void STDMETHODCALLTYPE DrawInstanced(
UINT VertexCountPerInstance,
UINT InstanceCount,
UINT StartVertexLocation,
UINT StartInstanceLocation);
void STDMETHODCALLTYPE DrawIndexedInstanced(
UINT IndexCountPerInstance,
UINT InstanceCount,
UINT StartIndexLocation,
INT BaseVertexLocation,
UINT StartInstanceLocation);
void STDMETHODCALLTYPE DrawAuto();
void STDMETHODCALLTYPE IASetInputLayout(
ID3D10InputLayout* pInputLayout);
void STDMETHODCALLTYPE IASetPrimitiveTopology(
D3D10_PRIMITIVE_TOPOLOGY Topology);
void STDMETHODCALLTYPE IASetVertexBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer* const* ppVertexBuffers,
const UINT* pStrides,
const UINT* pOffsets);
void STDMETHODCALLTYPE IASetIndexBuffer(
ID3D10Buffer* pIndexBuffer,
DXGI_FORMAT Format,
UINT Offset);
void STDMETHODCALLTYPE IAGetInputLayout(
ID3D10InputLayout** ppInputLayout);
void STDMETHODCALLTYPE IAGetPrimitiveTopology(
D3D10_PRIMITIVE_TOPOLOGY* pTopology);
void STDMETHODCALLTYPE IAGetVertexBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer** ppVertexBuffers,
UINT* pStrides,
UINT* pOffsets);
void STDMETHODCALLTYPE IAGetIndexBuffer(
ID3D10Buffer** pIndexBuffer,
DXGI_FORMAT* Format,
UINT* Offset);
void STDMETHODCALLTYPE VSSetShader(
ID3D10VertexShader* pVertexShader);
void STDMETHODCALLTYPE VSSetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers);
void STDMETHODCALLTYPE VSSetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews);
void STDMETHODCALLTYPE VSSetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers);
void STDMETHODCALLTYPE VSGetShader(
ID3D10VertexShader** ppVertexShader);
void STDMETHODCALLTYPE VSGetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers);
void STDMETHODCALLTYPE VSGetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews);
void STDMETHODCALLTYPE VSGetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState** ppSamplers);
void STDMETHODCALLTYPE GSSetShader(
ID3D10GeometryShader* pShader);
void STDMETHODCALLTYPE GSSetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers);
void STDMETHODCALLTYPE GSSetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews);
void STDMETHODCALLTYPE GSSetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers);
void STDMETHODCALLTYPE GSGetShader(
ID3D10GeometryShader** ppGeometryShader);
void STDMETHODCALLTYPE GSGetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers);
void STDMETHODCALLTYPE GSGetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews);
void STDMETHODCALLTYPE GSGetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState** ppSamplers);
void STDMETHODCALLTYPE PSSetShader(
ID3D10PixelShader* pPixelShader);
void STDMETHODCALLTYPE PSSetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer* const* ppConstantBuffers);
void STDMETHODCALLTYPE PSSetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView* const* ppShaderResourceViews);
void STDMETHODCALLTYPE PSSetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState* const* ppSamplers);
void STDMETHODCALLTYPE PSGetShader(
ID3D10PixelShader** ppPixelShader);
void STDMETHODCALLTYPE PSGetConstantBuffers(
UINT StartSlot,
UINT NumBuffers,
ID3D10Buffer** ppConstantBuffers);
void STDMETHODCALLTYPE PSGetShaderResources(
UINT StartSlot,
UINT NumViews,
ID3D10ShaderResourceView** ppShaderResourceViews);
void STDMETHODCALLTYPE PSGetSamplers(
UINT StartSlot,
UINT NumSamplers,
ID3D10SamplerState** ppSamplers);
void STDMETHODCALLTYPE OMSetRenderTargets(
UINT NumViews,
ID3D10RenderTargetView* const* ppRenderTargetViews,
ID3D10DepthStencilView* pDepthStencilView);
void STDMETHODCALLTYPE OMSetBlendState(
ID3D10BlendState* pBlendState,
const FLOAT BlendFactor[4],
UINT SampleMask);
void STDMETHODCALLTYPE OMSetDepthStencilState(
ID3D10DepthStencilState* pDepthStencilState,
UINT StencilRef);
void STDMETHODCALLTYPE OMGetRenderTargets(
UINT NumViews,
ID3D10RenderTargetView** ppRenderTargetViews,
ID3D10DepthStencilView** ppDepthStencilView);
void STDMETHODCALLTYPE OMGetBlendState(
ID3D10BlendState** ppBlendState,
FLOAT BlendFactor[4],
UINT* pSampleMask);
void STDMETHODCALLTYPE OMGetDepthStencilState(
ID3D10DepthStencilState** ppDepthStencilState,
UINT* pStencilRef);
void STDMETHODCALLTYPE RSSetState(
ID3D10RasterizerState* pRasterizerState);
void STDMETHODCALLTYPE RSSetViewports(
UINT NumViewports,
const D3D10_VIEWPORT* pViewports);
void STDMETHODCALLTYPE RSSetScissorRects(
UINT NumRects,
const D3D10_RECT* pRects);
void STDMETHODCALLTYPE RSGetState(
ID3D10RasterizerState** ppRasterizerState);
void STDMETHODCALLTYPE RSGetViewports(
UINT* NumViewports,
D3D10_VIEWPORT* pViewports);
void STDMETHODCALLTYPE RSGetScissorRects(
UINT* NumRects,
D3D10_RECT* pRects);
void STDMETHODCALLTYPE SOSetTargets(
UINT NumBuffers,
ID3D10Buffer* const* ppSOTargets,
const UINT* pOffsets);
void STDMETHODCALLTYPE SOGetTargets(
UINT NumBuffers,
ID3D10Buffer** ppSOTargets,
UINT* pOffsets);
void STDMETHODCALLTYPE SetTextFilterSize(
UINT Width,
UINT Height);
void STDMETHODCALLTYPE GetTextFilterSize(
UINT* pWidth,
UINT* pHeight);
private:
D3D11Device* m_device;
D3D11ImmediateContext* m_context;
};
}