#pragma once #include "d3d10_include.h" #include "d3d10_interfaces.h" namespace dxvk { struct D3D10_STATE_BLOCK_STATE { Com vs = { }; Com vsSso[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT] = { }; Com vsSrv[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = { }; Com vsCbo[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = { }; Com gs = { }; Com gsSso[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT] = { }; Com gsSrv[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = { }; Com gsCbo[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = { }; Com ps = { }; Com psSso[D3D10_COMMONSHADER_SAMPLER_SLOT_COUNT] = { }; Com psSrv[D3D10_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT] = { }; Com psCbo[D3D10_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT] = { }; Com iaVertexBuffers[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT] = { }; UINT iaVertexOffsets[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT] = { }; UINT iaVertexStrides[D3D10_IA_VERTEX_INPUT_RESOURCE_SLOT_COUNT] = { }; Com iaIndexBuffer = { }; DXGI_FORMAT iaIndexFormat = DXGI_FORMAT_UNKNOWN; UINT iaIndexOffset = 0; Com iaInputLayout = nullptr; D3D10_PRIMITIVE_TOPOLOGY iaTopology = D3D10_PRIMITIVE_TOPOLOGY_UNDEFINED; Com omRtv[D3D10_SIMULTANEOUS_RENDER_TARGET_COUNT] = { }; Com omDsv = { }; Com omDepthStencilState = { }; UINT omStencilRef = 0; Com omBlendState = { }; FLOAT omBlendFactor[4] = { }; UINT omSampleMask = 0; UINT rsViewportCount = 0; D3D10_VIEWPORT rsViewports[D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE] = { }; UINT rsScissorCount = 0; RECT rsScissors [D3D10_VIEWPORT_AND_SCISSORRECT_OBJECT_COUNT_PER_PIPELINE] = { }; Com rsState = { }; Com soBuffers[D3D10_SO_BUFFER_SLOT_COUNT] = { }; UINT soOffsets[D3D10_SO_BUFFER_SLOT_COUNT] = { }; Com predicate = { }; BOOL predicateInvert = FALSE; }; class D3D10StateBlock : public ComObject { public: D3D10StateBlock( ID3D10Device* pDevice, const D3D10_STATE_BLOCK_MASK* pMask); ~D3D10StateBlock(); HRESULT STDMETHODCALLTYPE QueryInterface( REFIID riid, void** ppvObject); HRESULT STDMETHODCALLTYPE Capture(); HRESULT STDMETHODCALLTYPE Apply(); HRESULT STDMETHODCALLTYPE GetDevice( ID3D10Device** ppDevice); HRESULT STDMETHODCALLTYPE ReleaseAllDeviceObjects(); private: Com m_device; D3D10_STATE_BLOCK_MASK m_mask; D3D10_STATE_BLOCK_STATE m_state; static BOOL TestBit( const BYTE* pMask, UINT Idx); }; }