aboutsummaryrefslogtreecommitdiff
path: root/include/NvFlowContext.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/NvFlowContext.h')
-rw-r--r--include/NvFlowContext.h138
1 files changed, 138 insertions, 0 deletions
diff --git a/include/NvFlowContext.h b/include/NvFlowContext.h
new file mode 100644
index 0000000..eb80d78
--- /dev/null
+++ b/include/NvFlowContext.h
@@ -0,0 +1,138 @@
+/*
+ * 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
+
+#include "NvFlowTypes.h"
+
+#define NV_FLOW_VERSION 0x00010000
+
+//! NvFlowContext: A framework for fluid simulation
+struct NvFlowContext;
+
+//! API type
+enum NvFlowContextAPI
+{
+ eNvFlowContextD3D11 = 1,
+ eNvFlowContextD3D12 = 2
+};
+
+//! import interop buffers
+struct NvFlowDepthStencilView;
+struct NvFlowRenderTargetView;
+
+//! export interop buffers
+struct NvFlowResource;
+struct NvFlowResourceRW;
+struct NvFlowBuffer;
+struct NvFlowTexture3D;
+
+// --------------------------- NvFlowContext -------------------------------
+///@defgroup NvFlowContext
+///@{
+
+/**
+ * Get the API type of the current context
+ *
+ * @param[in] context The Flow context to get the type of.
+ *
+ * @return context The Flow context to be released.
+ */
+NV_FLOW_API NvFlowContextAPI NvFlowContextGetContextType(NvFlowContext* context);
+
+/**
+ * Push a request for the Flow context to request a flush to queue
+ *
+ * @param[in] context The Flow context to make the request on.
+ */
+NV_FLOW_API void NvFlowContextFlushRequestPush(NvFlowContext* context);
+
+/**
+ * Pop any pending requests for the Flow context to flush to queue, resets the request state
+ *
+ * @param[in] context The Flow context to check for requests on.
+ *
+ * @return true if a flush is requested
+ */
+NV_FLOW_API bool NvFlowContextFlushRequestPop(NvFlowContext* context);
+
+/**
+ * Process pending GPU wait on fence, on deviceQueue associated with this context
+ *
+ * @param[in] context The Flow context to submit fence waits on.
+ */
+NV_FLOW_API void NvFlowContextProcessFenceWait(NvFlowContext* context);
+
+/**
+ * Process pending GPU fence signals, on deviceQueue associated with this context
+ *
+ * @param[in] context The Flow context to submit fence signals on.
+ */
+NV_FLOW_API void NvFlowContextProcessFenceSignal(NvFlowContext* context);
+
+/**
+ * Releases a Flow context.
+ *
+ * @param[in] context The Flow context to be released.
+ */
+NV_FLOW_API void NvFlowReleaseContext(NvFlowContext* context);
+
+/**
+ * Releases a Flow depth stencil view.
+ *
+ * @param[in] view The Flow depth stencil view to be released.
+ */
+NV_FLOW_API void NvFlowReleaseDepthStencilView(NvFlowDepthStencilView* view);
+
+/**
+ * Releases a Flow render target view.
+ *
+ * @param[in] view The Flow render target view to be released.
+ */
+NV_FLOW_API void NvFlowReleaseRenderTargetView(NvFlowRenderTargetView* view);
+
+/**
+ * Pushes graphics/compute pipeline state for later restoration by NvFlowContextPop.
+ *
+ * @param[in] context The Flow context to push.
+ */
+NV_FLOW_API void NvFlowContextPush(NvFlowContext* context);
+
+/**
+ * Restores graphics/compute pipeline state pushed by NvFlowContextPush.
+ *
+ * @param[in] context The Flow context to restore.
+ */
+NV_FLOW_API void NvFlowContextPop(NvFlowContext* context);
+
+/**
+ * An optional callback to allow the application to control how Flow allocates CPU memory.
+ *
+ * @param[in] malloc The allocation function for Flow to use.
+ */
+NV_FLOW_API void NvFlowSetMallocFunc(void*(*malloc)(size_t size));
+
+/**
+ * An optional callback to allow the application to control how Flow releases CPU memory.
+ *
+ * @param[in] free The free function for Flow to use.
+ */
+NV_FLOW_API void NvFlowSetFreeFunc(void(*free)(void* ptr));
+
+/**
+ * Should be called before DLL unload, to ensure complete cleanup.
+ *
+ * @param[in] timeoutMS Wait timeout, in milliseconds
+ *
+ * @return The current number of active deferred release units.
+ */
+NV_FLOW_API NvFlowUint NvFlowDeferredRelease(float timeoutMS);
+
+///@} \ No newline at end of file