summaryrefslogtreecommitdiff
path: root/tools/gfx/cpu/cpu-device.h
diff options
context:
space:
mode:
authorlucy96chen <47800040+lucy96chen@users.noreply.github.com>2022-07-27 15:53:36 -0700
committerGitHub <noreply@github.com>2022-07-27 15:53:36 -0700
commited37dcbc175d07134cb0493f5e379a19e97c82f5 (patch)
tree0abd3202401d89e76a979ab7c18569afd63db8a6 /tools/gfx/cpu/cpu-device.h
parentde0f8cf1be0770b87a117b637943db4ad4e1158b (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.h98
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