From 3dfe2108cfab31ba3ee5527e217d0d8e99a51162 Mon Sep 17 00:00:00 2001
From: git perforce import user
Date: Tue, 25 Oct 2016 12:29:14 -0600
Subject: Initial commit: PhysX 3.4.0 Update @ 21294896 APEX 1.4.0 Update @
21275617
[CL 21300167]
---
.../files/PxGpuCopyDescQueue_8h-source.html | 165 +++++++++++++++++++++
1 file changed, 165 insertions(+)
create mode 100644 PhysX_3.4/Documentation/PhysXAPI/files/PxGpuCopyDescQueue_8h-source.html
(limited to 'PhysX_3.4/Documentation/PhysXAPI/files/PxGpuCopyDescQueue_8h-source.html')
diff --git a/PhysX_3.4/Documentation/PhysXAPI/files/PxGpuCopyDescQueue_8h-source.html b/PhysX_3.4/Documentation/PhysXAPI/files/PxGpuCopyDescQueue_8h-source.html
new file mode 100644
index 00000000..79a68902
--- /dev/null
+++ b/PhysX_3.4/Documentation/PhysXAPI/files/PxGpuCopyDescQueue_8h-source.html
@@ -0,0 +1,165 @@
+
+
+ PxGpuCopyDescQueue.h
Go to the documentation of this file.
00001 // This code contains NVIDIA Confidential Information and is disclosed to you +00002 // under a form of NVIDIA software license agreement provided separately to you. +00003 // +00004 // Notice +00005 // NVIDIA Corporation and its licensors retain all intellectual property and +00006 // proprietary rights in and to this software and related documentation and +00007 // any modifications thereto. Any use, reproduction, disclosure, or +00008 // distribution of this software and related documentation without an express +00009 // license agreement from NVIDIA Corporation is strictly prohibited. +00010 // +00011 // ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES +00012 // NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO +00013 // THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT, +00014 // MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE. +00015 // +00016 // Information and code furnished is believed to be accurate and reliable. +00017 // However, NVIDIA Corporation assumes no responsibility for the consequences of use of such +00018 // information or for any infringement of patents or other rights of third parties that may +00019 // result from its use. No license is granted by implication or otherwise under any patent +00020 // or patent rights of NVIDIA Corporation. Details are subject to change without notice. +00021 // This code supersedes and replaces all information previously supplied. +00022 // NVIDIA Corporation products are not authorized for use as critical +00023 // components in life support devices or systems without express written approval of +00024 // NVIDIA Corporation. +00025 // +00026 // Copyright (c) 2008-2016 NVIDIA Corporation. All rights reserved. +00027 +00028 #ifndef PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H +00029 #define PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H +00030 +00031 #include "foundation/PxPreprocessor.h" +00032 +00033 #if PX_SUPPORT_GPU_PHYSX +00034 +00035 #include "foundation/PxAssert.h" +00036 #include "task/PxTaskDefine.h" +00037 #include "task/PxGpuDispatcher.h" +00038 #include "cudamanager/PxGpuCopyDesc.h" +00039 #include "cudamanager/PxCudaContextManager.h" +00040 +00041 /* forward decl to avoid including <cuda.h> */ +00042 typedef struct CUstream_st* CUstream; +00043 +00044 namespace physx +00045 { +00046 +00047 PX_PUSH_PACK_DEFAULT +00048 +00050 class PxGpuCopyDescQueue +00051 { +00052 public: +00054 PxGpuCopyDescQueue(PxGpuDispatcher& d) +00055 : mDispatcher(d) +00056 , mBuffer(0) +00057 , mStream(0) +00058 , mReserved(0) +00059 , mOccupancy(0) +00060 , mFlushed(0) +00061 { +00062 } +00063 +00065 ~PxGpuCopyDescQueue() +00066 { +00067 if (mBuffer) +00068 { +00069 mDispatcher.getCudaContextManager()->getMemoryManager()->free(PxCudaBufferMemorySpace::T_PINNED_HOST, (size_t) mBuffer); +00070 } +00071 } +00072 +00078 void reset(CUstream stream, uint32_t reserveSize) +00079 { +00080 if (reserveSize > mReserved) +00081 { +00082 if (mBuffer) +00083 { +00084 mDispatcher.getCudaContextManager()->getMemoryManager()->free( +00085 PxCudaBufferMemorySpace::T_PINNED_HOST, +00086 (size_t) mBuffer); +00087 mReserved = 0; +00088 } +00089 mBuffer = (PxGpuCopyDesc*) mDispatcher.getCudaContextManager()->getMemoryManager()->alloc( +00090 PxCudaBufferMemorySpace::T_PINNED_HOST, +00091 reserveSize * sizeof(PxGpuCopyDesc), +00092 PX_ALLOC_INFO("PxGpuCopyDescQueue", GPU_UTIL)); +00093 if (mBuffer) +00094 { +00095 mReserved = reserveSize; +00096 } +00097 } +00098 +00099 mOccupancy = 0; +00100 mFlushed = 0; +00101 mStream = stream; +00102 } +00103 +00105 void enqueue(PxGpuCopyDesc& desc) +00106 { +00107 PX_ASSERT(desc.isValid()); +00108 if (desc.bytes == 0) +00109 { +00110 return; +00111 } +00112 +00113 if (mOccupancy < mReserved) +00114 { +00115 mBuffer[ mOccupancy++ ] = desc; +00116 } +00117 else +00118 { +00119 mDispatcher.launchCopyKernel(&desc, 1, mStream); +00120 } +00121 } +00122 +00124 void flushEnqueued() +00125 { +00126 if (mOccupancy > mFlushed) +00127 { +00128 mDispatcher.launchCopyKernel(mBuffer + mFlushed, mOccupancy - mFlushed, mStream); +00129 mFlushed = mOccupancy; +00130 } +00131 } +00132 +00133 private: +00134 PxGpuDispatcher& mDispatcher; +00135 PxGpuCopyDesc* mBuffer; +00136 CUstream mStream; +00137 uint32_t mReserved; +00138 uint32_t mOccupancy; +00139 uint32_t mFlushed; +00140 +00141 void operator=(const PxGpuCopyDescQueue&); // prevent a warning... +00142 }; +00143 +00144 PX_POP_PACK +00145 +00146 } // end physx namespace +00147 +00148 #endif // PX_SUPPORT_GPU_PHYSX +00149 #endif // PXCUDACONTEXTMANAGER_PXGPUCOPYDESCQUEUE_H +