summaryrefslogtreecommitdiffstats
path: root/tools/gfx/cuda/cuda-command-queue.h
diff options
context:
space:
mode:
authorlucy96chen <47800040+lucy96chen@users.noreply.github.com>2022-07-25 13:36:43 -0700
committerGitHub <noreply@github.com>2022-07-25 13:36:43 -0700
commitce6e946f6f4882aba8a62392ae791c948633e2e3 (patch)
treefde46847900ef80ee111a6b612f7e0931b15fdf2 /tools/gfx/cuda/cuda-command-queue.h
parent129294a58d2a51308af78ad5d8d436c026863259 (diff)
Split render-cuda.cpp into smaller files (#2334)
* render-cuda split, compile errors galore due to missing includes etc. * render-cuda split and fully compiles * Ran premake.bat to disable cuda; Added all new files * Removed render-cuda files * CI fixes * Rerun CI
Diffstat (limited to 'tools/gfx/cuda/cuda-command-queue.h')
-rw-r--r--tools/gfx/cuda/cuda-command-queue.h69
1 files changed, 69 insertions, 0 deletions
diff --git a/tools/gfx/cuda/cuda-command-queue.h b/tools/gfx/cuda/cuda-command-queue.h
new file mode 100644
index 000000000..10601890e
--- /dev/null
+++ b/tools/gfx/cuda/cuda-command-queue.h
@@ -0,0 +1,69 @@
+// cuda-command-queue.h
+#pragma once
+#include "cuda-base.h"
+
+#include "cuda-device.h"
+#include "cuda-pipeline-state.h"
+#include "cuda-shader-object.h"
+#include "cuda-helper-functions.h"
+
+namespace gfx
+{
+#ifdef GFX_ENABLE_CUDA
+using namespace Slang;
+
+namespace cuda
+{
+
+class CommandQueueImpl
+ : public ICommandQueue
+ , public ComObject
+{
+public:
+ SLANG_COM_OBJECT_IUNKNOWN_ALL
+ ICommandQueue* getInterface(const Guid& guid);
+
+ RefPtr<ComputePipelineStateImpl> currentPipeline;
+ RefPtr<RootShaderObjectImpl> currentRootObject;
+ RefPtr<DeviceImpl> renderer;
+ CUstream stream;
+ Desc m_desc;
+
+ void init(DeviceImpl* inRenderer);
+ ~CommandQueueImpl();
+
+ virtual SLANG_NO_THROW const Desc& SLANG_MCALL getDesc() override { return m_desc; }
+
+ virtual SLANG_NO_THROW void SLANG_MCALL executeCommandBuffers(
+ GfxCount count, ICommandBuffer* const* commandBuffers, IFence* fence, uint64_t valueToSignal) override;
+
+ virtual SLANG_NO_THROW void SLANG_MCALL waitOnHost() override;
+
+ virtual SLANG_NO_THROW Result SLANG_MCALL waitForFenceValuesOnDevice(
+ GfxCount fenceCount, IFence** fences, uint64_t* waitValues) override;
+
+ virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle(InteropHandle* outHandle) override;
+
+ void setPipelineState(IPipelineState* state);
+
+ Result bindRootShaderObject(IShaderObject* object);
+
+ void dispatchCompute(int x, int y, int z);
+
+ void copyBuffer(
+ IBufferResource* dst,
+ size_t dstOffset,
+ IBufferResource* src,
+ size_t srcOffset,
+ size_t size);
+
+ void uploadBufferData(IBufferResource* dst, size_t offset, size_t size, void* data);
+
+ void writeTimestamp(IQueryPool* pool, SlangInt index);
+
+ void execute(CommandBufferImpl* commandBuffer);
+};
+
+} // namespace cuda
+#endif
+} // namespace gfx