aboutsummaryrefslogtreecommitdiff
path: root/demo/DemoApp/computeContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'demo/DemoApp/computeContext.h')
-rw-r--r--demo/DemoApp/computeContext.h103
1 files changed, 103 insertions, 0 deletions
diff --git a/demo/DemoApp/computeContext.h b/demo/DemoApp/computeContext.h
new file mode 100644
index 0000000..bd55f13
--- /dev/null
+++ b/demo/DemoApp/computeContext.h
@@ -0,0 +1,103 @@
+/*
+* Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved.
+*
+* NVIDIA CORPORATION and its licensors retain all intellectual property
+* and proprietary rights in and to this software, related documentation
+* and any modifications thereto. Any use, reproduction, disclosure or
+* distribution of this software and related documentation without an express
+* license agreement from NVIDIA CORPORATION is strictly prohibited.
+*/
+
+#pragma once
+
+#define COMPUTE_API extern "C" __declspec(dllexport)
+
+struct ComputeContextDesc;
+struct ComputeContext;
+
+struct ComputeShaderDesc
+{
+ const void* cs;
+ unsigned long long cs_length;
+};
+struct ComputeShader;
+
+struct ComputeConstantBufferDesc
+{
+ unsigned int sizeInBytes;
+};
+struct ComputeConstantBuffer;
+
+struct ComputeResourceDesc;
+struct ComputeResource;
+
+struct ComputeResourceRWDesc;
+struct ComputeResourceRW;
+
+static const unsigned int ComputeDispatchMaxResources = 16u;
+static const unsigned int ComputeDispatchMaxResourcesRW = 8u;
+
+struct ComputeDispatchParams
+{
+ ComputeShader* shader;
+ unsigned int gridDim[3u];
+ ComputeConstantBuffer* constantBuffer;
+ ComputeResource* resources[ComputeDispatchMaxResources];
+ ComputeResourceRW* resourcesRW[ComputeDispatchMaxResourcesRW];
+};
+
+COMPUTE_API ComputeContext* ComputeContextCreate(ComputeContextDesc* desc);
+
+COMPUTE_API void ComputeContextUpdate(ComputeContext* context, ComputeContextDesc* desc);
+
+COMPUTE_API void ComputeContextRelease(ComputeContext* context);
+
+
+COMPUTE_API ComputeShader* ComputeShaderCreate(ComputeContext* context, const ComputeShaderDesc* desc);
+
+COMPUTE_API void ComputeShaderRelease(ComputeShader* shader);
+
+
+COMPUTE_API ComputeConstantBuffer* ComputeConstantBufferCreate(ComputeContext* context, const ComputeConstantBufferDesc* desc);
+
+COMPUTE_API void ComputeConstantBufferRelease(ComputeConstantBuffer* constantBuffer);
+
+COMPUTE_API void* ComputeConstantBufferMap(ComputeContext* context, ComputeConstantBuffer* constantBuffer);
+
+COMPUTE_API void ComputeConstantBufferUnmap(ComputeContext* context, ComputeConstantBuffer* constantBuffer);
+
+
+COMPUTE_API ComputeResource* ComputeResourceCreate(ComputeContext* context, const ComputeResourceDesc* desc);
+
+COMPUTE_API void ComputeResourceUpdate(ComputeContext* context, ComputeResource* resource, const ComputeResourceDesc* desc);
+
+COMPUTE_API void ComputeResourceRelease(ComputeResource* resource);
+
+
+COMPUTE_API ComputeResourceRW* ComputeResourceRWCreate(ComputeContext* context, const ComputeResourceRWDesc* desc);
+
+COMPUTE_API void ComputeResourceRWUpdate(ComputeContext* context, ComputeResourceRW* resourceRW, const ComputeResourceRWDesc* desc);
+
+COMPUTE_API void ComputeResourceRWRelease(ComputeResourceRW* resourceRW);
+
+COMPUTE_API ComputeResource* ComputeResourceRWGetResource(ComputeResourceRW* resourceRW);
+
+
+COMPUTE_API void ComputeContextDispatch(ComputeContext* context, const ComputeDispatchParams* params);
+
+// interoperation with NvFlow
+struct NvFlowContext;
+struct NvFlowResource;
+struct NvFlowResourceRW;
+
+COMPUTE_API ComputeContext* ComputeContextNvFlowContextCreate(NvFlowContext* flowContext);
+
+COMPUTE_API void ComputeContextNvFlowContextUpdate(ComputeContext* computeContext, NvFlowContext* flowContext);
+
+COMPUTE_API ComputeResource* ComputeResourceNvFlowCreate(ComputeContext* context, NvFlowContext* flowContext, NvFlowResource* flowResource);
+
+COMPUTE_API void ComputeResourceNvFlowUpdate(ComputeContext* context, ComputeResource* resource, NvFlowContext* flowContext, NvFlowResource* flowResource);
+
+COMPUTE_API ComputeResourceRW* ComputeResourceRWNvFlowCreate(ComputeContext* context, NvFlowContext* flowContext, NvFlowResourceRW* flowResourceRW);
+
+COMPUTE_API void ComputeResourceRWNvFlowUpdate(ComputeContext* context, ComputeResourceRW* resourceRW, NvFlowContext* flowContext, NvFlowResourceRW* flowResourceRW); \ No newline at end of file