From ce6e946f6f4882aba8a62392ae791c948633e2e3 Mon Sep 17 00:00:00 2001 From: lucy96chen <47800040+lucy96chen@users.noreply.github.com> Date: Mon, 25 Jul 2022 13:36:43 -0700 Subject: 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 --- tools/gfx/cuda/cuda-command-queue.h | 69 +++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 tools/gfx/cuda/cuda-command-queue.h (limited to 'tools/gfx/cuda/cuda-command-queue.h') 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 currentPipeline; + RefPtr currentRootObject; + RefPtr 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 -- cgit v1.2.3