yum-mirror/slang

Making it easier to work with shaders

git clone https://git.yummers.dev/yum-mirror/slang

Ellie Hermaszewskaformatf65d756bf

master
2.7 KiB78 linesraw
1// d3d12-submitter.h
2#pragma once
3
4#include "d3d12-base.h"
5
6namespace gfx
7{
8namespace d3d12
9{
10
11using namespace Slang;
12
13struct Submitter
14{
15    virtual void setRootConstantBufferView(
16        int index,
17        D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) = 0;
18    virtual void setRootUAV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) = 0;
19    virtual void setRootSRV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) = 0;
20    virtual void setRootDescriptorTable(int index, D3D12_GPU_DESCRIPTOR_HANDLE BaseDescriptor) = 0;
21    virtual void setRootSignature(ID3D12RootSignature* rootSignature) = 0;
22    virtual void setRootConstants(
23        Index rootParamIndex,
24        Index dstOffsetIn32BitValues,
25        Index countOf32BitValues,
26        void const* srcData) = 0;
27    virtual void setPipelineState(PipelineStateBase* pipelineState) = 0;
28};
29
30struct GraphicsSubmitter : public Submitter
31{
32    virtual void setRootConstantBufferView(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation)
33        override;
34    virtual void setRootUAV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) override;
35    virtual void setRootSRV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) override;
36    virtual void setRootDescriptorTable(int index, D3D12_GPU_DESCRIPTOR_HANDLE baseDescriptor)
37        override;
38    virtual void setRootSignature(ID3D12RootSignature* rootSignature) override;
39    virtual void setRootConstants(
40        Index rootParamIndex,
41        Index dstOffsetIn32BitValues,
42        Index countOf32BitValues,
43        void const* srcData) override;
44    virtual void setPipelineState(PipelineStateBase* pipeline) override;
45
46    GraphicsSubmitter(ID3D12GraphicsCommandList* commandList)
47        : m_commandList(commandList)
48    {
49    }
50
51    ID3D12GraphicsCommandList* m_commandList;
52};
53
54struct ComputeSubmitter : public Submitter
55{
56    virtual void setRootConstantBufferView(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation)
57        override;
58    virtual void setRootUAV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) override;
59    virtual void setRootSRV(int index, D3D12_GPU_VIRTUAL_ADDRESS gpuBufferLocation) override;
60    virtual void setRootDescriptorTable(int index, D3D12_GPU_DESCRIPTOR_HANDLE baseDescriptor)
61        override;
62    virtual void setRootSignature(ID3D12RootSignature* rootSignature) override;
63    virtual void setRootConstants(
64        Index rootParamIndex,
65        Index dstOffsetIn32BitValues,
66        Index countOf32BitValues,
67        void const* srcData) override;
68    virtual void setPipelineState(PipelineStateBase* pipeline) override;
69    ComputeSubmitter(ID3D12GraphicsCommandList* commandList)
70        : m_commandList(commandList)
71    {
72    }
73
74    ID3D12GraphicsCommandList* m_commandList;
75};
76
77} // namespace d3d12
78} // namespace gfx