#pragma once #include #include "d3d11_buffer.h" #include "d3d11_shader.h" #include "d3d11_state.h" #include "d3d11_view.h" namespace dxvk { struct D3D11ComputePipelineBindings { std::array, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT> constantBuffers; // std::array, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT> shaderResourceViews; // std::array, D3D11_1_UAV_SLOT_COUNT> uniformAccessViews; // std::array, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT> samplers; }; struct D3D11GraphicsPipelineBindings { std::array, D3D11_COMMONSHADER_CONSTANT_BUFFER_API_SLOT_COUNT> constantBuffers; // std::array, D3D11_COMMONSHADER_INPUT_RESOURCE_SLOT_COUNT> shaderResourceViews; // std::array, D3D11_COMMONSHADER_SAMPLER_SLOT_COUNT> samplers; }; struct D3D11ContextStateVS { Com shader; D3D11GraphicsPipelineBindings bindings; }; struct D3D11ContextStateHS { Com shader; D3D11GraphicsPipelineBindings bindings; }; struct D3D11ContextStateDS { Com shader; D3D11GraphicsPipelineBindings bindings; }; struct D3D11ContextStateGS { Com shader; D3D11GraphicsPipelineBindings bindings; }; struct D3D11ContextStatePS { Com shader; D3D11GraphicsPipelineBindings bindings; }; struct D3D11ContextStateCS { Com shader; D3D11ComputePipelineBindings bindings; }; struct D3D11ContextStateIA { }; struct D3D11ContextStateOM { std::array, D3D11_SIMULTANEOUS_RENDER_TARGET_COUNT> renderTargetViews; Rc framebuffer; }; struct D3D11ContextStateRS { uint32_t numViewports = 0; uint32_t numScissors = 0; std::array viewports; std::array scissors; Com state; }; /** * \brief Context state */ struct D3D11ContextState { D3D11ContextStateCS cs; D3D11ContextStateDS ds; D3D11ContextStateGS gs; D3D11ContextStateHS hs; D3D11ContextStatePS ps; D3D11ContextStateVS vs; D3D11ContextStateIA ia; D3D11ContextStateOM om; D3D11ContextStateRS rs; }; }