internal new void CheckError(RTPresult result) { if (result != RTPresult.RTP_SUCCESS) { PrimeApi.rtpGetErrorString(result, out var Errormessage); throw new OptixException($"Optix context error : {Marshal.PtrToStringAnsi(Errormessage)}"); } }
private void Destroy() { if (InternalPtr != IntPtr.Zero) { CheckError(PrimeApi.rtpContextDestroy(InternalPtr)); InternalPtr = IntPtr.Zero; } }
public void Unlock() { if (_fmt.Type == RTPBufferType.CudaLinear) { return; } CheckError(PrimeApi.rtpHostBufferUnlock(InternalPtr)); }
public void Lock() { if (_fmt.Type == RTPBufferType.CudaLinear) { return; } CheckError(PrimeApi.rtpHostBufferLock(InternalPtr, (ulong)size)); }
internal void CheckError(RTPresult result) { if (result != RTPresult.RTP_SUCCESS) { PrimeApi.rtpGetErrorString(result, out var message); throw new OptixException($"Optix context error : {message}"); } }
private void Destroy() { foreach (var disposable in _buffers) { disposable.Dispose(); } _buffers.Clear(); if (InternalPtr != IntPtr.Zero) { CheckError(PrimeApi.rtpContextDestroy(InternalPtr)); InternalPtr = IntPtr.Zero; } }
public override void Destroy() { if (_fmt.Type == RTPBufferType.CudaLinear) { //CudaDriverApi.CudaCall(CudaDriverApi.cuMemFree(_dataPointer)); CudaRunTimeApi.CudaCall(CudaRunTimeApi.cudaFree(_dataPointer)); } else { GC.RemoveMemoryPressure(size); Marshal.FreeHGlobal(_dataPointer); } CheckError(PrimeApi.rtpBufferDescDestroy(InternalPtr)); }
internal void CheckError(RTPresult result) { if (result != RTPresult.RTP_SUCCESS) { try { PrimeApi.rtpContextGetLastErrorString(InternalPtr, out var Errormessage); //PrimeApi.rtpGetErrorString(result, out var message); throw new OptixException($"Optix context error : {Errormessage}"); } catch (Exception ex) { Console.WriteLine($"Result {result} -Error getting error from Optix - " + ex); } } }
public void SetStride(uint bytes) { CheckError(PrimeApi.rtpBufferDescSetStride(InternalPtr, bytes)); }
public override void Destroy() { CheckError(PrimeApi.rtpBufferDescDestroy(InternalPtr)); }
public void SetRays(PrimeBuffer rays) { CheckError(PrimeApi.rtpQuerySetRays(InternalPtr, rays.InternalPtr)); }
public PrimeContext() { CheckError(PrimeApi.rtpContextCreate(RTPcontexttype.RTP_CONTEXT_TYPE_CUDA, out InternalPtr)); }
public void Finish() { CheckError(PrimeApi.rtpModelFinish(InternalPtr)); }
internal void Update(RTPmodelhint hints) { CheckError(PrimeApi.rtpModelUpdate(InternalPtr, (uint)hints)); }
public void SetTriangles(PrimeBuffer indices, PrimeBuffer vertices) { CheckError(PrimeApi.rtpModelSetTriangles(InternalPtr, indices?.InternalPtr ?? IntPtr.Zero, vertices.InternalPtr)); }
public void SetCudaStream(IntPtr cudaStream) { CheckError(PrimeApi.rtpQuerySetCudaStream(InternalPtr, cudaStream)); }
public void SetRange(ulong begin, ulong end) { CheckError(PrimeApi.rtpBufferDescSetRange(InternalPtr, begin, end)); }
public void SetHits(PrimeBuffer hits) { CheckError(PrimeApi.rtpQuerySetHits(InternalPtr, hits.InternalPtr)); }
public override void Destroy() { CheckError(PrimeApi.rtpModelDestroy(InternalPtr)); }
public PrimeQuery(PrimeContext context, PrimeModel model, QueryType queryType) : base(context) { _queryType = queryType; CheckError(PrimeApi.rtpQueryCreate(model.InternalPtr, (RTPquerytype)queryType, out InternalPtr)); }
public void Finish() { CheckError(PrimeApi.rtpQueryFinish(InternalPtr)); }
public PrimeBuffer(PrimeContext context, PrimeBufferDesc fmt, IntPtr data) : base(context) { _dataPointer = data; CheckError(PrimeApi.rtpBufferDescCreate(context.InternalPtr, (RTPbufferformat)fmt.Format, (RTPbuffertype)fmt.Type, data, out InternalPtr)); }
public void SetInstances(PrimeBuffer instances, PrimeBuffer transforms) { CheckError(PrimeApi.rtpModelSetInstances(InternalPtr, instances.InternalPtr, transforms.InternalPtr)); }
public void Update(uint hints) { CheckError(PrimeApi.rtpModelUpdate(InternalPtr, hints)); }
public void Execute(uint hints) { CheckError(PrimeApi.rtpQueryExecute(InternalPtr, hints)); }
public PrimeModel(PrimeContext context) : base(context) { CheckError(PrimeApi.rtpModelCreate(context.InternalPtr, out InternalPtr)); }
public PrimeContext(bool useCuda = false) { _buffers = new List <IDisposable>(); CheckError(PrimeApi.rtpContextCreate(useCuda ? RTPcontexttype.RTP_CONTEXT_TYPE_CUDA : RTPcontexttype.RTP_CONTEXT_TYPE_CPU, out InternalPtr)); CheckError(PrimeApi.rtpContextSetCudaDeviceNumbers(InternalPtr, 0, 0)); }