00001 /* 00002 * Copyright (c) 2014-2017, NVIDIA CORPORATION. All rights reserved. 00003 * 00004 * NVIDIA CORPORATION and its licensors retain all intellectual property 00005 * and proprietary rights in and to this software, related documentation 00006 * and any modifications thereto. Any use, reproduction, disclosure or 00007 * distribution of this software and related documentation without an express 00008 * license agreement from NVIDIA CORPORATION is strictly prohibited. 00009 */ 00010 00011 #pragma once 00012 00013 #include "NvFlowTypes.h" 00014 00015 #define NV_FLOW_VERSION 0x00010000 00016 00018 struct NvFlowContext; 00019 00021 enum NvFlowContextAPI 00022 { 00023 eNvFlowContextD3D11 = 1, 00024 eNvFlowContextD3D12 = 2 00025 }; 00026 00028 struct NvFlowDepthStencilView; 00029 struct NvFlowRenderTargetView; 00030 00032 struct NvFlowResource; 00033 struct NvFlowResourceRW; 00034 struct NvFlowBuffer; 00035 struct NvFlowTexture3D; 00036 00037 // --------------------------- NvFlowContext ------------------------------- 00040 00048 NV_FLOW_API NvFlowContextAPI NvFlowContextGetContextType(NvFlowContext* context); 00049 00055 NV_FLOW_API void NvFlowContextFlushRequestPush(NvFlowContext* context); 00056 00064 NV_FLOW_API bool NvFlowContextFlushRequestPop(NvFlowContext* context); 00065 00071 NV_FLOW_API void NvFlowContextProcessFenceWait(NvFlowContext* context); 00072 00078 NV_FLOW_API void NvFlowContextProcessFenceSignal(NvFlowContext* context); 00079 00085 NV_FLOW_API void NvFlowReleaseContext(NvFlowContext* context); 00086 00092 NV_FLOW_API void NvFlowReleaseDepthStencilView(NvFlowDepthStencilView* view); 00093 00099 NV_FLOW_API void NvFlowReleaseRenderTargetView(NvFlowRenderTargetView* view); 00100 00106 NV_FLOW_API void NvFlowContextPush(NvFlowContext* context); 00107 00113 NV_FLOW_API void NvFlowContextPop(NvFlowContext* context); 00114 00120 NV_FLOW_API void NvFlowSetMallocFunc(void*(*malloc)(size_t size)); 00121 00127 NV_FLOW_API void NvFlowSetFreeFunc(void(*free)(void* ptr)); 00128 00136 NV_FLOW_API NvFlowUint NvFlowDeferredRelease(float timeoutMS); 00137