yum-mirror/slang
Making it easier to work with shaders
git clone https://git.yummers.dev/yum-mirror/slang
f65d756bf
master
1// cuda-command-queue.h 2#pragma once 3#include "cuda-base.h" 4#include "cuda-device.h" 5#include "cuda-helper-functions.h" 6#include "cuda-pipeline-state.h" 7#include "cuda-shader-object.h" 8 9namespace gfx 10{ 11#ifdef GFX_ENABLE_CUDA 12using namespace Slang ; 13 14namespace cuda 15{ 16 17class CommandQueueImpl :public ICommandQueue ,public ComObject 18{ 19public : 20SLANG_COM_OBJECT_IUNKNOWN_ALL 21ICommandQueue * getInterface (const Guid & guid ); 22 23RefPtr < ComputePipelineStateImpl > currentPipeline ; 24RefPtr < RootShaderObjectImpl > currentRootObject ; 25RefPtr < DeviceImpl > renderer ; 26CUstream stream ; 27Desc m_desc ; 28 29void init (DeviceImpl * inRenderer ); 30 ~CommandQueueImpl (); 31 32virtual SLANG_NO_THROW const Desc & SLANG_MCALL getDesc ()override {return m_desc ; } 33 34virtual SLANG_NO_THROW void SLANG_MCALL executeCommandBuffers ( 35GfxCount count , 36ICommandBuffer * const * commandBuffers , 37IFence * fence , 38uint64_t valueToSignal )override ; 39 40virtual SLANG_NO_THROW void SLANG_MCALL waitOnHost ()override ; 41 42virtual SLANG_NO_THROW Result SLANG_MCALL 43waitForFenceValuesOnDevice ( GfxCount fenceCount, IFence ** fences, uint64_t * waitValues) override; 44 45virtual SLANG_NO_THROW Result SLANG_MCALL getNativeHandle ( InteropHandle * outHandle) override; 46 47void setPipelineState ( IPipelineState * state); 48 49Result bindRootShaderObject ( IShaderObject * object); 50 51void dispatchCompute ( int x, int y, int z); 52 53void copyBuffer ( 54IBufferResource * dst, 55size_t dstOffset, 56IBufferResource * src, 57size_t srcOffset, 58size_t size); 59 60void uploadBufferData ( IBufferResource * dst, size_t offset, size_t size, void * data); 61 62void writeTimestamp ( IQueryPool * pool, SlangInt index); 63 64void execute ( CommandBufferImpl * commandBuffer); 65}; 66 67} // namespace cuda 68#endif 69} // namespace gfx