diff options
| author | lucy96chen <47800040+lucy96chen@users.noreply.github.com> | 2022-07-27 15:53:36 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-07-27 15:53:36 -0700 |
| commit | ed37dcbc175d07134cb0493f5e379a19e97c82f5 (patch) | |
| tree | 0abd3202401d89e76a979ab7c18569afd63db8a6 /tools/gfx/cpu/cpu-device.h | |
| parent | de0f8cf1be0770b87a117b637943db4ad4e1158b (diff) | |
Split render-cpu into smaller files (#2340)
* render-cpu split, does not compile
* split finished, one compile error
* added missing include and missing destructor implementation
* Rerun TeamCity CI
Diffstat (limited to 'tools/gfx/cpu/cpu-device.h')
| -rw-r--r-- | tools/gfx/cpu/cpu-device.h | 98 |
1 files changed, 98 insertions, 0 deletions
diff --git a/tools/gfx/cpu/cpu-device.h b/tools/gfx/cpu/cpu-device.h new file mode 100644 index 000000000..d216eb0be --- /dev/null +++ b/tools/gfx/cpu/cpu-device.h @@ -0,0 +1,98 @@ +// cpu-device.h +#pragma once +#include "cpu-base.h" + +#include "cpu-pipeline-state.h" +#include "cpu-shader-object.h" + +namespace gfx +{ +using namespace Slang; + +namespace cpu +{ + +class DeviceImpl : public ImmediateComputeDeviceBase +{ +public: + ~DeviceImpl(); + + virtual SLANG_NO_THROW SlangResult SLANG_MCALL initialize(const Desc& desc) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createTextureResource( + const ITextureResource::Desc& desc, + const ITextureResource::SubresourceData* initData, + ITextureResource** outResource) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createBufferResource( + const IBufferResource::Desc& descIn, + const void* initData, + IBufferResource** outResource) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createTextureView( + ITextureResource* inTexture, IResourceView::Desc const& desc, IResourceView** outView) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createBufferView( + IBufferResource* inBuffer, + IBufferResource* counterBuffer, + IResourceView::Desc const& desc, + IResourceView** outView) override; + + virtual Result createShaderObjectLayout( + slang::TypeLayoutReflection* typeLayout, + ShaderObjectLayoutBase** outLayout) override; + + virtual Result createShaderObject( + ShaderObjectLayoutBase* layout, + IShaderObject** outObject) override; + + virtual Result createMutableShaderObject( + ShaderObjectLayoutBase* layout, + IShaderObject** outObject) override; + + virtual Result createRootShaderObject(IShaderProgram* program, ShaderObjectBase** outObject) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createProgram( + const IShaderProgram::Desc& desc, + IShaderProgram** outProgram, + ISlangBlob** outDiagnosticBlob) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createComputePipelineState( + const ComputePipelineStateDesc& desc, IPipelineState** outState) override; + + virtual SLANG_NO_THROW Result SLANG_MCALL createQueryPool( + const IQueryPool::Desc& desc, IQueryPool** outPool) override; + + virtual void writeTimestamp(IQueryPool* pool, GfxIndex index) override; + + virtual SLANG_NO_THROW const DeviceInfo& SLANG_MCALL getDeviceInfo() const override; + + virtual SLANG_NO_THROW Result SLANG_MCALL + createSamplerState(ISamplerState::Desc const& desc, ISamplerState** outSampler) override; + + virtual void submitGpuWork() override {} + virtual void waitForGpu() override {} + virtual void* map(IBufferResource* buffer, MapFlavor flavor) override; + virtual void unmap(IBufferResource* buffer, size_t offsetWritten, size_t sizeWritten) override; + +private: + RefPtr<PipelineStateImpl> m_currentPipeline = nullptr; + RefPtr<RootShaderObjectImpl> m_currentRootObject = nullptr; + DeviceInfo m_info; + + virtual void setPipelineState(IPipelineState* state) override; + + virtual void bindRootShaderObject(IShaderObject* object) override; + + virtual void dispatchCompute(int x, int y, int z) override; + + virtual void copyBuffer( + IBufferResource* dst, + size_t dstOffset, + IBufferResource* src, + size_t srcOffset, + size_t size) override; +}; + +} // namespace cpu +} // namespace gfx |
