aboutsummaryrefslogtreecommitdiff
path: root/PxShared/src/pvd
diff options
context:
space:
mode:
Diffstat (limited to 'PxShared/src/pvd')
-rw-r--r--PxShared/src/pvd/include/PsPvd.h85
-rw-r--r--PxShared/src/pvd/include/PxProfileAllocatorWrapper.h231
-rw-r--r--PxShared/src/pvd/include/PxPvdClient.h77
-rw-r--r--PxShared/src/pvd/include/PxPvdDataStream.h272
-rw-r--r--PxShared/src/pvd/include/PxPvdDataStreamHelpers.h120
-rw-r--r--PxShared/src/pvd/include/PxPvdErrorCodes.h62
-rw-r--r--PxShared/src/pvd/include/PxPvdObjectModelBaseTypes.h428
-rw-r--r--PxShared/src/pvd/include/PxPvdRenderBuffer.h140
-rw-r--r--PxShared/src/pvd/include/PxPvdUserRenderer.h107
-rw-r--r--PxShared/src/pvd/src/PxProfileBase.h35
-rw-r--r--PxShared/src/pvd/src/PxProfileCompileTimeEventFilter.h75
-rw-r--r--PxShared/src/pvd/src/PxProfileContextProvider.h98
-rw-r--r--PxShared/src/pvd/src/PxProfileContextProviderImpl.h52
-rw-r--r--PxShared/src/pvd/src/PxProfileDataBuffer.h167
-rw-r--r--PxShared/src/pvd/src/PxProfileDataParsing.h218
-rw-r--r--PxShared/src/pvd/src/PxProfileEventBuffer.h270
-rw-r--r--PxShared/src/pvd/src/PxProfileEventBufferAtomic.h320
-rw-r--r--PxShared/src/pvd/src/PxProfileEventBufferClient.h81
-rw-r--r--PxShared/src/pvd/src/PxProfileEventBufferClientManager.h94
-rw-r--r--PxShared/src/pvd/src/PxProfileEventFilter.h93
-rw-r--r--PxShared/src/pvd/src/PxProfileEventHandler.h99
-rw-r--r--PxShared/src/pvd/src/PxProfileEventId.h80
-rw-r--r--PxShared/src/pvd/src/PxProfileEventImpl.cpp230
-rw-r--r--PxShared/src/pvd/src/PxProfileEventMutex.h63
-rw-r--r--PxShared/src/pvd/src/PxProfileEventNames.h90
-rw-r--r--PxShared/src/pvd/src/PxProfileEventParser.h193
-rw-r--r--PxShared/src/pvd/src/PxProfileEventSender.h129
-rw-r--r--PxShared/src/pvd/src/PxProfileEventSerialization.h258
-rw-r--r--PxShared/src/pvd/src/PxProfileEventSystem.h56
-rw-r--r--PxShared/src/pvd/src/PxProfileEvents.h706
-rw-r--r--PxShared/src/pvd/src/PxProfileMemory.h99
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryBuffer.h193
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventBuffer.h156
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventParser.h185
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventRecorder.h147
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventReflexiveWriter.h71
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventSummarizer.h304
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEventTypes.h90
-rw-r--r--PxShared/src/pvd/src/PxProfileMemoryEvents.h411
-rw-r--r--PxShared/src/pvd/src/PxProfileScopedEvent.h150
-rw-r--r--PxShared/src/pvd/src/PxProfileScopedMutexLock.h64
-rw-r--r--PxShared/src/pvd/src/PxProfileZone.h142
-rw-r--r--PxShared/src/pvd/src/PxProfileZoneImpl.h318
-rw-r--r--PxShared/src/pvd/src/PxProfileZoneManager.h155
-rw-r--r--PxShared/src/pvd/src/PxProfileZoneManagerImpl.h174
-rw-r--r--PxShared/src/pvd/src/PxPvd.cpp56
-rw-r--r--PxShared/src/pvd/src/PxPvdBits.h173
-rw-r--r--PxShared/src/pvd/src/PxPvdByteStreams.h155
-rw-r--r--PxShared/src/pvd/src/PxPvdCommStreamEventSink.h55
-rw-r--r--PxShared/src/pvd/src/PxPvdCommStreamEvents.h987
-rw-r--r--PxShared/src/pvd/src/PxPvdCommStreamSDKEventTypes.h32
-rw-r--r--PxShared/src/pvd/src/PxPvdCommStreamTypes.h262
-rw-r--r--PxShared/src/pvd/src/PxPvdDataStream.cpp870
-rw-r--r--PxShared/src/pvd/src/PxPvdDefaultFileTransport.cpp123
-rw-r--r--PxShared/src/pvd/src/PxPvdDefaultFileTransport.h77
-rw-r--r--PxShared/src/pvd/src/PxPvdDefaultSocketTransport.cpp136
-rw-r--r--PxShared/src/pvd/src/PxPvdDefaultSocketTransport.h79
-rw-r--r--PxShared/src/pvd/src/PxPvdFoundation.h504
-rw-r--r--PxShared/src/pvd/src/PxPvdImpl.cpp405
-rw-r--r--PxShared/src/pvd/src/PxPvdImpl.h221
-rw-r--r--PxShared/src/pvd/src/PxPvdInternalByteStreams.h147
-rw-r--r--PxShared/src/pvd/src/PxPvdMarshalling.h220
-rw-r--r--PxShared/src/pvd/src/PxPvdMemClient.cpp134
-rw-r--r--PxShared/src/pvd/src/PxPvdMemClient.h85
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectModel.h437
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectModelInternalTypeDefs.h32
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectModelInternalTypes.h171
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectModelMetaData.cpp1515
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectModelMetaData.h495
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectRegistrar.cpp80
-rw-r--r--PxShared/src/pvd/src/PxPvdObjectRegistrar.h71
-rw-r--r--PxShared/src/pvd/src/PxPvdProfileZoneClient.cpp173
-rw-r--r--PxShared/src/pvd/src/PxPvdProfileZoneClient.h77
-rw-r--r--PxShared/src/pvd/src/PxPvdUserRenderImpl.h411
-rw-r--r--PxShared/src/pvd/src/PxPvdUserRenderTypes.h46
-rw-r--r--PxShared/src/pvd/src/PxPvdUserRenderer.cpp460
-rw-r--r--PxShared/src/pvd/src/windows/PxWindowsPvdDelayLoadHook.cpp82
77 files changed, 0 insertions, 16359 deletions
diff --git a/PxShared/src/pvd/include/PsPvd.h b/PxShared/src/pvd/include/PsPvd.h
deleted file mode 100644
index 1f0ae79..0000000
--- a/PxShared/src/pvd/include/PsPvd.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PSPVD_H
-#define PXPVDSDK_PSPVD_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "pvd/PxPvd.h"
-#include "PsBroadcast.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-#endif
-
-class PxPvdTransport;
-
-#if !PX_DOXYGEN
-namespace pvdsdk
-{
-#endif
-
-class PvdDataStream;
-class PvdClient;
-class PvdOMMetaDataProvider;
-
-// PsPvd is used for advanced user, it support custom pvd client API
-class PsPvd : public physx::PxPvd, public shdfnd::AllocationListener
-{
- public:
- virtual void addClient(PvdClient* client) = 0;
- virtual void removeClient(PvdClient* client) = 0;
-
- virtual bool registerObject(const void* inItem) = 0;
- virtual bool unRegisterObject(const void* inItem) = 0;
-
- //AllocationListener
- void onAllocation(size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory) = 0;
- void onDeallocation(void* addr) = 0;
-
- virtual PvdOMMetaDataProvider& getMetaDataProvider() = 0;
-
- virtual uint64_t getNextStreamId() = 0;
- // Call to flush events to PVD
- virtual void flush() = 0;
-
-};
-
-PX_PVDSDK_API void PX_CALL_CONV SetPvdAllocatorCallback(PxAllocatorCallback* inAllocatorCallback);
-
-#if !PX_DOXYGEN
-} // namespace pvdsdk
-} // namespace physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PSPVD_H
diff --git a/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h b/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h
deleted file mode 100644
index abac561..0000000
--- a/PxShared/src/pvd/include/PxProfileAllocatorWrapper.h
+++ /dev/null
@@ -1,231 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEALLOCATORWRAPPER_H
-#define PXPVDSDK_PXPROFILEALLOCATORWRAPPER_H
-
-#include "foundation/PxPreprocessor.h"
-#include "foundation/PxAllocatorCallback.h"
-#include "foundation/PxErrorCallback.h"
-#include "foundation/PxAssert.h"
-
-#include "PsArray.h"
-#include "PsHashMap.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Helper struct to encapsulate the user allocator callback
- Useful for array and hash templates
- */
- struct PxProfileAllocatorWrapper
- {
- PxAllocatorCallback* mUserAllocator;
-
- PxProfileAllocatorWrapper( PxAllocatorCallback& inUserAllocator )
- : mUserAllocator( &inUserAllocator )
- {
- }
-
- PxProfileAllocatorWrapper( PxAllocatorCallback* inUserAllocator )
- : mUserAllocator( inUserAllocator )
- {
- }
-
- PxAllocatorCallback& getAllocator() const
- {
- PX_ASSERT( NULL != mUserAllocator );
- return *mUserAllocator;
- }
- };
-
- /**
- \brief Helper class to encapsulate the reflection allocator
- */
- template <typename T>
- class PxProfileWrapperReflectionAllocator
- {
- static const char* getName()
- {
-#if PX_LINUX || PX_ANDROID || PX_PS4 || PX_IOS || PX_OSX || PX_EMSCRIPTEN || PX_SWITCH
- return __PRETTY_FUNCTION__;
-#else
- return typeid(T).name();
-#endif
- }
- PxProfileAllocatorWrapper* mWrapper;
-
- public:
- PxProfileWrapperReflectionAllocator(PxProfileAllocatorWrapper& inWrapper) : mWrapper( &inWrapper ) {}
- PxProfileWrapperReflectionAllocator( const PxProfileWrapperReflectionAllocator& inOther )
- : mWrapper( inOther.mWrapper )
- {
- }
- PxProfileWrapperReflectionAllocator& operator=( const PxProfileWrapperReflectionAllocator& inOther )
- {
- mWrapper = inOther.mWrapper;
- return *this;
- }
- PxAllocatorCallback& getAllocator() { return mWrapper->getAllocator(); }
- void* allocate(size_t size, const char* filename, int line)
- {
-#if PX_CHECKED // checked and debug builds
- if(!size)
- return 0;
- return getAllocator().allocate(size, getName(), filename, line);
-#else
- return getAllocator().allocate(size, "<no allocation names in this config>", filename, line);
-#endif
- }
- void deallocate(void* ptr)
- {
- if(ptr)
- getAllocator().deallocate(ptr);
- }
- };
-
- /**
- \brief Helper class to encapsulate the named allocator
- */
- struct PxProfileWrapperNamedAllocator
- {
- PxProfileAllocatorWrapper* mWrapper;
- const char* mAllocationName;
- PxProfileWrapperNamedAllocator(PxProfileAllocatorWrapper& inWrapper, const char* inAllocationName)
- : mWrapper( &inWrapper )
- , mAllocationName( inAllocationName )
- {}
- PxProfileWrapperNamedAllocator( const PxProfileWrapperNamedAllocator& inOther )
- : mWrapper( inOther.mWrapper )
- , mAllocationName( inOther.mAllocationName )
- {
- }
- PxProfileWrapperNamedAllocator& operator=( const PxProfileWrapperNamedAllocator& inOther )
- {
- mWrapper = inOther.mWrapper;
- mAllocationName = inOther.mAllocationName;
- return *this;
- }
- PxAllocatorCallback& getAllocator() { return mWrapper->getAllocator(); }
- void* allocate(size_t size, const char* filename, int line)
- {
- if(!size)
- return 0;
- return getAllocator().allocate(size, mAllocationName, filename, line);
- }
- void deallocate(void* ptr)
- {
- if(ptr)
- getAllocator().deallocate(ptr);
- }
- };
-
- /**
- \brief Helper struct to encapsulate the array
- */
- template<class T>
- struct PxProfileArray : public shdfnd::Array<T, PxProfileWrapperReflectionAllocator<T> >
- {
- typedef PxProfileWrapperReflectionAllocator<T> TAllocatorType;
-
- PxProfileArray( PxProfileAllocatorWrapper& inWrapper )
- : shdfnd::Array<T, TAllocatorType >( TAllocatorType( inWrapper ) )
- {
- }
-
- PxProfileArray( const PxProfileArray< T >& inOther )
- : shdfnd::Array<T, TAllocatorType >( inOther, inOther )
- {
- }
- };
-
- /**
- \brief Helper struct to encapsulate the array
- */
- template<typename TKeyType, typename TValueType, typename THashType=shdfnd::Hash<TKeyType> >
- struct PxProfileHashMap : public shdfnd::HashMap<TKeyType, TValueType, THashType, PxProfileWrapperReflectionAllocator< TValueType > >
- {
- typedef shdfnd::HashMap<TKeyType, TValueType, THashType, PxProfileWrapperReflectionAllocator< TValueType > > THashMapType;
- typedef PxProfileWrapperReflectionAllocator<TValueType> TAllocatorType;
- PxProfileHashMap( PxProfileAllocatorWrapper& inWrapper )
- : THashMapType( TAllocatorType( inWrapper ) )
- {
- }
- };
-
- /**
- \brief Helper function to encapsulate the profile allocation
- */
- template<typename TDataType>
- inline TDataType* PxProfileAllocate( PxAllocatorCallback* inAllocator, const char* file, int inLine )
- {
- PxProfileAllocatorWrapper wrapper( inAllocator );
- typedef PxProfileWrapperReflectionAllocator< TDataType > TAllocator;
- TAllocator theAllocator( wrapper );
- return reinterpret_cast<TDataType*>( theAllocator.allocate( sizeof( TDataType ), file, inLine ) );
- }
-
- /**
- \brief Helper function to encapsulate the profile allocation
- */
- template<typename TDataType>
- inline TDataType* PxProfileAllocate( PxAllocatorCallback& inAllocator, const char* file, int inLine )
- {
- return PxProfileAllocate<TDataType>( &inAllocator, file, inLine );
- }
-
- /**
- \brief Helper function to encapsulate the profile deallocation
- */
- template<typename TDataType>
- inline void PxProfileDeleteAndDeallocate( PxProfileAllocatorWrapper& inAllocator, TDataType* inDType )
- {
- PX_ASSERT(inDType);
- PxAllocatorCallback& allocator( inAllocator.getAllocator() );
- inDType->~TDataType();
- allocator.deallocate( inDType );
- }
-
- /**
- \brief Helper function to encapsulate the profile deallocation
- */
- template<typename TDataType>
- inline void PxProfileDeleteAndDeallocate( PxAllocatorCallback& inAllocator, TDataType* inDType )
- {
- PxProfileAllocatorWrapper wrapper( &inAllocator );
- PxProfileDeleteAndDeallocate( wrapper, inDType );
- }
-
-} }
-
-#define PX_PROFILE_NEW( allocator, dtype ) new (physx::profile::PxProfileAllocate<dtype>( allocator, __FILE__, __LINE__ )) dtype
-#define PX_PROFILE_DELETE( allocator, obj ) physx::profile::PxProfileDeleteAndDeallocate( allocator, obj );
-
-#endif // PXPVDSDK_PXPROFILEALLOCATORWRAPPER_H
diff --git a/PxShared/src/pvd/include/PxPvdClient.h b/PxShared/src/pvd/include/PxPvdClient.h
deleted file mode 100644
index fccf76d..0000000
--- a/PxShared/src/pvd/include/PxPvdClient.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDCLIENT_H
-#define PXPVDSDK_PXPVDCLIENT_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "foundation/PxFlags.h"
-#include "foundation/PxVec3.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-class PvdDataStream;
-class PvdUserRenderer;
-
-/**
-\brief PvdClient is the per-client connection to PVD.
-It provides callback when PVD is connected/disconnted.
-It provides access to the internal object so that advanced users can create extension client.
-*/
-class PvdClient
-{
- public:
- virtual PvdDataStream* getDataStream() = 0;
- virtual PvdUserRenderer* getUserRender() = 0;
-
- virtual bool isConnected() const = 0;
- virtual void onPvdConnected() = 0;
- virtual void onPvdDisconnected() = 0;
- virtual void flush() = 0;
-
- protected:
- virtual ~PvdClient()
- {
- }
-};
-
-#if !PX_DOXYGEN
-} // namespace pvdsdk
-} // namespace physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDCLIENT_H
diff --git a/PxShared/src/pvd/include/PxPvdDataStream.h b/PxShared/src/pvd/include/PxPvdDataStream.h
deleted file mode 100644
index c47ef12..0000000
--- a/PxShared/src/pvd/include/PxPvdDataStream.h
+++ /dev/null
@@ -1,272 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDDATASTREAM_H
-#define PXPVDSDK_PXPVDDATASTREAM_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "pvd/PxPvd.h"
-#include "PxPvdErrorCodes.h"
-#include "PxPvdObjectModelBaseTypes.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-class PvdPropertyDefinitionHelper;
-
-class PvdMetaDataStream
-{
- protected:
- virtual ~PvdMetaDataStream()
- {
- }
-
- public:
- virtual PvdError createClass(const NamespacedName& nm) = 0;
- template <typename TDataType>
- PvdError createClass()
- {
- return createClass(getPvdNamespacedNameForType<TDataType>());
- }
-
- virtual PvdError deriveClass(const NamespacedName& parent, const NamespacedName& child) = 0;
- template <typename TParentType, typename TChildType>
- PvdError deriveClass()
- {
- return deriveClass(getPvdNamespacedNameForType<TParentType>(), getPvdNamespacedNameForType<TChildType>());
- }
-
- virtual bool isClassExist(const NamespacedName& nm) = 0;
- template <typename TDataType>
- bool isClassExist()
- {
- return isClassExist(getPvdNamespacedNameForType<TDataType>());
- }
-
- virtual PvdError createProperty(const NamespacedName& clsName, const char* name, const char* semantic,
- const NamespacedName& dtypeName, PropertyType::Enum propertyType,
- DataRef<NamedValue> values = DataRef<NamedValue>()) = 0;
- template <typename TClsType, typename TDataType>
- PvdError createProperty(String name, String semantic = "", PropertyType::Enum propertyType = PropertyType::Scalar,
- DataRef<NamedValue> values = DataRef<NamedValue>())
- {
- return createProperty(getPvdNamespacedNameForType<TClsType>(), name, semantic,
- getPvdNamespacedNameForType<TDataType>(), propertyType, values);
- }
-
- virtual PvdError createPropertyMessage(const NamespacedName& cls, const NamespacedName& msgName,
- DataRef<PropertyMessageArg> entries, uint32_t messageSizeInBytes) = 0;
-
- template <typename TClsType, typename TMsgType>
- PvdError createPropertyMessage(DataRef<PropertyMessageArg> entries)
- {
- return createPropertyMessage(getPvdNamespacedNameForType<TClsType>(), getPvdNamespacedNameForType<TMsgType>(),
- entries, sizeof(TMsgType));
- }
-};
-
-class PvdInstanceDataStream
-{
- protected:
- virtual ~PvdInstanceDataStream()
- {
- }
-
- public:
- virtual PvdError createInstance(const NamespacedName& cls, const void* instance) = 0;
-
- template <typename TDataType>
- PvdError createInstance(const TDataType* inst)
- {
- return createInstance(getPvdNamespacedNameForType<TDataType>(), inst);
- }
- virtual bool isInstanceValid(const void* instance) = 0;
-
- // If the property will fit or is already completely in memory
- virtual PvdError setPropertyValue(const void* instance, String name, DataRef<const uint8_t> data,
- const NamespacedName& incomingTypeName) = 0;
- template <typename TDataType>
- PvdError setPropertyValue(const void* instance, String name, const TDataType& value)
- {
- const uint8_t* dataStart = reinterpret_cast<const uint8_t*>(&value);
- return setPropertyValue(instance, name, DataRef<const uint8_t>(dataStart, dataStart + sizeof(TDataType)),
- getPvdNamespacedNameForType<TDataType>());
- }
-
- template <typename TDataType>
- PvdError setPropertyValue(const void* instance, String name, const TDataType* value, uint32_t numItems)
- {
- const uint8_t* dataStart = reinterpret_cast<const uint8_t*>(value);
- return setPropertyValue(instance, name,
- DataRef<const uint8_t>(dataStart, dataStart + sizeof(TDataType) * numItems),
- getPvdNamespacedNameForType<TDataType>());
- }
-
- // Else if the property is very large (contact reports) you can send it in chunks.
- virtual PvdError beginSetPropertyValue(const void* instance, String name, const NamespacedName& incomingTypeName) = 0;
-
- template <typename TDataType>
- PvdError beginSetPropertyValue(const void* instance, String name)
- {
- return beginSetPropertyValue(instance, name, getPvdNamespacedNameForType<TDataType>());
- }
- virtual PvdError appendPropertyValueData(DataRef<const uint8_t> data) = 0;
-
- template <typename TDataType>
- PvdError appendPropertyValueData(const TDataType* value, uint32_t numItems)
- {
- const uint8_t* dataStart = reinterpret_cast<const uint8_t*>(value);
- return appendPropertyValueData(DataRef<const uint8_t>(dataStart, dataStart + numItems * sizeof(TDataType)));
- }
-
- virtual PvdError endSetPropertyValue() = 0;
-
- // Set a set of properties to various values on an object.
-
- virtual PvdError setPropertyMessage(const void* instance, const NamespacedName& msgName,
- DataRef<const uint8_t> data) = 0;
-
- template <typename TDataType>
- PvdError setPropertyMessage(const void* instance, const TDataType& value)
- {
- const uint8_t* dataStart = reinterpret_cast<const uint8_t*>(&value);
- return setPropertyMessage(instance, getPvdNamespacedNameForType<TDataType>(),
- DataRef<const uint8_t>(dataStart, sizeof(TDataType)));
- }
- // If you need to send of lot of identical messages, this avoids a hashtable lookup per message.
- virtual PvdError beginPropertyMessageGroup(const NamespacedName& msgName) = 0;
-
- template <typename TDataType>
- PvdError beginPropertyMessageGroup()
- {
- return beginPropertyMessageGroup(getPvdNamespacedNameForType<TDataType>());
- }
- virtual PvdError sendPropertyMessageFromGroup(const void* instance, DataRef<const uint8_t> data) = 0;
-
- template <typename TDataType>
- PvdError sendPropertyMessageFromGroup(const void* instance, const TDataType& value)
- {
- const uint8_t* dataStart = reinterpret_cast<const uint8_t*>(&value);
- return sendPropertyMessageFromGroup(instance, DataRef<const uint8_t>(dataStart, sizeof(TDataType)));
- }
-
- virtual PvdError endPropertyMessageGroup() = 0;
-
- // These functions ensure the target array doesn't contain duplicates
- virtual PvdError pushBackObjectRef(const void* instId, String propName, const void* objRef) = 0;
- virtual PvdError removeObjectRef(const void* instId, String propName, const void* objRef) = 0;
-
- // Instance elimination.
- virtual PvdError destroyInstance(const void* key) = 0;
-
- // Profiling hooks
- virtual PvdError beginSection(const void* instance, String name) = 0;
- virtual PvdError endSection(const void* instance, String name) = 0;
-
- // Origin Shift
- virtual PvdError originShift(const void* scene, PxVec3 shift) = 0;
-
- public:
- /*For some cases, pvd command cannot be run immediately. For example, when create joints, while the actors may still
- *pending for insert, the joints update commands can be run deffered.
- */
- class PvdCommand
- {
- public:
- // Assigned is needed for copying
- PvdCommand(const PvdCommand&)
- {
- }
- PvdCommand& operator=(const PvdCommand&)
- {
- return *this;
- }
-
- public:
- PvdCommand()
- {
- }
- virtual ~PvdCommand()
- {
- }
-
- // Not pure virtual so can have default PvdCommand obj
- virtual bool canRun(PvdInstanceDataStream&)
- {
- return false;
- }
- virtual void run(PvdInstanceDataStream&)
- {
- }
- };
-
- // PVD SDK provide this helper function to allocate cmd's memory and release them at after flush the command queue
- virtual void* allocateMemForCmd(uint32_t length) = 0;
-
- // PVD will call the destructor of PvdCommand object at the end fo flushPvdCommand
- virtual void pushPvdCommand(PvdCommand& cmd) = 0;
- virtual void flushPvdCommand() = 0;
-};
-
-class PvdDataStream : public PvdInstanceDataStream, public PvdMetaDataStream
-{
- protected:
- virtual ~PvdDataStream()
- {
- }
-
- public:
- virtual void release() = 0;
- virtual bool isConnected() = 0;
-
- virtual void addProfileZone(void* zone, const char* name) = 0;
- virtual void addProfileZoneEvent(void* zone, const char* name, uint16_t eventId, bool compileTimeEnabled) = 0;
-
- virtual PvdPropertyDefinitionHelper& getPropertyDefinitionHelper() = 0;
-
- virtual void setIsTopLevelUIElement(const void* instance, bool topLevel) = 0;
- virtual void sendErrorMessage(uint32_t code, const char* message, const char* file, uint32_t line) = 0;
- virtual void updateCamera(const char* name, const PxVec3& origin, const PxVec3& up, const PxVec3& target) = 0;
-
-/**
- \brief Create a new PvdDataStream.
- \param pvd A pointer to a valid PxPvd instance. This must be non-null.
-*/
- PX_PVDSDK_API static PvdDataStream* create(PxPvd* pvd);
-};
-#if !PX_DOXYGEN
-} // pvdsdk
-} // physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDDATASTREAM_H
diff --git a/PxShared/src/pvd/include/PxPvdDataStreamHelpers.h b/PxShared/src/pvd/include/PxPvdDataStreamHelpers.h
deleted file mode 100644
index 7b47db5..0000000
--- a/PxShared/src/pvd/include/PxPvdDataStreamHelpers.h
+++ /dev/null
@@ -1,120 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDDATASTREAMHELPERS_H
-#define PXPVDSDK_PXPVDDATASTREAMHELPERS_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "PxPvdObjectModelBaseTypes.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-class PvdPropertyDefinitionHelper
-{
- protected:
- virtual ~PvdPropertyDefinitionHelper()
- {
- }
-
- public:
- /**
- Push a name c such that it appends such as a.b.c.
- */
- virtual void pushName(const char* inName, const char* inAppendStr = ".") = 0;
- /**
- Push a name c such that it appends like a.b[c]
- */
- virtual void pushBracketedName(const char* inName, const char* leftBracket = "[", const char* rightBracket = "]") = 0;
- /**
- * Pop the current name
- */
- virtual void popName() = 0;
-
- virtual void clearNameStack() = 0;
- /**
- * Get the current name at the top of the name stack.
- * Would return "a.b.c" or "a.b[c]" in the above examples.
- */
- virtual const char* getTopName() = 0;
-
- virtual void addNamedValue(const char* name, uint32_t value) = 0;
- virtual void clearNamedValues() = 0;
- virtual DataRef<NamedValue> getNamedValues() = 0;
-
- /**
- * Define a property using the top of the name stack and the passed-in semantic
- */
- virtual void createProperty(const NamespacedName& clsName, const char* inSemantic, const NamespacedName& dtypeName,
- PropertyType::Enum propType = PropertyType::Scalar) = 0;
-
- template <typename TClsType, typename TDataType>
- void createProperty(const char* inSemantic = "", PropertyType::Enum propType = PropertyType::Scalar)
- {
- createProperty(getPvdNamespacedNameForType<TClsType>(), inSemantic, getPvdNamespacedNameForType<TDataType>(),
- propType);
- }
-
- // The datatype used for instances needs to be pointer unless you actually have pvdsdk::InstanceId members on your
- // value structs.
- virtual void addPropertyMessageArg(const NamespacedName& inDatatype, uint32_t inOffset, uint32_t inSize) = 0;
-
- template <typename TDataType>
- void addPropertyMessageArg(uint32_t offset)
- {
- addPropertyMessageArg(getPvdNamespacedNameForType<TDataType>(), offset, static_cast<uint32_t>(sizeof(TDataType)));
- }
- virtual void addPropertyMessage(const NamespacedName& clsName, const NamespacedName& msgName,
- uint32_t inStructSizeInBytes) = 0;
- template <typename TClsType, typename TMsgType>
- void addPropertyMessage()
- {
- addPropertyMessage(getPvdNamespacedNameForType<TClsType>(), getPvdNamespacedNameForType<TMsgType>(),
- static_cast<uint32_t>(sizeof(TMsgType)));
- }
- virtual void clearPropertyMessageArgs() = 0;
-
- void clearBufferedData()
- {
- clearNameStack();
- clearPropertyMessageArgs();
- clearNamedValues();
- }
-};
-
-#if !PX_DOXYGEN
-} // pvdsdk
-} // physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDDATASTREAMHELPERS_H
diff --git a/PxShared/src/pvd/include/PxPvdErrorCodes.h b/PxShared/src/pvd/include/PxPvdErrorCodes.h
deleted file mode 100644
index ae17a6f..0000000
--- a/PxShared/src/pvd/include/PxPvdErrorCodes.h
+++ /dev/null
@@ -1,62 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDERRORCODES_H
-#define PXPVDSDK_PXPVDERRORCODES_H
-
-/** \addtogroup pvd
-@{
-*/
-
-#include "foundation/Px.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-struct PvdErrorType
-{
- enum Enum
- {
- Success = 0,
- NetworkError,
- ArgumentError,
- Disconnect,
- InternalProblem
- };
-};
-
-typedef PvdErrorType::Enum PvdError;
-
-#if !PX_DOXYGEN
-}
-}
-#endif
-/** @} */
-#endif // PXPVDSDK_PXPVDERRORCODES_H
diff --git a/PxShared/src/pvd/include/PxPvdObjectModelBaseTypes.h b/PxShared/src/pvd/include/PxPvdObjectModelBaseTypes.h
deleted file mode 100644
index f65e581..0000000
--- a/PxShared/src/pvd/include/PxPvdObjectModelBaseTypes.h
+++ /dev/null
@@ -1,428 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDOBJECTMODELBASETYPES_H
-#define PXPVDSDK_PXPVDOBJECTMODELBASETYPES_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "foundation/PxAssert.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-using namespace physx;
-
-inline const char* nonNull(const char* str)
-{
- return str ? str : "";
-}
-// strcmp will crash if passed a null string, however,
-// so we need to make sure that doesn't happen. We do that
-// by equating NULL and the empty string, "".
-inline bool safeStrEq(const char* lhs, const char* rhs)
-{
- return ::strcmp(nonNull(lhs), nonNull(rhs)) == 0;
-}
-
-// Does this string have useful information in it.
-inline bool isMeaningful(const char* str)
-{
- return *(nonNull(str)) > 0;
-}
-
-inline uint32_t safeStrLen(const char* str)
-{
- str = nonNull(str);
- return static_cast<uint32_t>(strlen(str));
-}
-
-struct ObjectRef
-{
- int32_t mInstanceId;
-
- ObjectRef(int32_t iid = -1) : mInstanceId(iid)
- {
- }
- operator int32_t() const
- {
- return mInstanceId;
- }
- bool hasValue() const
- {
- return mInstanceId > 0;
- }
-};
-
-struct U32Array4
-{
- uint32_t mD0;
- uint32_t mD1;
- uint32_t mD2;
- uint32_t mD3;
- U32Array4(uint32_t d0, uint32_t d1, uint32_t d2, uint32_t d3) : mD0(d0), mD1(d1), mD2(d2), mD3(d3)
- {
- }
- U32Array4() : mD0(0), mD1(0), mD2(0), mD3(0)
- {
- }
-};
-
-typedef bool PvdBool;
-typedef const char* String;
-typedef void* VoidPtr;
-typedef double PvdF64;
-typedef float PvdF32;
-typedef int64_t PvdI64;
-typedef uint64_t PvdU64;
-typedef int32_t PvdI32;
-typedef uint32_t PvdU32;
-typedef int16_t PvdI16;
-typedef uint16_t PvdU16;
-typedef int8_t PvdI8;
-typedef uint8_t PvdU8;
-
-struct PvdColor
-{
- uint8_t r;
- uint8_t g;
- uint8_t b;
- uint8_t a;
- PvdColor(uint8_t _r, uint8_t _g, uint8_t _b, uint8_t _a = 255) : r(_r), g(_g), b(_b), a(_a)
- {
- }
- PvdColor() : r(0), g(0), b(0), a(255)
- {
- }
- PvdColor(uint32_t abgr)
- {
- uint8_t* valPtr = reinterpret_cast<uint8_t*>(&abgr);
- r = valPtr[0];
- g = valPtr[1];
- b = valPtr[2];
- a = valPtr[3];
- }
-};
-
-struct StringHandle
-{
- uint32_t mHandle;
- StringHandle(uint32_t val = 0) : mHandle(val)
- {
- }
- operator uint32_t() const
- {
- return mHandle;
- }
-};
-
-#define DECLARE_TYPES \
-DECLARE_BASE_PVD_TYPE(PvdI8) \
-DECLARE_BASE_PVD_TYPE(PvdU8) \
-DECLARE_BASE_PVD_TYPE(PvdI16) \
-DECLARE_BASE_PVD_TYPE(PvdU16) \
-DECLARE_BASE_PVD_TYPE(PvdI32) \
-DECLARE_BASE_PVD_TYPE(PvdU32) \
-DECLARE_BASE_PVD_TYPE(PvdI64) \
-DECLARE_BASE_PVD_TYPE(PvdU64) \
-DECLARE_BASE_PVD_TYPE(PvdF32) \
-DECLARE_BASE_PVD_TYPE(PvdF64) \
-DECLARE_BASE_PVD_TYPE(PvdBool) \
-DECLARE_BASE_PVD_TYPE(PvdColor) \
-DECLARE_BASE_PVD_TYPE(String) \
-DECLARE_BASE_PVD_TYPE(StringHandle) \
-DECLARE_BASE_PVD_TYPE(ObjectRef) \
-DECLARE_BASE_PVD_TYPE(VoidPtr) \
-DECLARE_BASE_PVD_TYPE(PxVec2) \
-DECLARE_BASE_PVD_TYPE(PxVec3) \
-DECLARE_BASE_PVD_TYPE(PxVec4) \
-DECLARE_BASE_PVD_TYPE(PxBounds3) \
-DECLARE_BASE_PVD_TYPE(PxQuat) \
-DECLARE_BASE_PVD_TYPE(PxTransform) \
-DECLARE_BASE_PVD_TYPE(PxMat33) \
-DECLARE_BASE_PVD_TYPE(PxMat44) \
-DECLARE_BASE_PVD_TYPE(U32Array4)
-
-struct PvdBaseType
-{
- enum Enum
- {
- None = 0,
- InternalStart = 1,
- InternalStop = 64,
-#define DECLARE_BASE_PVD_TYPE(type) type,
- DECLARE_TYPES
- Last
-#undef DECLARE_BASE_PVD_TYPE
- };
-};
-struct NamespacedName
-{
- String mNamespace;
- String mName;
- NamespacedName(String ns, String nm) : mNamespace(ns), mName(nm)
- {
- }
- NamespacedName(String nm = "") : mNamespace(""), mName(nm)
- {
- }
- bool operator==(const NamespacedName& other) const
- {
- return safeStrEq(mNamespace, other.mNamespace) && safeStrEq(mName, other.mName);
- }
-};
-
-struct NamedValue
-{
- String mName;
- uint32_t mValue;
- NamedValue(String nm = "", uint32_t val = 0) : mName(nm), mValue(val)
- {
- }
-};
-
-template <typename T>
-struct BaseDataTypeToTypeMap
-{
- bool compile_error;
-};
-template <PvdBaseType::Enum>
-struct BaseTypeToDataTypeMap
-{
- bool compile_error;
-};
-
-// Users can extend this mapping with new datatypes.
-template <typename T>
-struct PvdDataTypeToNamespacedNameMap
-{
- bool Name;
-};
-// This mapping tells you the what class id to use for the base datatypes
-//
-#define DECLARE_BASE_PVD_TYPE(type) \
- template <> \
- struct BaseDataTypeToTypeMap<type> \
- { \
- enum Enum \
- { \
- BaseTypeEnum = PvdBaseType::type \
- }; \
- }; \
- template <> \
- struct BaseDataTypeToTypeMap<const type&> \
- { \
- enum Enum \
- { \
- BaseTypeEnum = PvdBaseType::type \
- }; \
- }; \
- template <> \
- struct BaseTypeToDataTypeMap<PvdBaseType::type> \
- { \
- typedef type TDataType; \
- }; \
- template <> \
- struct PvdDataTypeToNamespacedNameMap<type> \
- { \
- NamespacedName Name; \
- PvdDataTypeToNamespacedNameMap<type>() : Name("physx3", #type) \
- { \
- } \
- }; \
- template <> \
- struct PvdDataTypeToNamespacedNameMap<const type&> \
- { \
- NamespacedName Name; \
- PvdDataTypeToNamespacedNameMap<const type&>() : Name("physx3", #type) \
- { \
- } \
- };
-
-DECLARE_TYPES
-#undef DECLARE_BASE_PVD_TYPE
-
-template <typename TDataType>
-inline int32_t getPvdTypeForType()
-{
- return static_cast<PvdBaseType::Enum>(BaseDataTypeToTypeMap<TDataType>::BaseTypeEnum);
-}
-template <typename TDataType>
-inline NamespacedName getPvdNamespacedNameForType()
-{
- return PvdDataTypeToNamespacedNameMap<TDataType>().Name;
-}
-
-#define DEFINE_PVD_TYPE_NAME_MAP(type, ns, name) \
- template <> \
- struct PvdDataTypeToNamespacedNameMap<type> \
- { \
- NamespacedName Name; \
- PvdDataTypeToNamespacedNameMap<type>() : Name(ns, name) \
- { \
- } \
- };
-
-#define DEFINE_PVD_TYPE_ALIAS(newType, oldType) \
- template <> \
- struct PvdDataTypeToNamespacedNameMap<newType> \
- { \
- NamespacedName Name; \
- PvdDataTypeToNamespacedNameMap<newType>() : Name(PvdDataTypeToNamespacedNameMap<oldType>().Name) \
- { \
- } \
- };
-
-DEFINE_PVD_TYPE_ALIAS(const void*, void*)
-
-struct ArrayData
-{
- uint8_t* mBegin;
- uint8_t* mEnd;
- uint8_t* mCapacity; //>= stop
- ArrayData(uint8_t* beg = NULL, uint8_t* end = NULL, uint8_t* cap = NULL) : mBegin(beg), mEnd(end), mCapacity(cap)
- {
- }
- uint8_t* begin()
- {
- return mBegin;
- }
- uint8_t* end()
- {
- return mEnd;
- }
- uint32_t byteCapacity()
- {
- return static_cast<uint32_t>(mCapacity - mBegin);
- }
- uint32_t byteSize() const
- {
- return static_cast<uint32_t>(mEnd - mBegin);
- } // in bytes
- uint32_t numberOfItems(uint32_t objectByteSize)
- {
- if(objectByteSize)
- return byteSize() / objectByteSize;
- return 0;
- }
-
- void forgetData()
- {
- mBegin = mEnd = mCapacity = 0;
- }
-};
-
-template <typename T>
-class DataRef
-{
- const T* mBegin;
- const T* mEnd;
-
- public:
- DataRef(const T* b, uint32_t count) : mBegin(b), mEnd(b + count)
- {
- }
- DataRef(const T* b = NULL, const T* e = NULL) : mBegin(b), mEnd(e)
- {
- }
- DataRef(const DataRef& o) : mBegin(o.mBegin), mEnd(o.mEnd)
- {
- }
- DataRef& operator=(const DataRef& o)
- {
- mBegin = o.mBegin;
- mEnd = o.mEnd;
- return *this;
- }
- uint32_t size() const
- {
- return static_cast<uint32_t>(mEnd - mBegin);
- }
- const T* begin() const
- {
- return mBegin;
- }
- const T* end() const
- {
- return mEnd;
- }
- const T& operator[](uint32_t idx) const
- {
- PX_ASSERT(idx < size());
- return mBegin[idx];
- }
- const T& back() const
- {
- PX_ASSERT(mEnd > mBegin);
- return *(mEnd - 1);
- }
-};
-
-struct PropertyType
-{
- enum Enum
- {
- Unknown = 0,
- Scalar,
- Array
- };
-};
-
-// argument to the create property message function
-struct PropertyMessageArg
-{
- String mPropertyName;
- NamespacedName mDatatypeName;
- // where in the message this property starts.
- uint32_t mMessageOffset;
- // size of this entry object
- uint32_t mByteSize;
-
- PropertyMessageArg(String propName, NamespacedName dtype, uint32_t msgOffset, uint32_t byteSize)
- : mPropertyName(propName), mDatatypeName(dtype), mMessageOffset(msgOffset), mByteSize(byteSize)
- {
- }
- PropertyMessageArg() : mPropertyName(""), mMessageOffset(0), mByteSize(0)
- {
- }
-};
-
-class PvdUserRenderer;
-DEFINE_PVD_TYPE_NAME_MAP(PvdUserRenderer, "_debugger_", "PvdUserRenderer")
-
-#if !PX_DOXYGEN
-}
-}
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDOBJECTMODELBASETYPES_H
diff --git a/PxShared/src/pvd/include/PxPvdRenderBuffer.h b/PxShared/src/pvd/include/PxPvdRenderBuffer.h
deleted file mode 100644
index 58c8d51..0000000
--- a/PxShared/src/pvd/include/PxPvdRenderBuffer.h
+++ /dev/null
@@ -1,140 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDRENDERBUFFER_H
-#define PXPVDSDK_PXPVDRENDERBUFFER_H
-
-/** \addtogroup pvd
-@{
-*/
-
-#include "foundation/PxVec3.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-
-/**
-\brief Default color values used for debug rendering.
-*/
-struct PvdDebugColor
-{
- enum Enum
- {
- eARGB_BLACK = 0xff000000,
- eARGB_RED = 0xffff0000,
- eARGB_GREEN = 0xff00ff00,
- eARGB_BLUE = 0xff0000ff,
- eARGB_YELLOW = 0xffffff00,
- eARGB_MAGENTA = 0xffff00ff,
- eARGB_CYAN = 0xff00ffff,
- eARGB_WHITE = 0xffffffff,
- eARGB_GREY = 0xff808080,
- eARGB_DARKRED = 0x88880000,
- eARGB_DARKGREEN = 0x88008800,
- eARGB_DARKBLUE = 0x88000088
- };
-};
-
-/**
-\brief Used to store a single point and colour for debug rendering.
-*/
-struct PvdDebugPoint
-{
- PvdDebugPoint(const PxVec3& p, const uint32_t& c) : pos(p), color(c)
- {
- }
-
- PxVec3 pos;
- uint32_t color;
-};
-
-/**
-\brief Used to store a single line and colour for debug rendering.
-*/
-struct PvdDebugLine
-{
- PvdDebugLine(const PxVec3& p0, const PxVec3& p1, const uint32_t& c) : pos0(p0), color0(c), pos1(p1), color1(c)
- {
- }
-
- PxVec3 pos0;
- uint32_t color0;
- PxVec3 pos1;
- uint32_t color1;
-};
-
-/**
-\brief Used to store a single triangle and colour for debug rendering.
-*/
-struct PvdDebugTriangle
-{
- PvdDebugTriangle(const PxVec3& p0, const PxVec3& p1, const PxVec3& p2, const uint32_t& c)
- : pos0(p0), color0(c), pos1(p1), color1(c), pos2(p2), color2(c)
- {
- }
-
- PxVec3 pos0;
- uint32_t color0;
- PxVec3 pos1;
- uint32_t color1;
- PxVec3 pos2;
- uint32_t color2;
-};
-
-/**
-\brief Used to store a text for debug rendering. Doesn't own 'string' array.
-*/
-struct PvdDebugText
-{
- PvdDebugText() : string(0)
- {
- }
-
- PvdDebugText(const PxVec3& p, const float& s, const uint32_t& c, const char* str)
- : position(p), size(s), color(c), string(str)
- {
- }
-
- PxVec3 position;
- float size;
- uint32_t color;
- const char* string;
-};
-
-#if !PX_DOXYGEN
-}
-} // namespace physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDRENDERBUFFER_H
diff --git a/PxShared/src/pvd/include/PxPvdUserRenderer.h b/PxShared/src/pvd/include/PxPvdUserRenderer.h
deleted file mode 100644
index ac6f26d..0000000
--- a/PxShared/src/pvd/include/PxPvdUserRenderer.h
+++ /dev/null
@@ -1,107 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDUSERRENDERER_H
-#define PXPVDSDK_PXPVDUSERRENDERER_H
-
-/** \addtogroup pvd
-@{
-*/
-#include "foundation/PxVec3.h"
-#include "foundation/PxTransform.h"
-#include "pvd/PxPvd.h"
-
-#include "PxPvdDataStream.h"
-#include "PxPvdRenderBuffer.h"
-#include "PsUserAllocated.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-#endif
-
-class PxPvd;
-
-#if !PX_DOXYGEN
-namespace pvdsdk
-{
-#endif
-
-class RendererEventClient;
-
-class PvdUserRenderer : public shdfnd::UserAllocated
-{
- protected:
- virtual ~PvdUserRenderer()
- {
- }
-
- public:
- virtual void release() = 0;
- virtual void setClient(RendererEventClient* client) = 0;
-
- // Instance to associate the further rendering with.
- virtual void setInstanceId(const void* instanceId) = 0;
- // Draw these points associated with this instance
- virtual void drawPoints(const PvdDebugPoint* points, uint32_t count) = 0;
- // Draw these lines associated with this instance
- virtual void drawLines(const PvdDebugLine* lines, uint32_t count) = 0;
- // Draw these triangles associated with this instance
- virtual void drawTriangles(const PvdDebugTriangle* triangles, uint32_t count) = 0;
- // Draw this text associated with this instance
- virtual void drawText(const PvdDebugText& text) = 0;
-
- // Draw SDK debug render
- virtual void drawRenderbuffer(const PvdDebugPoint* pointData, uint32_t pointCount, const PvdDebugLine* lineData,
- uint32_t lineCount, const PvdDebugTriangle* triangleData, uint32_t triangleCount) = 0;
-
- // Constraint visualization routines
- virtual void visualizeJointFrames(const PxTransform& parent, const PxTransform& child) = 0;
- virtual void visualizeLinearLimit(const PxTransform& t0, const PxTransform& t1, float value, bool active) = 0;
- virtual void visualizeAngularLimit(const PxTransform& t0, float lower, float upper, bool active) = 0;
- virtual void visualizeLimitCone(const PxTransform& t, float ySwing, float zSwing, bool active) = 0;
- virtual void visualizeDoubleCone(const PxTransform& t, float angle, bool active) = 0;
-
- // Clear the immedate buffer.
- virtual void flushRenderEvents() = 0;
-
- PX_PVDSDK_API static PvdUserRenderer* create(uint32_t bufferSize = 0x2000);
-};
-
-class RendererEventClient
-{
- public:
- virtual ~RendererEventClient(){}
-
- virtual void handleBufferFlush(const uint8_t* inData, uint32_t inLength) = 0;
-};
-
-#if !PX_DOXYGEN
-}
-}
-#endif
-/** @} */
-#endif // PXPVDSDK_PXPVDUSERRENDERER_H
diff --git a/PxShared/src/pvd/src/PxProfileBase.h b/PxShared/src/pvd/src/PxProfileBase.h
deleted file mode 100644
index 52918a1..0000000
--- a/PxShared/src/pvd/src/PxProfileBase.h
+++ /dev/null
@@ -1,35 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEBASE_H
-#define PXPVDSDK_PXPROFILEBASE_H
-
-#include "foundation/PxSimpleTypes.h"
-
-#define PX_PROFILE_POINTER_TO_U64( pointer ) static_cast<uint64_t>(reinterpret_cast<size_t>(pointer))
-
-#endif // PXPVDSDK_PXPROFILEBASE_H
diff --git a/PxShared/src/pvd/src/PxProfileCompileTimeEventFilter.h b/PxShared/src/pvd/src/PxProfileCompileTimeEventFilter.h
deleted file mode 100644
index 428374e..0000000
--- a/PxShared/src/pvd/src/PxProfileCompileTimeEventFilter.h
+++ /dev/null
@@ -1,75 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILECOMPILETIMEEVENTFILTER_H
-#define PXPVDSDK_PXPROFILECOMPILETIMEEVENTFILTER_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-
-//Define before including header in order to enable a different
-//compile time event profile threshold.
-#ifndef PX_PROFILE_EVENT_PROFILE_THRESHOLD
-#define PX_PROFILE_EVENT_PROFILE_THRESHOLD EventPriorities::Medium
-#endif
-
-namespace physx { namespace profile {
-
- /**
- \brief Profile event priorities. Used to filter out events.
- */
- struct EventPriorities
- {
- enum Enum
- {
- None, // the filter setting to kill all events
- Coarse,
- Medium,
- Detail,
- Never // the priority to set for an event if it should never fire.
- };
- };
-
- /**
- \brief Gets the priority for a given event.
- Specialize this object in order to get the priorities setup correctly.
- */
- template<uint16_t TEventId>
- struct EventPriority { static const uint32_t val = EventPriorities::Medium; };
-
- /**
- \brief Filter events by given event priority and set threshold.
- */
- template<uint16_t TEventId>
- struct EventFilter
- {
- static const bool val = EventPriority<TEventId>::val <= PX_PROFILE_EVENT_PROFILE_THRESHOLD;
- };
-
-}}
-
-#endif // PXPVDSDK_PXPROFILECOMPILETIMEEVENTFILTER_H
diff --git a/PxShared/src/pvd/src/PxProfileContextProvider.h b/PxShared/src/pvd/src/PxProfileContextProvider.h
deleted file mode 100644
index 44f6b94..0000000
--- a/PxShared/src/pvd/src/PxProfileContextProvider.h
+++ /dev/null
@@ -1,98 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILECONTEXTPROVIDER_H
-#define PXPVDSDK_PXPROFILECONTEXTPROVIDER_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
-
- struct PxProfileEventExecutionContext
- {
- uint32_t mThreadId;
- uint8_t mCpuId;
- uint8_t mThreadPriority;
-
- PxProfileEventExecutionContext( uint32_t inThreadId = 0, uint8_t inThreadPriority = 2 /*eThreadPriorityNormal*/, uint8_t inCpuId = 0 )
- : mThreadId( inThreadId )
- , mCpuId( inCpuId )
- , mThreadPriority( inThreadPriority )
- {
- }
-
- bool operator==( const PxProfileEventExecutionContext& inOther ) const
- {
- return mThreadId == inOther.mThreadId
- && mCpuId == inOther.mCpuId
- && mThreadPriority == inOther.mThreadPriority;
- }
- };
-
- //Provides the context in which the event is happening.
- class PxProfileContextProvider
- {
- protected:
- virtual ~PxProfileContextProvider(){}
- public:
- virtual PxProfileEventExecutionContext getExecutionContext() = 0;
- virtual uint32_t getThreadId() = 0;
- };
- //Provides pre-packaged context.
- struct PxProfileTrivialContextProvider
- {
- PxProfileEventExecutionContext mContext;
- PxProfileTrivialContextProvider( PxProfileEventExecutionContext inContext = PxProfileEventExecutionContext() )
- : mContext( inContext )
- {
- }
- PxProfileEventExecutionContext getExecutionContext() { return mContext; }
- uint32_t getThreadId() { return mContext.mThreadId; }
- };
-
- //Forwards the get context calls to another (perhaps shared) context.
- template<typename TProviderType>
- struct PxProfileContextProviderForward
- {
- TProviderType* mProvider;
- PxProfileContextProviderForward( TProviderType* inProvider ) : mProvider( inProvider ) {}
- PxProfileEventExecutionContext getExecutionContext() { return mProvider->getExecutionContext(); }
- uint32_t getThreadId() { return mProvider->getThreadId(); }
- };
-
- template<typename TProviderType>
- struct PxProfileContextProviderImpl : public PxProfileContextProvider
- {
- PxProfileContextProviderForward<TProviderType> mContext;
- PxProfileContextProviderImpl( TProviderType* inP ) : mContext( inP ) {}
- PxProfileEventExecutionContext getExecutionContext() { return mContext.getExecutionContext(); }
- uint32_t getThreadId() { return mContext.getThreadId(); }
- };
-
-} }
-
-#endif // PXPVDSDK_PXPROFILECONTEXTPROVIDER_H
diff --git a/PxShared/src/pvd/src/PxProfileContextProviderImpl.h b/PxShared/src/pvd/src/PxProfileContextProviderImpl.h
deleted file mode 100644
index bc5f09f..0000000
--- a/PxShared/src/pvd/src/PxProfileContextProviderImpl.h
+++ /dev/null
@@ -1,52 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILECONTEXTPROVIDERIMPL_H
-#define PXPVDSDK_PXPROFILECONTEXTPROVIDERIMPL_H
-
-#include "PxProfileContextProvider.h"
-
-#include "PsThread.h"
-
-namespace physx { namespace profile {
-
- struct PxDefaultContextProvider
- {
- PxProfileEventExecutionContext getExecutionContext()
- {
- shdfnd::Thread::Id theId( shdfnd::Thread::getId() );
- return PxProfileEventExecutionContext( static_cast<uint32_t>( theId ), static_cast<uint8_t>( shdfnd::ThreadPriority::eNORMAL ), 0 );
- }
-
- uint32_t getThreadId()
- {
- return static_cast<uint32_t>( shdfnd::Thread::getId() );
- }
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILECONTEXTPROVIDERIMPL_H
diff --git a/PxShared/src/pvd/src/PxProfileDataBuffer.h b/PxShared/src/pvd/src/PxProfileDataBuffer.h
deleted file mode 100644
index 2191519..0000000
--- a/PxShared/src/pvd/src/PxProfileDataBuffer.h
+++ /dev/null
@@ -1,167 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEDATABUFFER_H
-#define PXPVDSDK_PXPROFILEDATABUFFER_H
-
-#include "PxProfileAllocatorWrapper.h"
-#include "PxProfileMemoryBuffer.h"
-#include "PxProfileEventBufferClient.h"
-
-namespace physx { namespace profile {
-
- template<typename TMutex
- , typename TScopedLock>
- class DataBuffer //base class for buffers that cache data and then dump the data to clients.
- {
- public:
- typedef TMutex TMutexType;
- typedef TScopedLock TScopedLockType;
- typedef PxProfileWrapperNamedAllocator TU8AllocatorType;
-
- typedef MemoryBuffer<TU8AllocatorType > TMemoryBufferType;
- typedef PxProfileArray<PxProfileEventBufferClient*> TBufferClientArray;
-
- protected:
-
- PxProfileAllocatorWrapper mWrapper;
- TMemoryBufferType mDataArray;
- TBufferClientArray mClients;
- uint32_t mBufferFullAmount;
- EventContextInformation mEventContextInformation;
- TMutexType* mBufferMutex;
- volatile bool mHasClients;
- EventSerializer<TMemoryBufferType > mSerializer;
-
- public:
-
- DataBuffer( PxAllocatorCallback* inFoundation
- , uint32_t inBufferFullAmount
- , TMutexType* inBufferMutex
- , const char* inAllocationName )
- : mWrapper( inFoundation )
- , mDataArray( TU8AllocatorType( mWrapper, inAllocationName ) )
- , mClients( mWrapper )
- , mBufferFullAmount( inBufferFullAmount )
- , mBufferMutex( inBufferMutex )
- , mHasClients( false )
- , mSerializer( &mDataArray )
- {
- //The data array is never resized really. We ensure
- //it is bigger than it will ever need to be.
- mDataArray.reserve( inBufferFullAmount + 68 );
- }
-
- virtual ~DataBuffer()
- {
- while( mClients.size() )
- {
- removeClient( *mClients[0] );
- }
- }
-
- PxProfileAllocatorWrapper& getWrapper() { return mWrapper; }
- TMutexType* getBufferMutex() { return mBufferMutex; }
- void setBufferMutex(TMutexType* mutex) { mBufferMutex = mutex; }
-
- void addClient( PxProfileEventBufferClient& inClient )
- {
- TScopedLockType lock( mBufferMutex );
- mClients.pushBack( &inClient );
- mHasClients = true;
- }
-
- void removeClient( PxProfileEventBufferClient& inClient )
- {
- TScopedLockType lock( mBufferMutex );
- for ( uint32_t idx =0; idx < mClients.size(); ++idx )
- {
- if ( mClients[idx] == &inClient )
- {
- inClient.handleClientRemoved();
- mClients.replaceWithLast( idx );
- break;
- }
- }
- mHasClients = mClients.size() != 0;
- }
-
-
- bool hasClients() const
- {
- return mHasClients;
- }
-
- virtual void flushEvents()
- {
- TScopedLockType lock(mBufferMutex);
- const uint8_t* theData = mDataArray.begin();
- uint32_t theDataSize = mDataArray.size();
- sendDataToClients(theData, theDataSize);
- mDataArray.clear();
- clearCachedData();
- }
-
- //Used for chaining together event buffers.
- virtual void handleBufferFlush( const uint8_t* inData, uint32_t inDataSize )
- {
- TScopedLockType lock( mBufferMutex );
- if ( inData && inDataSize )
- {
- clearCachedData();
- if ( mDataArray.size() + inDataSize >= mBufferFullAmount )
- flushEvents();
- if ( inDataSize >= mBufferFullAmount )
- sendDataToClients( inData, inDataSize );
- else
- mDataArray.write( inData, inDataSize );
- }
- }
-
- protected:
- virtual void clearCachedData()
- {
- }
-
- private:
-
- void sendDataToClients( const uint8_t* inData, uint32_t inDataSize )
- {
- uint32_t clientCount = mClients.size();
- for( uint32_t idx =0; idx < clientCount; ++idx )
- mClients[idx]->handleBufferFlush( inData, inDataSize );
- }
-
- };
-
-}}
-
-
-#endif // PXPVDSDK_PXPROFILEDATABUFFER_H
diff --git a/PxShared/src/pvd/src/PxProfileDataParsing.h b/PxShared/src/pvd/src/PxProfileDataParsing.h
deleted file mode 100644
index e7fa0df..0000000
--- a/PxShared/src/pvd/src/PxProfileDataParsing.h
+++ /dev/null
@@ -1,218 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEDATAPARSING_H
-#define PXPVDSDK_PXPROFILEDATAPARSING_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
-
- //Converts datatypes without using type punning.
- struct BlockParserDataConverter
- {
- union
- {
- uint8_t mU8[8];
- uint16_t mU16[4];
- uint32_t mU32[2];
- uint64_t mU64[1];
-
- int8_t mI8[8];
- int16_t mI16[4];
- int32_t mI32[2];
- int64_t mI64[1];
-
-
- float mF32[2];
- double mF64[1];
- };
-
- template<typename TDataType> inline TDataType convert() { PX_ASSERT( false ); return TDataType(); }
-
- template<typename TDataType>
- inline void convert( const TDataType& ) {}
- };
-
- template<> inline uint8_t BlockParserDataConverter::convert<uint8_t>() { return mU8[0]; }
- template<> inline uint16_t BlockParserDataConverter::convert<uint16_t>() { return mU16[0]; }
- template<> inline uint32_t BlockParserDataConverter::convert<uint32_t>() { return mU32[0]; }
- template<> inline uint64_t BlockParserDataConverter::convert<uint64_t>() { return mU64[0]; }
- template<> inline int8_t BlockParserDataConverter::convert<int8_t>() { return mI8[0]; }
- template<> inline int16_t BlockParserDataConverter::convert<int16_t>() { return mI16[0]; }
- template<> inline int32_t BlockParserDataConverter::convert<int32_t>() { return mI32[0]; }
- template<> inline int64_t BlockParserDataConverter::convert<int64_t>() { return mI64[0]; }
- template<> inline float BlockParserDataConverter::convert<float>() { return mF32[0]; }
- template<> inline double BlockParserDataConverter::convert<double>() { return mF64[0]; }
-
- template<> inline void BlockParserDataConverter::convert<uint8_t>( const uint8_t& inData ) { mU8[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<uint16_t>( const uint16_t& inData ) { mU16[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<uint32_t>( const uint32_t& inData ) { mU32[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<uint64_t>( const uint64_t& inData ) { mU64[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<int8_t>( const int8_t& inData ) { mI8[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<int16_t>( const int16_t& inData ) { mI16[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<int32_t>( const int32_t& inData ) { mI32[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<int64_t>( const int64_t& inData ) { mI64[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<float>( const float& inData ) { mF32[0] = inData; }
- template<> inline void BlockParserDataConverter::convert<double>( const double& inData ) { mF64[0] = inData; }
-
-
- //Handles various details around parsing blocks of uint8_t data.
- struct BlockParseFunctions
- {
- template<uint8_t ByteCount>
- static inline void swapBytes( uint8_t* inData )
- {
- for ( uint32_t idx = 0; idx < ByteCount/2; ++idx )
- {
- uint32_t endIdx = ByteCount-idx-1;
- uint8_t theTemp = inData[idx];
- inData[idx] = inData[endIdx];
- inData[endIdx] = theTemp;
- }
- }
-
- static inline bool checkLength( const uint8_t* inStart, const uint8_t* inStop, uint32_t inLength )
- {
- return static_cast<uint32_t>(inStop - inStart) >= inLength;
- }
- //warning work-around
- template<typename T>
- static inline T val(T v) {return v;}
-
- template<bool DoSwapBytes, typename TDataType>
- static inline bool parse( const uint8_t*& inStart, const uint8_t* inStop, TDataType& outData )
- {
- if ( checkLength( inStart, inStop, sizeof( TDataType ) ) )
- {
- BlockParserDataConverter theConverter;
- for ( uint32_t idx =0; idx < sizeof( TDataType ); ++idx )
- theConverter.mU8[idx] = inStart[idx];
- if ( val(DoSwapBytes))
- swapBytes<sizeof(TDataType)>( theConverter.mU8 );
- outData = theConverter.convert<TDataType>();
- inStart += sizeof( TDataType );
- return true;
- }
- return false;
- }
-
- template<bool DoSwapBytes, typename TDataType>
- static inline bool parseBlock( const uint8_t*& inStart, const uint8_t* inStop, TDataType* outData, uint32_t inNumItems )
- {
- uint32_t desired = sizeof(TDataType)*inNumItems;
- if ( checkLength( inStart, inStop, desired ) )
- {
- if ( val(DoSwapBytes) )
- {
- for ( uint32_t item = 0; item < inNumItems; ++item )
- {
- BlockParserDataConverter theConverter;
- for ( uint32_t idx =0; idx < sizeof( TDataType ); ++idx )
- theConverter.mU8[idx] = inStart[idx];
- swapBytes<sizeof(TDataType)>( theConverter.mU8 );
- outData[item] = theConverter.convert<TDataType>();
- inStart += sizeof(TDataType);
- }
- }
- else
- {
- uint8_t* target = reinterpret_cast<uint8_t*>(outData);
- memmove( target, inStart, desired );
- inStart += desired;
- }
- return true;
- }
- return false;
- }
-
- //In-place byte swapping block
- template<bool DoSwapBytes, typename TDataType>
- static inline bool parseBlock( uint8_t*& inStart, const uint8_t* inStop, uint32_t inNumItems )
- {
- uint32_t desired = sizeof(TDataType)*inNumItems;
- if ( checkLength( inStart, inStop, desired ) )
- {
- if ( val(DoSwapBytes) )
- {
- for ( uint32_t item = 0; item < inNumItems; ++item, inStart += sizeof( TDataType ) )
- swapBytes<sizeof(TDataType)>( inStart ); //In-place swap.
- }
- else
- inStart += sizeof( TDataType ) * inNumItems;
- return true;
- }
- return false;
- }
- };
-
- //Wraps the begin/end keeping track of them.
- template<bool DoSwapBytes>
- struct BlockParser
- {
- const uint8_t* mBegin;
- const uint8_t* mEnd;
- BlockParser( const uint8_t* inBegin=NULL, const uint8_t* inEnd=NULL )
- : mBegin( inBegin )
- , mEnd( inEnd )
- {
- }
- inline bool hasMoreData() const { return mBegin != mEnd; }
- inline bool checkLength( uint32_t inLength ) { return BlockParseFunctions::checkLength( mBegin, mEnd, inLength ); }
-
- template<typename TDataType>
- inline bool read( TDataType& outDatatype ) { return BlockParseFunctions::parse<DoSwapBytes>( mBegin, mEnd, outDatatype ); }
-
- template<typename TDataType>
- inline bool readBlock( TDataType* outDataPtr, uint32_t inNumItems ) { return BlockParseFunctions::parseBlock<DoSwapBytes>( mBegin, mEnd, outDataPtr, inNumItems ); }
-
- template<typename TDataType>
- inline bool readBlock( uint32_t inNumItems )
- {
- uint8_t* theTempPtr = const_cast<uint8_t*>(mBegin);
- bool retval = BlockParseFunctions::parseBlock<DoSwapBytes, TDataType>( theTempPtr, mEnd, inNumItems );
- mBegin = theTempPtr;
- return retval;
- }
-
- uint32_t amountLeft() const { return static_cast<uint32_t>( mEnd - mBegin ); }
- };
-
- //Reads the data without checking for error conditions
- template<typename TDataType, typename TBlockParserType>
- inline TDataType blockParserRead( TBlockParserType& inType )
- {
- TDataType retval;
- inType.read( retval );
- return retval;
- }
-}}
-
-#endif // PXPVDSDK_PXPROFILEDATAPARSING_H
diff --git a/PxShared/src/pvd/src/PxProfileEventBuffer.h b/PxShared/src/pvd/src/PxProfileEventBuffer.h
deleted file mode 100644
index 213d980..0000000
--- a/PxShared/src/pvd/src/PxProfileEventBuffer.h
+++ /dev/null
@@ -1,270 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEEVENTBUFFER_H
-#define PXPVDSDK_PXPROFILEEVENTBUFFER_H
-
-#include "PxProfileEvents.h"
-#include "PxProfileEventSerialization.h"
-#include "PxProfileEventSystem.h"
-#include "PxProfileDataBuffer.h"
-#include "PxProfileContextProvider.h"
-
-#include "PsArray.h"
-#include "PsTime.h"
-#include "PsCpu.h"
-
-namespace physx { namespace profile {
-
- /**
- * An event buffer maintains an in-memory buffer of events. When this buffer is full
- * it sends to buffer to all handlers registered and resets the buffer.
- *
- * It is parameterized in four ways. The first is a context provider that provides
- * both thread id and context id.
- *
- * The second is the mutex (which may be null) and a scoped locking mechanism. Thus the buffer
- * may be used in a multithreaded context but clients of the buffer don't pay for this if they
- * don't intend to use it this way.
- *
- * Finally the buffer may use an event filtering mechanism. This mechanism needs one function,
- * namely isEventEnabled( uint8_t subsystem, uint8_t eventId ).
- *
- * All of these systems can be parameterized at compile time leading to an event buffer
- * that should be as fast as possible given the constraints.
- *
- * Buffers may be chained together as this buffer has a handleBufferFlush method that
- * will grab the mutex and add the data to this event buffer.
- *
- * Overall, lets look at the PhysX SDK an how all the pieces fit together.
- * The SDK should have a mutex-protected event buffer where actual devs or users of PhysX
- * can register handlers. This buffer has slow but correct implementations of the
- * context provider interface.
- *
- * The SDK object should also have a concrete event filter which was used in the
- * construction of the event buffer and which it exposes through opaque interfaces.
- *
- * The SDK should protect its event buffer and its event filter from multithreaded
- * access and thus this provides the safest and slowest way to log events and to
- * enable/disable events.
- *
- * Each scene should also have a concrete event filter. This filter is updated from
- * the SDK event filter (in a mutex protected way) every frame. Thus scenes can change
- * their event filtering on a frame-by-frame basis. It means that tasks running
- * under the scene don't need a mutex when accessing the filter.
- *
- * Furthermore the scene should have an event buffer that always sets the context id
- * on each event to the scene. This allows PVD and other systems to correlate events
- * to scenes. Scenes should provide access only to a relative event sending system
- * that looks up thread id upon each event but uses the scene id.
- *
- * The SDK's event buffer should be setup as an EventBufferClient for each scene's
- * event buffer. Thus the SDK should expose an EventBufferClient interface that
- * any client can use.
- *
- * For extremely *extremely* performance sensitive areas we should create a specialized
- * per-scene, per-thread event buffer that is set on the task for these occasions. This buffer
- * uses a trivial event context setup with the scene's context id and the thread id. It should
- * share the scene's concrete event filter and it should have absolutely no locking. It should
- * empty into the scene's event buffer which in some cases should empty into the SDK's event buffer
- * which when full will push events all the way out of the system. The task should *always* flush
- * the event buffer (if it has one) when it is finished; nothing else will work reliably.
- *
- * If the per-scene,per-thread event buffer is correctly parameterized and fully defined adding
- * a new event should be an inline operation requiring no mutex grabs in the common case. I don't
- * believe you can get faster event production than this; the events are as small as possible (all
- * relative events) and they are all produced inline resulting in one 4 byte header and one
- * 8 byte timestamp per event. Reducing the memory pressure in this way reduces the communication
- * overhead, the mutex grabs, basically everything that makes profiling expensive at the cost
- * of a per-scene,per-thread event buffer (which could easily be reduced to a per-thread event
- * buffer.
- */
- template<typename TContextProvider,
- typename TMutex,
- typename TScopedLock,
- typename TEventFilter>
- class EventBuffer : public DataBuffer<TMutex, TScopedLock>
- {
- public:
- typedef DataBuffer<TMutex, TScopedLock> TBaseType;
- typedef TContextProvider TContextProviderType;
- typedef TEventFilter TEventFilterType;
- typedef typename TBaseType::TMutexType TMutexType;
- typedef typename TBaseType::TScopedLockType TScopedLockType;
- typedef typename TBaseType::TU8AllocatorType TU8AllocatorType;
- typedef typename TBaseType::TMemoryBufferType TMemoryBufferType;
- typedef typename TBaseType::TBufferClientArray TBufferClientArray;
-
- private:
- EventContextInformation mEventContextInformation;
- uint64_t mLastTimestamp;
- TContextProvider mContextProvider;
- TEventFilterType mEventFilter;
-
- public:
- EventBuffer(PxAllocatorCallback* inFoundation
- , uint32_t inBufferFullAmount
- , const TContextProvider& inProvider
- , TMutexType* inBufferMutex
- , const TEventFilterType& inEventFilter )
- : TBaseType( inFoundation, inBufferFullAmount, inBufferMutex, "struct physx::profile::ProfileEvent" )
- , mLastTimestamp( 0 )
- , mContextProvider( inProvider )
- , mEventFilter( inEventFilter )
- {
- memset(&mEventContextInformation,0,sizeof(EventContextInformation));
- }
-
- TContextProvider& getContextProvider() { return mContextProvider; }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t inTimestamp)
- {
- TScopedLockType lock(TBaseType::mBufferMutex);
- if ( mEventFilter.isEventEnabled( inId ) )
- {
- StartEvent theEvent;
- theEvent.init( threadId, contextId, cpuId, threadPriority, inTimestamp );
- doAddProfileEvent( inId, theEvent );
- }
- }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint64_t contextId)
- {
- PxProfileEventExecutionContext ctx( mContextProvider.getExecutionContext() );
- startEvent( inId, ctx.mThreadId, contextId, ctx.mCpuId, static_cast<uint8_t>(ctx.mThreadPriority), shdfnd::Time::getCurrentCounterValue() );
- }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint64_t contextId, uint32_t threadId)
- {
- startEvent( inId, threadId, contextId, 0, 0, shdfnd::Time::getCurrentCounterValue() );
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t inTimestamp)
- {
- TScopedLockType lock(TBaseType::mBufferMutex);
- if ( mEventFilter.isEventEnabled( inId ) )
- {
- StopEvent theEvent;
- theEvent.init( threadId, contextId, cpuId, threadPriority, inTimestamp );
- doAddProfileEvent( inId, theEvent );
- }
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint64_t contextId)
- {
- PxProfileEventExecutionContext ctx( mContextProvider.getExecutionContext() );
- stopEvent( inId, ctx.mThreadId, contextId, ctx.mCpuId, static_cast<uint8_t>(ctx.mThreadPriority), shdfnd::Time::getCurrentCounterValue() );
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint64_t contextId, uint32_t threadId)
- {
- stopEvent( inId, threadId, contextId, 0, 0, shdfnd::Time::getCurrentCounterValue() );
- }
-
- inline void eventValue( uint16_t inId, uint64_t contextId, int64_t inValue )
- {
- eventValue( inId, mContextProvider.getThreadId(), contextId, inValue );
- }
-
- inline void eventValue( uint16_t inId, uint32_t threadId, uint64_t contextId, int64_t inValue )
- {
- TScopedLockType lock( TBaseType::mBufferMutex );
- EventValue theEvent;
- theEvent.init( inValue, contextId, threadId );
- EventHeader theHeader( static_cast<uint8_t>( getEventType<EventValue>() ), inId );
- //set the header relative timestamp;
- EventValue& theType( theEvent );
- theType.setupHeader( theHeader );
- sendEvent( theHeader, theType );
- }
-
- void flushProfileEvents()
- {
- TBaseType::flushEvents();
- }
-
- void release()
- {
- PX_PROFILE_DELETE( TBaseType::mWrapper.mUserFoundation, this );
- }
- protected:
- //Clears the cache meaning event compression
- //starts over again.
- //only called when the buffer mutex is held
- void clearCachedData()
- {
- mEventContextInformation.setToDefault();
- mLastTimestamp = 0;
- }
-
- template<typename TProfileEventType>
- PX_FORCE_INLINE void doAddProfileEvent(uint16_t eventId, const TProfileEventType& inType)
- {
- TScopedLockType lock(TBaseType::mBufferMutex);
- if (mEventContextInformation == inType.mContextInformation)
- doAddEvent(static_cast<uint8_t>(inType.getRelativeEventType()), eventId, inType.getRelativeEvent());
- else
- {
- mEventContextInformation = inType.mContextInformation;
- doAddEvent( static_cast<uint8_t>( getEventType<TProfileEventType>() ), eventId, inType );
- }
- }
-
- template<typename TDataType>
- PX_FORCE_INLINE void doAddEvent(uint8_t inEventType, uint16_t eventId, const TDataType& inType)
- {
- EventHeader theHeader( inEventType, eventId );
- //set the header relative timestamp;
- TDataType& theType( const_cast<TDataType&>( inType ) );
- uint64_t currentTs = inType.getTimestamp();
- theType.setupHeader(theHeader, mLastTimestamp);
- mLastTimestamp = currentTs;
- sendEvent( theHeader, theType );
- }
-
- template<typename TDataType>
- PX_FORCE_INLINE void sendEvent( EventHeader& inHeader, TDataType& inType )
- {
- uint32_t sizeToWrite = sizeof(inHeader) + inType.getEventSize(inHeader);
- PX_UNUSED(sizeToWrite);
-
- uint32_t writtenSize = inHeader.streamify( TBaseType::mSerializer );
- writtenSize += inType.streamify(TBaseType::mSerializer, inHeader);
-
- PX_ASSERT(writtenSize == sizeToWrite);
-
- if ( TBaseType::mDataArray.size() >= TBaseType::mBufferFullAmount )
- flushProfileEvents();
-
- }
-
- };
-}}
-#endif // PXPVDSDK_PXPROFILEEVENTBUFFER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventBufferAtomic.h b/PxShared/src/pvd/src/PxProfileEventBufferAtomic.h
deleted file mode 100644
index f87839f..0000000
--- a/PxShared/src/pvd/src/PxProfileEventBufferAtomic.h
+++ /dev/null
@@ -1,320 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEEVENTBUFFERATOMIC_H
-#define PXPVDSDK_PXPROFILEEVENTBUFFERATOMIC_H
-
-#include "PxProfileEvents.h"
-#include "PxProfileEventSerialization.h"
-#include "PxProfileEventSystem.h"
-#include "PxProfileDataBuffer.h"
-#include "PxProfileContextProvider.h"
-
-#include "PsArray.h"
-#include "PsAlloca.h"
-#include "PsTime.h"
-#include "PsCpu.h"
-#include "PsAtomic.h"
-#include "PsAllocator.h"
-
-
-namespace physx {
- namespace profile {
-
- static const uint32_t LOCAL_BUFFER_SIZE = 512;
-
- /**
- * An event buffer maintains an in-memory buffer of events. When this buffer is full
- * it sends to buffer to all handlers registered and resets the buffer.
- *
- * It is parameterized in four ways. The first is a context provider that provides
- * both thread id and context id.
- *
- * The second is the mutex (which may be null) and a scoped locking mechanism. Thus the buffer
- * may be used in a multithreaded context but clients of the buffer don't pay for this if they
- * don't intend to use it this way.
- *
- * Finally the buffer may use an event filtering mechanism. This mechanism needs one function,
- * namely isEventEnabled( uint8_t subsystem, uint8_t eventId ).
- *
- * All of these systems can be parameterized at compile time leading to an event buffer
- * that should be as fast as possible given the constraints.
- *
- * Buffers may be chained together as this buffer has a handleBufferFlush method that
- * will grab the mutex and add the data to this event buffer.
- *
- * Overall, lets look at the PhysX SDK an how all the pieces fit together.
- * The SDK should have a mutex-protected event buffer where actual devs or users of PhysX
- * can register handlers. This buffer has slow but correct implementations of the
- * context provider interface.
- *
- * The SDK object should also have a concrete event filter which was used in the
- * construction of the event buffer and which it exposes through opaque interfaces.
- *
- * The SDK should protect its event buffer and its event filter from multithreaded
- * access and thus this provides the safest and slowest way to log events and to
- * enable/disable events.
- *
- * Each scene should also have a concrete event filter. This filter is updated from
- * the SDK event filter (in a mutex protected way) every frame. Thus scenes can change
- * their event filtering on a frame-by-frame basis. It means that tasks running
- * under the scene don't need a mutex when accessing the filter.
- *
- * Furthermore the scene should have an event buffer that always sets the context id
- * on each event to the scene. This allows PVD and other systems to correlate events
- * to scenes. Scenes should provide access only to a relative event sending system
- * that looks up thread id upon each event but uses the scene id.
- *
- * The SDK's event buffer should be setup as an EventBufferClient for each scene's
- * event buffer. Thus the SDK should expose an EventBufferClient interface that
- * any client can use.
- *
- * For extremely *extremely* performance sensitive areas we should create a specialized
- * per-scene, per-thread event buffer that is set on the task for these occasions. This buffer
- * uses a trivial event context setup with the scene's context id and the thread id. It should
- * share the scene's concrete event filter and it should have absolutely no locking. It should
- * empty into the scene's event buffer which in some cases should empty into the SDK's event buffer
- * which when full will push events all the way out of the system. The task should *always* flush
- * the event buffer (if it has one) when it is finished; nothing else will work reliably.
- *
- * If the per-scene,per-thread event buffer is correctly parameterized and fully defined adding
- * a new event should be an inline operation requiring no mutex grabs in the common case. I don't
- * believe you can get faster event production than this; the events are as small as possible (all
- * relative events) and they are all produced inline resulting in one 4 byte header and one
- * 8 byte timestamp per event. Reducing the memory pressure in this way reduces the communication
- * overhead, the mutex grabs, basically everything that makes profiling expensive at the cost
- * of a per-scene,per-thread event buffer (which could easily be reduced to a per-thread event
- * buffer.
- */
- template<typename TContextProvider,
- typename TMutex,
- typename TScopedLock,
- typename TEventFilter>
- class EventBufferAtomic : public DataBuffer < TMutex, TScopedLock >
- {
- public:
- typedef DataBuffer<TMutex, TScopedLock> TBaseType;
- typedef TContextProvider TContextProviderType;
- typedef TEventFilter TEventFilterType;
- typedef typename TBaseType::TMutexType TMutexType;
- typedef typename TBaseType::TScopedLockType TScopedLockType;
- typedef typename TBaseType::TU8AllocatorType TU8AllocatorType;
- typedef typename TBaseType::TMemoryBufferType TMemoryBufferType;
- typedef typename TBaseType::TBufferClientArray TBufferClientArray;
-
- private:
- TContextProvider mContextProvider;
- TEventFilterType mEventFilter;
- volatile int32_t mReserved;
- volatile int32_t mWritten;
-
- public:
- EventBufferAtomic(PxAllocatorCallback* inFoundation
- , uint32_t inBufferFullAmount
- , const TContextProvider& inProvider
- , TMutexType* inBufferMutex
- , const TEventFilterType& inEventFilter)
- : TBaseType(inFoundation, inBufferFullAmount, inBufferMutex, "struct physx::profile::ProfileEvent")
- , mContextProvider(inProvider)
- , mEventFilter(inEventFilter)
- , mReserved(0)
- , mWritten(0)
- {
- }
-
- TContextProvider& getContextProvider() { return mContextProvider; }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t inTimestamp)
- {
- if (mEventFilter.isEventEnabled(inId))
- {
- StartEvent theEvent;
- theEvent.init(threadId, contextId, cpuId, threadPriority, inTimestamp);
- doAddProfileEvent(inId, theEvent);
- }
- }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint64_t contextId)
- {
- PxProfileEventExecutionContext ctx(mContextProvider.getExecutionContext());
- startEvent(inId, ctx.mThreadId, contextId, ctx.mCpuId, static_cast<uint8_t>(ctx.mThreadPriority), shdfnd::Time::getCurrentCounterValue());
- }
-
- PX_FORCE_INLINE void startEvent(uint16_t inId, uint64_t contextId, uint32_t threadId)
- {
- startEvent(inId, threadId, contextId, 0, 0, shdfnd::Time::getCurrentCounterValue());
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t inTimestamp)
- {
- if (mEventFilter.isEventEnabled(inId))
- {
- StopEvent theEvent;
- theEvent.init(threadId, contextId, cpuId, threadPriority, inTimestamp);
- doAddProfileEvent(inId, theEvent);
- }
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint64_t contextId)
- {
- PxProfileEventExecutionContext ctx(mContextProvider.getExecutionContext());
- stopEvent(inId, ctx.mThreadId, contextId, ctx.mCpuId, static_cast<uint8_t>(ctx.mThreadPriority), shdfnd::Time::getCurrentCounterValue());
- }
-
- PX_FORCE_INLINE void stopEvent(uint16_t inId, uint64_t contextId, uint32_t threadId)
- {
- stopEvent(inId, threadId, contextId, 0, 0, shdfnd::Time::getCurrentCounterValue());
- }
-
- inline void eventValue(uint16_t inId, uint64_t contextId, int64_t inValue)
- {
- eventValue(inId, mContextProvider.getThreadId(), contextId, inValue);
- }
-
- inline void eventValue(uint16_t inId, uint32_t threadId, uint64_t contextId, int64_t inValue)
- {
- EventValue theEvent;
- theEvent.init(inValue, contextId, threadId);
- EventHeader theHeader(static_cast<uint8_t>(getEventType<EventValue>()), inId);
- //set the header relative timestamp;
- EventValue& theType(theEvent);
- theType.setupHeader(theHeader);
-
- int32_t sizeToWrite = int32_t(sizeof(theHeader) + theType.getEventSize(theHeader));
- int32_t reserved = shdfnd::atomicAdd(&mReserved, sizeToWrite);
- sendEvent(theHeader, theType, reserved, sizeToWrite);
- }
-
- void flushProfileEvents(int32_t reserved = -1)
- {
- TScopedLockType lock(TBaseType::mBufferMutex);
-
- // set the buffer full to lock additional writes
- int32_t reservedOld = shdfnd::atomicExchange(&mReserved, int32_t(TBaseType::mBufferFullAmount + 1));
- if (reserved == -1)
- reserved = reservedOld;
-
- // spin till we have written all the data
- while (reserved > mWritten)
- {
- }
-
- // check if we have written all data
- PX_ASSERT(reserved == mWritten);
-
- // set the correct size of the serialization data buffer
- TBaseType::mSerializer.mArray->setEnd(TBaseType::mSerializer.mArray->begin() + mWritten);
-
- // flush events
- TBaseType::flushEvents();
-
- // write master timestamp and set reserved/written to start writing to buffer again
- mWritten = 0;
- mReserved = 0;
- }
-
- void release()
- {
- PX_PROFILE_DELETE(TBaseType::mWrapper.mUserFoundation, this);
- }
- protected:
- //Clears the cache meaning event compression
- //starts over again.
- //only called when the buffer mutex is held
- void clearCachedData()
- {
- }
-
- template<typename TProfileEventType>
- PX_FORCE_INLINE void doAddProfileEvent(uint16_t eventId, const TProfileEventType& inType)
- {
- doAddEvent(static_cast<uint8_t>(getEventType<TProfileEventType>()), eventId, inType);
- }
-
- template<typename TDataType>
- PX_FORCE_INLINE void doAddEvent(uint8_t inEventType, uint16_t eventId, const TDataType& inType)
- {
- EventHeader theHeader(inEventType, eventId);
- TDataType& theType(const_cast<TDataType&>(inType));
- theType.setupHeader(theHeader, 0);
-
- const int32_t sizeToWrite = int32_t(sizeof(theHeader) + theType.getEventSize(theHeader));
-
- int32_t reserved = shdfnd::atomicAdd(&mReserved, sizeToWrite);
- sendEvent(theHeader, theType, reserved, sizeToWrite);
- }
-
- template<typename TDataType>
- PX_FORCE_INLINE void sendEvent(EventHeader& inHeader, TDataType& inType, int32_t reserved, int32_t sizeToWrite)
- {
- // if we don't fit to the buffer, we wait till it is flushed
- if (reserved - sizeToWrite >= int32_t(TBaseType::mBufferFullAmount))
- {
- while (reserved - sizeToWrite >= int32_t(TBaseType::mBufferFullAmount))
- {
- // I32 overflow
- if (mReserved < int32_t(TBaseType::mBufferFullAmount))
- {
- reserved = shdfnd::atomicAdd(&mReserved, sizeToWrite);
- }
- }
- }
-
- int32_t writeIndex = reserved - sizeToWrite;
- uint32_t writtenSize = 0;
-
- PX_ASSERT(writeIndex >= 0);
-
- PX_ALLOCA(tempBuffer, uint8_t, sizeToWrite);
- TempMemoryBuffer memoryBuffer(tempBuffer, sizeToWrite);
- EventSerializer<TempMemoryBuffer> eventSerializer(&memoryBuffer);
-
- writtenSize = inHeader.streamify(eventSerializer);
- writtenSize += inType.streamify(eventSerializer, inHeader);
-
- TBaseType::mSerializer.mArray->reserve(writeIndex + writtenSize);
- TBaseType::mSerializer.mArray->write(&tempBuffer[0], writtenSize, writeIndex);
-
- PX_ASSERT(writtenSize == uint32_t(sizeToWrite));
- shdfnd::atomicAdd(&mWritten, sizeToWrite);
-
- if (reserved >= int32_t(TBaseType::mBufferFullAmount))
- {
- TScopedLockType lock(TBaseType::mBufferMutex);
- // we flush the buffer if its full and we did not flushed him in the meantime
- if(mReserved >= reserved)
- flushProfileEvents(reserved);
- }
- }
-
- };
- }
-}
-#endif // PXPVDSDK_PXPROFILEEVENTBUFFERATOMIC_H
diff --git a/PxShared/src/pvd/src/PxProfileEventBufferClient.h b/PxShared/src/pvd/src/PxProfileEventBufferClient.h
deleted file mode 100644
index d8a1ff2..0000000
--- a/PxShared/src/pvd/src/PxProfileEventBufferClient.h
+++ /dev/null
@@ -1,81 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTBUFFERCLIENT_H
-#define PXPVDSDK_PXPROFILEEVENTBUFFERCLIENT_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventNames.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Client handles the data when an event buffer flushes. This data
- can be parsed (PxProfileEventHandler.h) as a binary set of events.
- */
- class PxProfileEventBufferClient
- {
- protected:
- virtual ~PxProfileEventBufferClient(){}
- public:
- /**
- \brief Callback when the event buffer is full. This data is serialized profile events
- and can be read back using: PxProfileEventHandler::parseEventBuffer.
-
- \param inData Provided buffer data.
- \param inLength Data length.
-
- @see PxProfileEventHandler::parseEventBuffer.
- */
- virtual void handleBufferFlush( const uint8_t* inData, uint32_t inLength ) = 0;
-
- /**
- \brief Happens if something removes all the clients from the manager.
- */
- virtual void handleClientRemoved() = 0;
- };
-
- /**
- \brief Client handles new profile event add.
- */
- class PxProfileZoneClient : public PxProfileEventBufferClient
- {
- protected:
- virtual ~PxProfileZoneClient(){}
- public:
- /**
- \brief Callback when new profile event is added.
-
- \param inName Added profile event name.
- */
- virtual void handleEventAdded( const PxProfileEventName& inName ) = 0;
- };
-
-} }
-
-
-#endif // PXPVDSDK_PXPROFILEEVENTBUFFERCLIENT_H
diff --git a/PxShared/src/pvd/src/PxProfileEventBufferClientManager.h b/PxShared/src/pvd/src/PxProfileEventBufferClientManager.h
deleted file mode 100644
index 1402183..0000000
--- a/PxShared/src/pvd/src/PxProfileEventBufferClientManager.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTBUFFERCLIENTMANAGER_H
-#define PXPVDSDK_PXPROFILEEVENTBUFFERCLIENTMANAGER_H
-
-#include "PxProfileEventBufferClient.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Manager keep collections of PxProfileEventBufferClient clients.
-
- @see PxProfileEventBufferClient
- */
- class PxProfileEventBufferClientManager
- {
- protected:
- virtual ~PxProfileEventBufferClientManager(){}
- public:
- /**
- \brief Adds new client.
- \param inClient Client to add.
- */
- virtual void addClient( PxProfileEventBufferClient& inClient ) = 0;
-
- /**
- \brief Removes a client.
- \param inClient Client to remove.
- */
- virtual void removeClient( PxProfileEventBufferClient& inClient ) = 0;
-
- /**
- \brief Check if manager has clients.
- \return True if manager has added clients.
- */
- virtual bool hasClients() const = 0;
- };
-
- /**
- \brief Manager keep collections of PxProfileZoneClient clients.
-
- @see PxProfileZoneClient
- */
- class PxProfileZoneClientManager
- {
- protected:
- virtual ~PxProfileZoneClientManager(){}
- public:
- /**
- \brief Adds new client.
- \param inClient Client to add.
- */
- virtual void addClient( PxProfileZoneClient& inClient ) = 0;
-
- /**
- \brief Removes a client.
- \param inClient Client to remove.
- */
- virtual void removeClient( PxProfileZoneClient& inClient ) = 0;
-
- /**
- \brief Check if manager has clients.
- \return True if manager has added clients.
- */
- virtual bool hasClients() const = 0;
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTBUFFERCLIENTMANAGER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventFilter.h b/PxShared/src/pvd/src/PxProfileEventFilter.h
deleted file mode 100644
index 0f38d65..0000000
--- a/PxShared/src/pvd/src/PxProfileEventFilter.h
+++ /dev/null
@@ -1,93 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTFILTER_H
-#define PXPVDSDK_PXPROFILEEVENTFILTER_H
-
-#include "foundation/PxAssert.h"
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Called upon every event to give a quick-out before adding the event
- to the event buffer.
-
- \note: not thread safe, can be called from different threads at the same time
- */
- class PxProfileEventFilter
- {
- protected:
- virtual ~PxProfileEventFilter(){}
- public:
- /**
- \brief Disabled events will not go into the event buffer and will not be
- transmitted to clients.
- \param inId Profile event id.
- \param isEnabled True if event should be enabled.
- */
- virtual void setEventEnabled( const PxProfileEventId& inId, bool isEnabled ) = 0;
-
- /**
- \brief Returns the current state of the profile event.
- \return True if profile event is enabled.
- */
- virtual bool isEventEnabled( const PxProfileEventId& inId ) const = 0;
- };
-
- /**
- \brief Forwards the filter requests to another event filter.
- */
- template<typename TFilterType>
- struct PxProfileEventFilterForward
- {
- /**
- \brief Default constructor.
- */
- PxProfileEventFilterForward( TFilterType* inFilter ) : filter( inFilter ) {}
-
- /**
- \brief Disabled events will not go into the event buffer and will not be
- transmitted to clients.
- \param inId Profile event id.
- \param isEnabled True if event should be enabled.
- */
- void setEventEnabled( const PxProfileEventId& inId, bool isEnabled ) { filter->setEventEnabled( inId, isEnabled ); }
-
- /**
- \brief Returns the current state of the profile event.
- \return True if profile event is enabled.
- */
- bool isEventEnabled( const PxProfileEventId& inId ) const { return filter->isEventEnabled( inId ); }
-
- TFilterType* filter;
- };
-
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTFILTER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventHandler.h b/PxShared/src/pvd/src/PxProfileEventHandler.h
deleted file mode 100644
index 0e0f0f9..0000000
--- a/PxShared/src/pvd/src/PxProfileEventHandler.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTHANDLER_H
-#define PXPVDSDK_PXPROFILEEVENTHANDLER_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief A client of the event system can expect to find these events in the event buffer.
- */
- class PxProfileEventHandler
- {
- protected:
- virtual ~PxProfileEventHandler(){}
- public:
- /**
- \brief Event start - onStartEvent.
-
- \param[in] inId Profile event id.
- \param[in] threadId Thread id.
- \param[in] contextId Context id.
- \param[in] cpuId CPU id.
- \param[in] threadPriority Thread priority.
- \param[in] timestamp Timestamp in cycles.
- */
- virtual void onStartEvent( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t timestamp ) = 0;
-
- /**
- \brief Event stop - onStopEvent.
-
- \param[in] inId Profile event id.
- \param[in] threadId Thread id.
- \param[in] contextId Context id.
- \param[in] cpuId CPU id.
- \param[in] threadPriority Thread priority.
- \param[in] timestamp Timestamp in cycles.
- */
- virtual void onStopEvent( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t timestamp ) = 0;
-
- /**
- \brief Event value - onEventValue.
-
- \param[in] inId Profile event id.
- \param[in] threadId Thread id.
- \param[in] contextId Context id.
- \param[in] inValue Value.
- */
- virtual void onEventValue( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, int64_t inValue ) = 0;
-
- /**
- \brief Parse the flushed profile buffer which contains the profile events.
-
- \param[in] inBuffer The profile buffer with profile events.
- \param[in] inBufferSize Buffer size.
- \param[in] inHandler The profile event callback to receive the parsed events.
- \param[in] inSwapBytes Swap bytes possibility.
- */
- static void parseEventBuffer( const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileEventHandler& inHandler, bool inSwapBytes );
-
- /**
- \brief Translates event duration in timestamp (cycles) into nanoseconds.
-
- \param[in] duration Timestamp duration of the event.
-
- \return event duration in nanoseconds.
- */
- static uint64_t durationToNanoseconds(uint64_t duration);
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTHANDLER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventId.h b/PxShared/src/pvd/src/PxProfileEventId.h
deleted file mode 100644
index dd98cd5..0000000
--- a/PxShared/src/pvd/src/PxProfileEventId.h
+++ /dev/null
@@ -1,80 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTID_H
-#define PXPVDSDK_PXPROFILEEVENTID_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
- /**
- \brief A event id structure. Optionally includes information about
- if the event was enabled at compile time.
- */
- struct PxProfileEventId
- {
- uint16_t eventId;
- mutable bool compileTimeEnabled;
-
- /**
- \brief Profile event id constructor.
- \param inId Profile event id.
- \param inCompileTimeEnabled Compile time enabled.
- */
- PxProfileEventId( uint16_t inId = 0, bool inCompileTimeEnabled = true )
- : eventId( inId )
- , compileTimeEnabled( inCompileTimeEnabled )
- {
- }
-
- operator uint16_t () const { return eventId; }
-
- bool operator==( const PxProfileEventId& inOther ) const
- {
- return eventId == inOther.eventId;
- }
- };
-
- /**
- \brief Template event id structure.
- */
- template<bool TEnabled>
- struct PxProfileCompileTimeFilteredEventId : public PxProfileEventId
- {
- /**
- \brief Constructor.
- \param inId Profile event id.
- */
- PxProfileCompileTimeFilteredEventId( uint16_t inId = 0 )
- : PxProfileEventId( inId, TEnabled )
- {
- }
- };
-
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTID_H
diff --git a/PxShared/src/pvd/src/PxProfileEventImpl.cpp b/PxShared/src/pvd/src/PxProfileEventImpl.cpp
deleted file mode 100644
index a519f92..0000000
--- a/PxShared/src/pvd/src/PxProfileEventImpl.cpp
+++ /dev/null
@@ -1,230 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#include "foundation/PxErrorCallback.h"
-#include "foundation/PxAllocatorCallback.h"
-
-#include "PxProfileEvents.h"
-#include "PxProfileEventSerialization.h"
-#include "PxProfileEventBuffer.h"
-#include "PxProfileZoneImpl.h"
-#include "PxProfileZoneManagerImpl.h"
-#include "PxProfileEventParser.h"
-#include "PxProfileEventHandler.h"
-#include "PxProfileScopedMutexLock.h"
-#include "PxProfileEventFilter.h"
-#include "PxProfileContextProvider.h"
-#include "PxProfileEventMutex.h"
-#include "PxProfileMemoryEventTypes.h"
-#include "PxProfileMemoryEventRecorder.h"
-#include "PxProfileMemoryEventBuffer.h"
-#include "PxProfileMemoryEventParser.h"
-#include "PxProfileContextProviderImpl.h"
-
-#include "PsUserAllocated.h"
-#include "PsTime.h"
-
-#include <stdio.h>
-
-namespace physx { namespace profile {
-
-
- uint64_t PxProfileEventHandler::durationToNanoseconds(uint64_t duration)
- {
- return shdfnd::Time::getBootCounterFrequency().toTensOfNanos(duration) * 10;
- }
-
- void PxProfileEventHandler::parseEventBuffer( const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileEventHandler& inHandler, bool inSwapBytes )
- {
- if ( inSwapBytes == false )
- parseEventData<false>( inBuffer, inBufferSize, &inHandler );
- else
- parseEventData<true>( inBuffer, inBufferSize, &inHandler );
- }
-
- template<uint32_t TNumEvents>
- struct ProfileBulkEventHandlerBuffer
- {
- Event mEvents[TNumEvents];
- uint32_t mEventCount;
- PxProfileBulkEventHandler* mHandler;
- ProfileBulkEventHandlerBuffer( PxProfileBulkEventHandler* inHdl )
- : mEventCount( 0 )
- , mHandler( inHdl )
- {
- }
- void onEvent( const Event& inEvent )
- {
- mEvents[mEventCount] = inEvent;
- ++mEventCount;
- if ( mEventCount == TNumEvents )
- flush();
- }
- void onEvent( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t timestamp, EventTypes::Enum inType )
- {
- StartEvent theEvent;
- theEvent.init( threadId, contextId, cpuId, static_cast<uint8_t>( threadPriority ), timestamp );
- onEvent( Event( EventHeader( static_cast<uint8_t>( inType ), inId.eventId ), theEvent ) );
- }
- void onStartEvent( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t timestamp )
- {
- onEvent( inId, threadId, contextId, cpuId, threadPriority, timestamp, EventTypes::StartEvent );
- }
- void onStopEvent( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, uint8_t cpuId, uint8_t threadPriority, uint64_t timestamp )
- {
- onEvent( inId, threadId, contextId, cpuId, threadPriority, timestamp, EventTypes::StopEvent );
- }
- void onEventValue( const PxProfileEventId& inId, uint32_t threadId, uint64_t contextId, int64_t value )
- {
- EventValue theEvent;
- theEvent.init( value, contextId, threadId );
- onEvent( Event( inId.eventId, theEvent ) );
- }
- void flush()
- {
- if ( mEventCount )
- mHandler->handleEvents( mEvents, mEventCount );
- mEventCount = 0;
- }
- };
-
-
- void PxProfileBulkEventHandler::parseEventBuffer( const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileBulkEventHandler& inHandler, bool inSwapBytes )
- {
- ProfileBulkEventHandlerBuffer<256> hdler( &inHandler );
- if ( inSwapBytes )
- parseEventData<true>( inBuffer, inBufferSize, &hdler );
- else
- parseEventData<false>( inBuffer, inBufferSize, &hdler );
- hdler.flush();
- }
-
- struct PxProfileNameProviderImpl
- {
- PxProfileNameProvider* mImpl;
- PxProfileNameProviderImpl( PxProfileNameProvider* inImpl )
- : mImpl( inImpl )
- {
- }
- PxProfileNames getProfileNames() const { return mImpl->getProfileNames(); }
- };
-
-
- struct PxProfileNameProviderForward
- {
- PxProfileNames mNames;
- PxProfileNameProviderForward( PxProfileNames inNames )
- : mNames( inNames )
- {
- }
- PxProfileNames getProfileNames() const { return mNames; }
- };
-
-
- PX_FOUNDATION_API PxProfileZone& PxProfileZone::createProfileZone( PxAllocatorCallback* inAllocator, const char* inSDKName, PxProfileNames inNames, uint32_t inEventBufferByteSize )
- {
- typedef ZoneImpl<PxProfileNameProviderForward> TSDKType;
- return *PX_PROFILE_NEW( inAllocator, TSDKType ) ( inAllocator, inSDKName, inEventBufferByteSize, PxProfileNameProviderForward( inNames ) );
- }
-
- PxProfileZoneManager& PxProfileZoneManager::createProfileZoneManager(PxAllocatorCallback* inAllocator )
- {
- return *PX_PROFILE_NEW( inAllocator, ZoneManagerImpl ) ( inAllocator );
- }
-
- PxProfileMemoryEventRecorder& PxProfileMemoryEventRecorder::createRecorder( PxAllocatorCallback* inAllocator )
- {
- return *PX_PROFILE_NEW( inAllocator, PxProfileMemoryEventRecorderImpl )( inAllocator );
- }
-
- PxProfileMemoryEventBuffer& PxProfileMemoryEventBuffer::createMemoryEventBuffer( PxAllocatorCallback& inAllocator, uint32_t inBufferSize )
- {
- return *PX_PROFILE_NEW( &inAllocator, PxProfileMemoryEventBufferImpl )( inAllocator, inBufferSize );
- }
- template<uint32_t TNumEvents>
- struct ProfileBulkMemoryEventHandlerBuffer
- {
- PxProfileBulkMemoryEvent mEvents[TNumEvents];
- uint32_t mEventCount;
- PxProfileBulkMemoryEventHandler* mHandler;
- ProfileBulkMemoryEventHandlerBuffer( PxProfileBulkMemoryEventHandler* inHdl )
- : mEventCount( 0 )
- , mHandler( inHdl )
- {
- }
- void onEvent( const PxProfileBulkMemoryEvent& evt )
- {
- mEvents[mEventCount] = evt;
- ++mEventCount;
- if ( mEventCount == TNumEvents )
- flush();
- }
-
- template<typename TDataType>
- void operator()( const MemoryEventHeader&, const TDataType& ) {}
-
- void operator()( const MemoryEventHeader&, const AllocationEvent& evt )
- {
- onEvent( PxProfileBulkMemoryEvent( evt.mSize, evt.mType, evt.mFile, evt.mLine, evt.mAddress ) );
- }
-
- void operator()( const MemoryEventHeader&, const DeallocationEvent& evt )
- {
- onEvent( PxProfileBulkMemoryEvent( evt.mAddress ) );
- }
-
- void flush()
- {
- if ( mEventCount )
- mHandler->handleEvents( mEvents, mEventCount );
- mEventCount = 0;
- }
- };
-
- void PxProfileBulkMemoryEventHandler::parseEventBuffer( const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileBulkMemoryEventHandler& inHandler, bool inSwapBytes, PxAllocatorCallback* inAlloc )
- {
- PX_ASSERT(inAlloc);
-
- ProfileBulkMemoryEventHandlerBuffer<0x1000>* theBuffer = PX_PROFILE_NEW(inAlloc, ProfileBulkMemoryEventHandlerBuffer<0x1000>)(&inHandler);
-
- if ( inSwapBytes )
- {
- MemoryEventParser<true> theParser( *inAlloc );
- theParser.parseEventData( inBuffer, inBufferSize, theBuffer );
- }
- else
- {
- MemoryEventParser<false> theParser( *inAlloc );
- theParser.parseEventData( inBuffer, inBufferSize, theBuffer );
- }
- theBuffer->flush();
-
- PX_PROFILE_DELETE(*inAlloc, theBuffer);
- }
-
-} }
-
diff --git a/PxShared/src/pvd/src/PxProfileEventMutex.h b/PxShared/src/pvd/src/PxProfileEventMutex.h
deleted file mode 100644
index 5ec837b..0000000
--- a/PxShared/src/pvd/src/PxProfileEventMutex.h
+++ /dev/null
@@ -1,63 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEEVENTMUTEX_H
-#define PXPVDSDK_PXPROFILEEVENTMUTEX_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
-
- /**
- * Mutex interface that hides implementation around lock and unlock.
- * The event system locks the mutex for every interaction.
- */
- class PxProfileEventMutex
- {
- protected:
- virtual ~PxProfileEventMutex(){}
- public:
- virtual void lock() = 0;
- virtual void unlock() = 0;
- };
-
- /**
- * Take any mutex type that implements lock and unlock and make an EventMutex out of it.
- */
- template<typename TMutexType>
- struct PxProfileEventMutexImpl : public PxProfileEventMutex
- {
- TMutexType* mMutex;
- PxProfileEventMutexImpl( TMutexType* inMtx ) : mMutex( inMtx ) {}
- virtual void lock() { mMutex->lock(); }
- virtual void unlock() { mMutex->unlock(); }
- };
-
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTMUTEX_H
diff --git a/PxShared/src/pvd/src/PxProfileEventNames.h b/PxShared/src/pvd/src/PxProfileEventNames.h
deleted file mode 100644
index 831da20..0000000
--- a/PxShared/src/pvd/src/PxProfileEventNames.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTNAMES_H
-#define PXPVDSDK_PXPROFILEEVENTNAMES_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Mapping from event id to name.
- */
- struct PxProfileEventName
- {
- const char* name;
- PxProfileEventId eventId;
-
- /**
- \brief Default constructor.
- \param inName Profile event name.
- \param inId Profile event id.
- */
- PxProfileEventName( const char* inName, PxProfileEventId inId ) : name( inName ), eventId( inId ) {}
- };
-
- /**
- \brief Aggregator of event id -> name mappings
- */
- struct PxProfileNames
- {
- /**
- \brief Default constructor that doesn't point to any names.
- \param inEventCount Number of provided events.
- \param inSubsystems Event names array.
- */
- PxProfileNames( uint32_t inEventCount = 0, const PxProfileEventName* inSubsystems = NULL )
- : eventCount( inEventCount )
- , events( inSubsystems )
- {
- }
-
- uint32_t eventCount;
- const PxProfileEventName* events;
- };
-
- /**
- \brief Provides a mapping from event ID -> name.
- */
- class PxProfileNameProvider
- {
- public:
- /**
- \brief Returns profile event names.
- \return Profile event names.
- */
- virtual PxProfileNames getProfileNames() const = 0;
-
- protected:
- virtual ~PxProfileNameProvider(){}
- PxProfileNameProvider& operator=(const PxProfileNameProvider&) { return *this; }
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTNAMES_H
diff --git a/PxShared/src/pvd/src/PxProfileEventParser.h b/PxShared/src/pvd/src/PxProfileEventParser.h
deleted file mode 100644
index 60aebdc..0000000
--- a/PxShared/src/pvd/src/PxProfileEventParser.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEEVENTPARSER_H
-#define PXPVDSDK_PXPROFILEEVENTPARSER_H
-
-#include "PxProfileEvents.h"
-#include "PxProfileEventSerialization.h"
-
-namespace physx { namespace profile {
-
- struct EventParserData
- {
- EventContextInformation mContextInformation;
- uint64_t mLastTimestamp;
-
- EventParserData() : mLastTimestamp(0)
- {
- }
- };
-
- //This object will be copied a lot so all of its important
- //data must be pointers.
- template<typename THandlerType, bool TSwapBytes>
- struct EventParseOperator
- {
- typedef EventDeserializer<TSwapBytes> TDeserializerType;
-
- EventParserData* mData;
- TDeserializerType* mDeserializer;
- EventHeader* mHeader;
- THandlerType* mHandler;
-
- EventParseOperator( EventParserData* inData, TDeserializerType* inDeserializer, EventHeader* inHeader, THandlerType* inHandler )
- : mData( inData )
- , mDeserializer( inDeserializer )
- , mHeader( inHeader )
- , mHandler( inHandler )
- {}
-
- template<typename TEventType>
- bool parse( TEventType& ioEvent )
- {
- ioEvent.streamify( *mDeserializer, *mHeader );
- bool success = mDeserializer->mFail == false;
- PX_ASSERT( success );
- return success;
- }
-
- bool parseHeader( EventHeader& ioEvent )
- {
- ioEvent.streamify( *mDeserializer );
- bool success = mDeserializer->mFail == false;
- PX_ASSERT( success );
- return success;
- }
-
- template<typename TEventType>
- bool handleProfileEvent( TEventType& evt )
- {
- bool retval = parse( evt );
- if ( retval )
- {
- mData->mContextInformation = evt.mContextInformation;
- handle( evt.getRelativeEvent(), evt.mContextInformation );
- }
- return retval;
- }
-
- template<typename TEventType>
- bool handleRelativeProfileEvent( TEventType& evt )
- {
- bool retval = parse( evt );
- if ( retval )
- handle( evt, mData->mContextInformation );
- return retval;
- }
-
- template<typename TRelativeEventType>
- void handle( const TRelativeEventType& evt, const EventContextInformation& inInfo )
- {
- mData->mLastTimestamp = mHeader->uncompressTimestamp( mData->mLastTimestamp, evt.getTimestamp());
- const_cast<TRelativeEventType&>(evt).setTimestamp( mData->mLastTimestamp );
- evt.handle( mHandler, mHeader->mEventId
- , inInfo.mThreadId
- , inInfo.mContextId
- , inInfo.mCpuId
- , inInfo.mThreadPriority );
- }
-
- bool operator()( const StartEvent& )
- {
- StartEvent evt;
- return handleProfileEvent( evt );
- }
- bool operator()( const StopEvent& )
- {
- StopEvent evt;
- return handleProfileEvent( evt );
- }
- bool operator()( const RelativeStartEvent& )
- {
- RelativeStartEvent evt;
- return handleRelativeProfileEvent( evt );
-
- }
- bool operator()( const RelativeStopEvent& )
- {
- RelativeStopEvent evt;
- return handleRelativeProfileEvent( evt );
- }
- bool operator()( const EventValue& )
- {
- EventValue evt;
- bool retval = parse( evt );
- if ( retval )
- {
- evt.mValue = mHeader->uncompressTimestamp( 0, evt.mValue );
- evt.handle( mHandler, mHeader->mEventId );
- }
- return retval;
- }
-
- //obsolete, placeholder to skip data from PhysX SDKs < 3.4
- bool operator()( const CUDAProfileBuffer& )
- {
- CUDAProfileBuffer evt;
- bool retval = parse( evt );
- return retval;
- }
-
- //Unknown event type.
- bool operator()(uint8_t )
- {
- PX_ASSERT( false );
- return false;
- }
- };
-
- template<bool TSwapBytes, typename THandlerType>
- inline bool parseEventData( const uint8_t* inData, uint32_t inLength, THandlerType* inHandler )
- {
- EventDeserializer<TSwapBytes> deserializer( inData, inLength );
- Event::EventData crapData;
- EventHeader theHeader;
- EventParserData theData;
- EventParseOperator<THandlerType,TSwapBytes> theOp( &theData, &deserializer, &theHeader, inHandler );
- while( deserializer.mLength && deserializer.mFail == false)
- {
- if ( theOp.parseHeader( theHeader ) )
- visit<bool>( static_cast<EventTypes::Enum>( theHeader.mEventType ), crapData, theOp );
- }
- return deserializer.mFail == false;
- }
-
- class PxProfileBulkEventHandler
- {
- protected:
- virtual ~PxProfileBulkEventHandler(){}
- public:
- virtual void handleEvents(const physx::profile::Event* inEvents, uint32_t inBufferSize) = 0;
- static void parseEventBuffer(const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileBulkEventHandler& inHandler, bool inSwapBytes);
- };
-}}
-
-#endif // PXPVDSDK_PXPROFILEEVENTPARSER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventSender.h b/PxShared/src/pvd/src/PxProfileEventSender.h
deleted file mode 100644
index 3c1cf5e..0000000
--- a/PxShared/src/pvd/src/PxProfileEventSender.h
+++ /dev/null
@@ -1,129 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTSENDER_H
-#define PXPVDSDK_PXPROFILEEVENTSENDER_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Tagging interface to indicate an object that is capable of flushing a profile
- event stream at a certain point.
- */
- class PxProfileEventFlusher
- {
- protected:
- virtual ~PxProfileEventFlusher(){}
- public:
- /**
- \brief Flush profile events. Sends the profile event buffer to hooked clients.
- */
- virtual void flushProfileEvents() = 0;
- };
-
- /**
- \brief Sends the full events where the caller must provide the context and thread id.
- */
- class PxProfileEventSender
- {
- protected:
- virtual ~PxProfileEventSender(){}
- public:
-
- /**
- \brief Use this as a thread id for events that start on one thread and end on another
- */
- static const uint32_t CrossThreadId = 99999789;
-
- /**
- \brief Send a start profile event, optionally with a context. Events are sorted by thread
- and context in the client side.
- \param inId Profile event id.
- \param contextId Context id.
- */
- virtual void startEvent( uint16_t inId, uint64_t contextId) = 0;
- /**
- \brief Send a stop profile event, optionally with a context. Events are sorted by thread
- and context in the client side.
- \param inId Profile event id.
- \param contextId Context id.
- */
- virtual void stopEvent( uint16_t inId, uint64_t contextId) = 0;
-
- /**
- \brief Send a start profile event, optionally with a context. Events are sorted by thread
- and context in the client side.
- \param inId Profile event id.
- \param contextId Context id.
- \param threadId Thread id.
- */
- virtual void startEvent( uint16_t inId, uint64_t contextId, uint32_t threadId) = 0;
- /**
- \brief Send a stop profile event, optionally with a context. Events are sorted by thread
- and context in the client side.
- \param inId Profile event id.
- \param contextId Context id.
- \param threadId Thread id.
- */
- virtual void stopEvent( uint16_t inId, uint64_t contextId, uint32_t threadId ) = 0;
-
- virtual void atEvent(uint16_t inId, uint64_t contextId, uint32_t threadId, uint64_t start, uint64_t stop) = 0;
-
- /**
- \brief Set an specific events value. This is different than the profiling value
- for the event; it is a value recorded and kept around without a timestamp associated
- with it. This value is displayed when the event itself is processed.
- \param inId Profile event id.
- \param contextId Context id.
- \param inValue Value to set for the event.
- */
- virtual void eventValue( uint16_t inId, uint64_t contextId, int64_t inValue ) = 0;
- };
-
- /**
- \brief Tagging interface to indicate an object that may or may not return
- an object capable of adding profile events to a buffer.
- */
- class PxProfileEventSenderProvider
- {
- protected:
- virtual ~PxProfileEventSenderProvider(){}
- public:
- /**
- \brief This method can *always* return NULL.
- Thus need to always check that what you are getting is what
- you think it is.
-
- \return Perhaps a profile event sender.
- */
- virtual PxProfileEventSender* getProfileEventSender() = 0;
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTSENDER_H
diff --git a/PxShared/src/pvd/src/PxProfileEventSerialization.h b/PxShared/src/pvd/src/PxProfileEventSerialization.h
deleted file mode 100644
index 07c0563..0000000
--- a/PxShared/src/pvd/src/PxProfileEventSerialization.h
+++ /dev/null
@@ -1,258 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEEVENTSERIALIZATION_H
-#define PXPVDSDK_PXPROFILEEVENTSERIALIZATION_H
-
-#include "PxProfileBase.h"
-#include "PxProfileDataParsing.h"
-#include "PxProfileEvents.h"
-
-namespace physx { namespace profile {
-
- /**
- * Array type must be a pxu8 container. Templated so that this object can write
- * to different collections.
- */
-
- template<typename TArrayType>
- struct EventSerializer
- {
- TArrayType* mArray;
- EventSerializer( TArrayType* inA ) : mArray( inA ) {}
-
- template<typename TDataType>
- uint32_t streamify( const char*, const TDataType& inType )
- {
- return mArray->write( inType );
- }
-
- uint32_t streamify( const char*, const char*& inType )
- {
- PX_ASSERT( inType != NULL );
- uint32_t len( static_cast<uint32_t>( strlen( inType ) ) );
- ++len; //include the null terminator
- uint32_t writtenSize = 0;
- writtenSize = mArray->write(len);
- writtenSize += mArray->write(inType, len);
- return writtenSize;
- }
-
- uint32_t streamify( const char*, const uint8_t* inData, uint32_t len )
- {
- uint32_t writtenSize = mArray->write(len);
- if ( len )
- writtenSize += mArray->write(inData, len);
- return writtenSize;
- }
-
- uint32_t streamify( const char* nm, const uint64_t& inType, EventStreamCompressionFlags::Enum inFlags )
- {
- uint32_t writtenSize = 0;
- switch( inFlags )
- {
- case EventStreamCompressionFlags::U8:
- writtenSize = streamify(nm, static_cast<uint8_t>(inType));
- break;
- case EventStreamCompressionFlags::U16:
- writtenSize = streamify(nm, static_cast<uint16_t>(inType));
- break;
- case EventStreamCompressionFlags::U32:
- writtenSize = streamify(nm, static_cast<uint32_t>(inType));
- break;
- case EventStreamCompressionFlags::U64:
- writtenSize = streamify(nm, inType);
- break;
- }
- return writtenSize;
- }
-
- uint32_t streamify( const char* nm, const uint32_t& inType, EventStreamCompressionFlags::Enum inFlags )
- {
- uint32_t writtenSize = 0;
- switch( inFlags )
- {
- case EventStreamCompressionFlags::U8:
- writtenSize = streamify(nm, static_cast<uint8_t>(inType));
- break;
- case EventStreamCompressionFlags::U16:
- writtenSize = streamify(nm, static_cast<uint16_t>(inType));
- break;
- case EventStreamCompressionFlags::U32:
- case EventStreamCompressionFlags::U64:
- writtenSize = streamify(nm, inType);
- break;
- }
- return writtenSize;
- }
- };
-
- /**
- * The event deserializes takes a buffer implements the streamify functions
- * by setting the passed in data to the data in the buffer.
- */
- template<bool TSwapBytes>
- struct EventDeserializer
- {
- const uint8_t* mData;
- uint32_t mLength;
- bool mFail;
-
- EventDeserializer( const uint8_t* inData, uint32_t inLength )
- : mData( inData )
- , mLength( inLength )
- , mFail( false )
- {
- if ( mData == NULL )
- mLength = 0;
- }
-
- bool val() { return TSwapBytes; }
-
- uint32_t streamify( const char* , uint8_t& inType )
- {
- uint8_t* theData = reinterpret_cast<uint8_t*>( &inType ); //type punned pointer...
- if ( mFail || sizeof( inType ) > mLength )
- {
- PX_ASSERT( false );
- mFail = true;
- }
- else
- {
- for( uint32_t idx = 0; idx < sizeof( uint8_t ); ++idx, ++mData, --mLength )
- theData[idx] = *mData;
- }
- return 0;
- }
-
- //default streamify reads things natively as bytes.
- template<typename TDataType>
- uint32_t streamify( const char* , TDataType& inType )
- {
- uint8_t* theData = reinterpret_cast<uint8_t*>( &inType ); //type punned pointer...
- if ( mFail || sizeof( inType ) > mLength )
- {
- PX_ASSERT( false );
- mFail = true;
- }
- else
- {
- for( uint32_t idx = 0; idx < sizeof( TDataType ); ++idx, ++mData, --mLength )
- theData[idx] = *mData;
- bool temp = val();
- if ( temp )
- BlockParseFunctions::swapBytes<sizeof(TDataType)>( theData );
- }
- return 0;
- }
-
- uint32_t streamify( const char*, const char*& inType )
- {
- uint32_t theLen;
- streamify( "", theLen );
- theLen = PxMin( theLen, mLength );
- inType = reinterpret_cast<const char*>( mData );
- mData += theLen;
- mLength -= theLen;
- return 0;
- }
-
- uint32_t streamify( const char*, const uint8_t*& inData, uint32_t& len )
- {
- uint32_t theLen;
- streamify( "", theLen );
- theLen = PxMin( theLen, mLength );
- len = theLen;
- inData = reinterpret_cast<const uint8_t*>( mData );
- mData += theLen;
- mLength -= theLen;
- return 0;
- }
-
- uint32_t streamify( const char* nm, uint64_t& inType, EventStreamCompressionFlags::Enum inFlags )
- {
- switch( inFlags )
- {
- case EventStreamCompressionFlags::U8:
- {
- uint8_t val=0;
- streamify( nm, val );
- inType = val;
- }
- break;
- case EventStreamCompressionFlags::U16:
- {
- uint16_t val;
- streamify( nm, val );
- inType = val;
- }
- break;
- case EventStreamCompressionFlags::U32:
- {
- uint32_t val;
- streamify( nm, val );
- inType = val;
- }
- break;
- case EventStreamCompressionFlags::U64:
- streamify( nm, inType );
- break;
- }
- return 0;
- }
-
- uint32_t streamify( const char* nm, uint32_t& inType, EventStreamCompressionFlags::Enum inFlags )
- {
- switch( inFlags )
- {
- case EventStreamCompressionFlags::U8:
- {
- uint8_t val=0;
- streamify( nm, val );
- inType = val;
- }
- break;
- case EventStreamCompressionFlags::U16:
- {
- uint16_t val=0;
- streamify( nm, val );
- inType = val;
- }
- break;
- case EventStreamCompressionFlags::U32:
- case EventStreamCompressionFlags::U64:
- streamify( nm, inType );
- break;
- }
- return 0;
- }
- };
-}}
-#endif // PXPVDSDK_PXPROFILEEVENTSERIALIZATION_H
diff --git a/PxShared/src/pvd/src/PxProfileEventSystem.h b/PxShared/src/pvd/src/PxProfileEventSystem.h
deleted file mode 100644
index 7411824..0000000
--- a/PxShared/src/pvd/src/PxProfileEventSystem.h
+++ /dev/null
@@ -1,56 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTSYSTEM_H
-#define PXPVDSDK_PXPROFILEEVENTSYSTEM_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventSender.h"
-#include "PxProfileEventBufferClient.h"
-#include "PxProfileEventBufferClientManager.h"
-
-namespace physx { namespace profile {
- class PxProfileContextProvider;
- class PxProfileEventMutex;
- class PxProfileEventFilter;
-
- /**
- * Wraps the different interfaces into one object.
- */
- class PxProfileEventSystem : public PxProfileEventSender
- , public PxProfileEventBufferClient
- , public PxProfileEventBufferClientManager
- , public PxProfileEventFlusher
- {
- protected:
- ~PxProfileEventSystem(){}
- public:
- virtual void release() = 0;
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTSYSTEM_H
diff --git a/PxShared/src/pvd/src/PxProfileEvents.h b/PxShared/src/pvd/src/PxProfileEvents.h
deleted file mode 100644
index c8a9989..0000000
--- a/PxShared/src/pvd/src/PxProfileEvents.h
+++ /dev/null
@@ -1,706 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEEVENTS_H
-#define PXPVDSDK_PXPROFILEEVENTS_H
-
-#include "foundation/PxMath.h"
-#include "foundation/PxAssert.h"
-
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-
-
-#define PX_PROFILE_UNION_1(a) physx::profile::TUnion<a, physx::profile::Empty>
-#define PX_PROFILE_UNION_2(a,b) physx::profile::TUnion<a, PX_PROFILE_UNION_1(b)>
-#define PX_PROFILE_UNION_3(a,b,c) physx::profile::TUnion<a, PX_PROFILE_UNION_2(b,c)>
-#define PX_PROFILE_UNION_4(a,b,c,d) physx::profile::TUnion<a, PX_PROFILE_UNION_3(b,c,d)>
-#define PX_PROFILE_UNION_5(a,b,c,d,e) physx::profile::TUnion<a, PX_PROFILE_UNION_4(b,c,d,e)>
-#define PX_PROFILE_UNION_6(a,b,c,d,e,f) physx::profile::TUnion<a, PX_PROFILE_UNION_5(b,c,d,e,f)>
-#define PX_PROFILE_UNION_7(a,b,c,d,e,f,g) physx::profile::TUnion<a, PX_PROFILE_UNION_6(b,c,d,e,f,g)>
-#define PX_PROFILE_UNION_8(a,b,c,d,e,f,g,h) physx::profile::TUnion<a, PX_PROFILE_UNION_7(b,c,d,e,f,g,h)>
-#define PX_PROFILE_UNION_9(a,b,c,d,e,f,g,h,i) physx::profile::TUnion<a, PX_PROFILE_UNION_8(b,c,d,e,f,g,h,i)>
-
-namespace physx { namespace profile {
-
- struct Empty {};
-
- template <typename T> struct Type2Type {};
-
- template <typename U, typename V>
- union TUnion
- {
- typedef U Head;
- typedef V Tail;
-
- Head head;
- Tail tail;
-
- template <typename TDataType>
- void init(const TDataType& inData)
- {
- toType(Type2Type<TDataType>()).init(inData);
- }
-
- template <typename TDataType>
- PX_FORCE_INLINE TDataType& toType(const Type2Type<TDataType>& outData) { return tail.toType(outData); }
-
- PX_FORCE_INLINE Head& toType(const Type2Type<Head>&) { return head; }
-
- template <typename TDataType>
- PX_FORCE_INLINE const TDataType& toType(const Type2Type<TDataType>& outData) const { return tail.toType(outData); }
-
- PX_FORCE_INLINE const Head& toType(const Type2Type<Head>&) const { return head; }
- };
-
- struct EventTypes
- {
- enum Enum
- {
- Unknown = 0,
- StartEvent,
- StopEvent,
- RelativeStartEvent, //reuses context,id from the earlier event.
- RelativeStopEvent, //reuses context,id from the earlier event.
- EventValue,
- CUDAProfileBuffer //obsolete, placeholder to skip data from PhysX SDKs < 3.4
- };
- };
-
- struct EventStreamCompressionFlags
- {
- enum Enum
- {
- U8 = 0,
- U16 = 1,
- U32 = 2,
- U64 = 3,
- CompressionMask = 3
- };
- };
-
-#if (PX_PS4) || (PX_APPLE_FAMILY) || (PX_LINUX && PX_X86 && PX_CLANG)
-#pragma clang diagnostic push
-#pragma clang diagnostic ignored "-Wimplicit-fallthrough"
-#endif
-
- //Find the smallest value that will represent the incoming value without loss.
- //We can enlarge the current compression value, but we can't make is smaller.
- //In this way, we can use this function to find the smallest compression setting
- //that will work for a set of values.
- inline EventStreamCompressionFlags::Enum findCompressionValue( uint64_t inValue, EventStreamCompressionFlags::Enum inCurrentCompressionValue = EventStreamCompressionFlags::U8 )
- {
- PX_ASSERT_WITH_MESSAGE( (inCurrentCompressionValue >= EventStreamCompressionFlags::U8) &&
- (inCurrentCompressionValue <= EventStreamCompressionFlags::U64),
- "Invalid inCurrentCompressionValue in profile::findCompressionValue");
-
- //Fallthrough is intentional
- switch( inCurrentCompressionValue )
- {
- case EventStreamCompressionFlags::U8:
- if ( inValue <= UINT8_MAX )
- return EventStreamCompressionFlags::U8;
- case EventStreamCompressionFlags::U16:
- if ( inValue <= UINT16_MAX )
- return EventStreamCompressionFlags::U16;
- case EventStreamCompressionFlags::U32:
- if ( inValue <= UINT32_MAX )
- return EventStreamCompressionFlags::U32;
- case EventStreamCompressionFlags::U64:
- break;
- }
- return EventStreamCompressionFlags::U64;
- }
-
- //Find the smallest value that will represent the incoming value without loss.
- //We can enlarge the current compression value, but we can't make is smaller.
- //In this way, we can use this function to find the smallest compression setting
- //that will work for a set of values.
- inline EventStreamCompressionFlags::Enum findCompressionValue( uint32_t inValue, EventStreamCompressionFlags::Enum inCurrentCompressionValue = EventStreamCompressionFlags::U8 )
- {
- PX_ASSERT_WITH_MESSAGE( (inCurrentCompressionValue >= EventStreamCompressionFlags::U8) &&
- (inCurrentCompressionValue <= EventStreamCompressionFlags::U64),
- "Invalid inCurrentCompressionValue in profile::findCompressionValue");
-
- //Fallthrough is intentional
- switch( inCurrentCompressionValue )
- {
- case EventStreamCompressionFlags::U8:
- if ( inValue <= UINT8_MAX )
- return EventStreamCompressionFlags::U8;
- case EventStreamCompressionFlags::U16:
- if ( inValue <= UINT16_MAX )
- return EventStreamCompressionFlags::U16;
- case EventStreamCompressionFlags::U32:
- case EventStreamCompressionFlags::U64:
- break;
- }
- return EventStreamCompressionFlags::U32;
- }
-
-#if (PX_PS4) || (PX_APPLE_FAMILY) || (PX_LINUX && PX_X86 && PX_CLANG)
-#pragma clang diagnostic pop
-#endif
-
- //Event header is 32 bytes and precedes all events.
- struct EventHeader
- {
- uint8_t mEventType; //Used to parse the correct event out of the stream
- uint8_t mStreamOptions; //Timestamp compression, etc.
- uint16_t mEventId; //16 bit per-event-system event id
- EventHeader( uint8_t type = 0, uint16_t id = 0 )
- : mEventType( type )
- , mStreamOptions( uint8_t(-1) )
- , mEventId( id )
- {
- }
-
- EventHeader( EventTypes::Enum type, uint16_t id )
- : mEventType( static_cast<uint8_t>( type ) )
- , mStreamOptions( uint8_t(-1) )
- , mEventId( id )
- {
- }
-
- EventStreamCompressionFlags::Enum getTimestampCompressionFlags() const
- {
- return static_cast<EventStreamCompressionFlags::Enum> ( mStreamOptions & EventStreamCompressionFlags::CompressionMask );
- }
-
- uint64_t compressTimestamp( uint64_t inLastTimestamp, uint64_t inCurrentTimestamp )
- {
- mStreamOptions = EventStreamCompressionFlags::U64;
- uint64_t retval = inCurrentTimestamp;
- if ( inLastTimestamp )
- {
- retval = inCurrentTimestamp - inLastTimestamp;
- EventStreamCompressionFlags::Enum compressionValue = findCompressionValue( retval );
- mStreamOptions = static_cast<uint8_t>( compressionValue );
- if ( compressionValue == EventStreamCompressionFlags::U64 )
- retval = inCurrentTimestamp; //just send the timestamp as is.
- }
- return retval;
- }
-
- uint64_t uncompressTimestamp( uint64_t inLastTimestamp, uint64_t inCurrentTimestamp ) const
- {
- if ( getTimestampCompressionFlags() != EventStreamCompressionFlags::U64 )
- return inLastTimestamp + inCurrentTimestamp;
- return inCurrentTimestamp;
- }
-
- void setContextIdCompressionFlags( uint64_t inContextId )
- {
- uint8_t options = static_cast<uint8_t>( findCompressionValue( inContextId ) );
- mStreamOptions = uint8_t(mStreamOptions | options << 2);
- }
-
- EventStreamCompressionFlags::Enum getContextIdCompressionFlags() const
- {
- return static_cast< EventStreamCompressionFlags::Enum >( ( mStreamOptions >> 2 ) & EventStreamCompressionFlags::CompressionMask );
- }
-
- bool operator==( const EventHeader& inOther ) const
- {
- return mEventType == inOther.mEventType
- && mStreamOptions == inOther.mStreamOptions
- && mEventId == inOther.mEventId;
- }
-
- template<typename TStreamType>
- inline uint32_t streamify( TStreamType& inStream )
- {
- uint32_t writtenSize = inStream.streamify( "EventType", mEventType );
- writtenSize += inStream.streamify("StreamOptions", mStreamOptions); //Timestamp compression, etc.
- writtenSize += inStream.streamify("EventId", mEventId); //16 bit per-event-system event id
- return writtenSize;
- }
-
-
- };
-
- //Declaration of type level getEventType function that maps enumeration event types to datatypes
- template<typename TDataType>
- inline EventTypes::Enum getEventType() { PX_ASSERT( false ); return EventTypes::Unknown; }
-
- //Relative profile event means this event is sharing the context and thread id
- //with the event before it.
- struct RelativeProfileEvent
- {
- uint64_t mTensOfNanoSeconds; //timestamp is in tensOfNanonseconds
- void init( uint64_t inTs ) { mTensOfNanoSeconds = inTs; }
- void init( const RelativeProfileEvent& inData ) { mTensOfNanoSeconds = inData.mTensOfNanoSeconds; }
- bool operator==( const RelativeProfileEvent& other ) const
- {
- return mTensOfNanoSeconds == other.mTensOfNanoSeconds;
- }
- template<typename TStreamType>
- uint32_t streamify( TStreamType& inStream, const EventHeader& inHeader )
- {
- return inStream.streamify( "TensOfNanoSeconds", mTensOfNanoSeconds, inHeader.getTimestampCompressionFlags() );
- }
- uint64_t getTimestamp() const { return mTensOfNanoSeconds; }
- void setTimestamp( uint64_t inTs ) { mTensOfNanoSeconds = inTs; }
- void setupHeader( EventHeader& inHeader, uint64_t inLastTimestamp )
- {
- mTensOfNanoSeconds = inHeader.compressTimestamp( inLastTimestamp, mTensOfNanoSeconds );
- }
-
- uint32_t getEventSize(const EventHeader& inHeader)
- {
- uint32_t size = 0;
- switch (inHeader.getTimestampCompressionFlags())
- {
- case EventStreamCompressionFlags::U8:
- size = 1;
- break;
- case EventStreamCompressionFlags::U16:
- size = 2;
- break;
- case EventStreamCompressionFlags::U32:
- size = 4;
- break;
- case EventStreamCompressionFlags::U64:
- size = 8;
- break;
- }
- return size;
- }
- };
-
- //Start version of the relative event.
- struct RelativeStartEvent : public RelativeProfileEvent
- {
- void init( uint64_t inTs = 0 ) { RelativeProfileEvent::init( inTs ); }
- void init( const RelativeStartEvent& inData ) { RelativeProfileEvent::init( inData ); }
- template<typename THandlerType>
- void handle( THandlerType* inHdlr, uint16_t eventId, uint32_t thread, uint64_t context, uint8_t inCpuId, uint8_t threadPriority ) const
- {
- inHdlr->onStartEvent( PxProfileEventId( eventId ), thread, context, inCpuId, threadPriority, mTensOfNanoSeconds );
- }
- };
-
- template<> inline EventTypes::Enum getEventType<RelativeStartEvent>() { return EventTypes::RelativeStartEvent; }
-
- //Stop version of relative event.
- struct RelativeStopEvent : public RelativeProfileEvent
- {
- void init( uint64_t inTs = 0 ) { RelativeProfileEvent::init( inTs ); }
- void init( const RelativeStopEvent& inData ) { RelativeProfileEvent::init( inData ); }
- template<typename THandlerType>
- void handle( THandlerType* inHdlr, uint16_t eventId, uint32_t thread, uint64_t context, uint8_t inCpuId, uint8_t threadPriority ) const
- {
- inHdlr->onStopEvent( PxProfileEventId( eventId ), thread, context, inCpuId, threadPriority, mTensOfNanoSeconds );
- }
- };
-
- template<> inline EventTypes::Enum getEventType<RelativeStopEvent>() { return EventTypes::RelativeStopEvent; }
-
- struct EventContextInformation
- {
- uint64_t mContextId;
- uint32_t mThreadId; //Thread this event was taken from
- uint8_t mThreadPriority;
- uint8_t mCpuId;
-
- void init( uint32_t inThreadId = UINT32_MAX
- , uint64_t inContextId = (uint64_t(-1))
- , uint8_t inPriority = UINT8_MAX
- , uint8_t inCpuId = UINT8_MAX )
- {
- mContextId = inContextId;
- mThreadId = inThreadId;
- mThreadPriority = inPriority;
- mCpuId = inCpuId;
- }
-
- void init( const EventContextInformation& inData )
- {
- mContextId = inData.mContextId;
- mThreadId = inData.mThreadId;
- mThreadPriority = inData.mThreadPriority;
- mCpuId = inData.mCpuId;
- }
-
- template<typename TStreamType>
- uint32_t streamify( TStreamType& inStream, EventStreamCompressionFlags::Enum inContextIdFlags )
- {
- uint32_t writtenSize = inStream.streamify( "ThreadId", mThreadId );
- writtenSize += inStream.streamify("ContextId", mContextId, inContextIdFlags);
- writtenSize += inStream.streamify("ThreadPriority", mThreadPriority);
- writtenSize += inStream.streamify("CpuId", mCpuId);
- return writtenSize;
- }
-
- bool operator==( const EventContextInformation& other ) const
- {
- return mThreadId == other.mThreadId
- && mContextId == other.mContextId
- && mThreadPriority == other.mThreadPriority
- && mCpuId == other.mCpuId;
- }
-
- void setToDefault()
- {
- *this = EventContextInformation();
- }
- };
-
- //Profile event contains all the data required to tell the profile what is going
- //on.
- struct ProfileEvent
- {
- EventContextInformation mContextInformation;
- RelativeProfileEvent mTimeData; //timestamp in seconds.
- void init( uint32_t inThreadId, uint64_t inContextId, uint8_t inCpuId, uint8_t inPriority, uint64_t inTs )
- {
- mContextInformation.init( inThreadId, inContextId, inPriority, inCpuId );
- mTimeData.init( inTs );
- }
-
- void init( const ProfileEvent& inData )
- {
- mContextInformation.init( inData.mContextInformation );
- mTimeData.init( inData.mTimeData );
- }
-
- bool operator==( const ProfileEvent& other ) const
- {
- return mContextInformation == other.mContextInformation
- && mTimeData == other.mTimeData;
- }
-
- template<typename TStreamType>
- uint32_t streamify( TStreamType& inStream, const EventHeader& inHeader )
- {
- uint32_t writtenSize = mContextInformation.streamify(inStream, inHeader.getContextIdCompressionFlags());
- writtenSize += mTimeData.streamify(inStream, inHeader);
- return writtenSize;
- }
-
- uint32_t getEventSize(const EventHeader& inHeader)
- {
- uint32_t eventSize = 0;
- // time is stored depending on the conpress flag mTimeData.streamify(inStream, inHeader);
- switch (inHeader.getTimestampCompressionFlags())
- {
- case EventStreamCompressionFlags::U8:
- eventSize++;
- break;
- case EventStreamCompressionFlags::U16:
- eventSize += 2;
- break;
- case EventStreamCompressionFlags::U32:
- eventSize += 4;
- break;
- case EventStreamCompressionFlags::U64:
- eventSize += 8;
- break;
- }
-
- // context information
- // mContextInformation.streamify( inStream, inHeader.getContextIdCompressionFlags() );
- eventSize += 6; // uint32_t mThreadId; uint8_t mThreadPriority; uint8_t mCpuId;
- switch (inHeader.getContextIdCompressionFlags())
- {
- case EventStreamCompressionFlags::U8:
- eventSize++;
- break;
- case EventStreamCompressionFlags::U16:
- eventSize += 2;
- break;
- case EventStreamCompressionFlags::U32:
- eventSize += 4;
- break;
- case EventStreamCompressionFlags::U64:
- eventSize += 8;
- break;
- }
-
- return eventSize;
- }
-
- uint64_t getTimestamp() const { return mTimeData.getTimestamp(); }
- void setTimestamp( uint64_t inTs ) { mTimeData.setTimestamp( inTs ); }
-
- void setupHeader( EventHeader& inHeader, uint64_t inLastTimestamp )
- {
- mTimeData.setupHeader( inHeader, inLastTimestamp );
- inHeader.setContextIdCompressionFlags( mContextInformation.mContextId );
- }
- };
-
- //profile start event starts the profile session.
- struct StartEvent : public ProfileEvent
- {
- void init( uint32_t inThreadId = 0, uint64_t inContextId = 0, uint8_t inCpuId = 0, uint8_t inPriority = 0, uint64_t inTensOfNanoSeconds = 0 )
- {
- ProfileEvent::init( inThreadId, inContextId, inCpuId, inPriority, inTensOfNanoSeconds );
- }
- void init( const StartEvent& inData )
- {
- ProfileEvent::init( inData );
- }
-
- RelativeStartEvent getRelativeEvent() const { RelativeStartEvent theEvent; theEvent.init( mTimeData.mTensOfNanoSeconds ); return theEvent; }
- EventTypes::Enum getRelativeEventType() const { return getEventType<RelativeStartEvent>(); }
- };
-
- template<> inline EventTypes::Enum getEventType<StartEvent>() { return EventTypes::StartEvent; }
-
- //Profile stop event stops the profile session.
- struct StopEvent : public ProfileEvent
- {
- void init( uint32_t inThreadId = 0, uint64_t inContextId = 0, uint8_t inCpuId = 0, uint8_t inPriority = 0, uint64_t inTensOfNanoSeconds = 0 )
- {
- ProfileEvent::init( inThreadId, inContextId, inCpuId, inPriority, inTensOfNanoSeconds );
- }
- void init( const StopEvent& inData )
- {
- ProfileEvent::init( inData );
- }
- RelativeStopEvent getRelativeEvent() const { RelativeStopEvent theEvent; theEvent.init( mTimeData.mTensOfNanoSeconds ); return theEvent; }
- EventTypes::Enum getRelativeEventType() const { return getEventType<RelativeStopEvent>(); }
- };
-
- template<> inline EventTypes::Enum getEventType<StopEvent>() { return EventTypes::StopEvent; }
-
- struct EventValue
- {
- uint64_t mValue;
- uint64_t mContextId;
- uint32_t mThreadId;
- void init( int64_t inValue = 0, uint64_t inContextId = 0, uint32_t inThreadId = 0 )
- {
- mValue = static_cast<uint64_t>( inValue );
- mContextId = inContextId;
- mThreadId = inThreadId;
- }
-
- void init( const EventValue& inData )
- {
- mValue = inData.mValue;
- mContextId = inData.mContextId;
- mThreadId = inData.mThreadId;
- }
-
- int64_t getValue() const { return static_cast<int16_t>( mValue ); }
-
- void setupHeader( EventHeader& inHeader )
- {
- mValue = inHeader.compressTimestamp( 0, mValue );
- inHeader.setContextIdCompressionFlags( mContextId );
- }
-
- template<typename TStreamType>
- uint32_t streamify( TStreamType& inStream, const EventHeader& inHeader )
- {
- uint32_t writtenSize = inStream.streamify("Value", mValue, inHeader.getTimestampCompressionFlags());
- writtenSize += inStream.streamify("ContextId", mContextId, inHeader.getContextIdCompressionFlags());
- writtenSize += inStream.streamify("ThreadId", mThreadId);
- return writtenSize;
- }
-
- uint32_t getEventSize(const EventHeader& inHeader)
- {
- uint32_t eventSize = 0;
- // value
- switch (inHeader.getTimestampCompressionFlags())
- {
- case EventStreamCompressionFlags::U8:
- eventSize++;
- break;
- case EventStreamCompressionFlags::U16:
- eventSize += 2;
- break;
- case EventStreamCompressionFlags::U32:
- eventSize += 4;
- break;
- case EventStreamCompressionFlags::U64:
- eventSize += 8;
- break;
- }
-
- // context information
- switch (inHeader.getContextIdCompressionFlags())
- {
- case EventStreamCompressionFlags::U8:
- eventSize++;
- break;
- case EventStreamCompressionFlags::U16:
- eventSize += 2;
- break;
- case EventStreamCompressionFlags::U32:
- eventSize += 4;
- break;
- case EventStreamCompressionFlags::U64:
- eventSize += 8;
- break;
- }
-
- eventSize += 4; // uint32_t mThreadId;
-
- return eventSize;
- }
-
- bool operator==( const EventValue& other ) const
- {
- return mValue == other.mValue
- && mContextId == other.mContextId
- && mThreadId == other.mThreadId;
- }
-
- template<typename THandlerType>
- void handle( THandlerType* inHdlr, uint16_t eventId ) const
- {
- inHdlr->onEventValue( PxProfileEventId( eventId ), mThreadId, mContextId, getValue() );
- }
-
- };
- template<> inline EventTypes::Enum getEventType<EventValue>() { return EventTypes::EventValue; }
-
- //obsolete, placeholder to skip data from PhysX SDKs < 3.4
- struct CUDAProfileBuffer
- {
- uint64_t mTimestamp;
- float mTimespan;
- const uint8_t* mCudaData;
- uint32_t mBufLen;
- uint32_t mVersion;
-
- template<typename TStreamType>
- uint32_t streamify( TStreamType& inStream, const EventHeader& )
- {
- uint32_t writtenSize = inStream.streamify("Timestamp", mTimestamp);
- writtenSize += inStream.streamify("Timespan", mTimespan);
- writtenSize += inStream.streamify("CudaData", mCudaData, mBufLen);
- writtenSize += inStream.streamify("BufLen", mBufLen);
- writtenSize += inStream.streamify("Version", mVersion);
- return writtenSize;
- }
-
- bool operator==( const CUDAProfileBuffer& other ) const
- {
- return mTimestamp == other.mTimestamp
- && mTimespan == other.mTimespan
- && mBufLen == other.mBufLen
- && memcmp( mCudaData, other.mCudaData, mBufLen ) == 0
- && mVersion == other.mVersion;
- }
- };
-
- template<> inline EventTypes::Enum getEventType<CUDAProfileBuffer>() { return EventTypes::CUDAProfileBuffer; }
-
- //Provides a generic equal operation for event data objects.
- template <typename TEventData>
- struct EventDataEqualOperator
- {
- TEventData mData;
- EventDataEqualOperator( const TEventData& inD ) : mData( inD ) {}
- template<typename TDataType> bool operator()( const TDataType& inRhs ) const { return mData.toType( Type2Type<TDataType>() ) == inRhs; }
- bool operator()() const { return false; }
- };
-
- /**
- * Generic event container that combines and even header with the generic event data type.
- * Provides unsafe and typesafe access to the event data.
- */
- class Event
- {
- public:
- typedef PX_PROFILE_UNION_7(StartEvent, StopEvent, RelativeStartEvent, RelativeStopEvent, EventValue, CUDAProfileBuffer, uint8_t) EventData;
-
- private:
- EventHeader mHeader;
- EventData mData;
- public:
- Event() {}
-
- template <typename TDataType>
- Event( EventHeader inHeader, const TDataType& inData )
- : mHeader( inHeader )
- {
- mData.init<TDataType>(inData);
- }
-
- template<typename TDataType>
- Event( uint16_t eventId, const TDataType& inData )
- : mHeader( getEventType<TDataType>(), eventId )
- {
- mData.init<TDataType>(inData);
- }
- const EventHeader& getHeader() const { return mHeader; }
- const EventData& getData() const { return mData; }
-
- template<typename TDataType>
- const TDataType& getValue() const { PX_ASSERT( mHeader.mEventType == getEventType<TDataType>() ); return mData.toType<TDataType>(); }
-
- template<typename TDataType>
- TDataType& getValue() { PX_ASSERT( mHeader.mEventType == getEventType<TDataType>() ); return mData.toType<TDataType>(); }
-
- template<typename TRetVal, typename TOperator>
- inline TRetVal visit( TOperator inOp ) const;
-
- bool operator==( const Event& inOther ) const
- {
- if ( !(mHeader == inOther.mHeader ) ) return false;
- if ( mHeader.mEventType )
- return inOther.visit<bool>( EventDataEqualOperator<EventData>( mData ) );
- return true;
- }
- };
-
- //Combining the above union type with an event type means that an object can get the exact
- //data out of the union. Using this function means that all callsites will be forced to
- //deal with the newer datatypes and that the switch statement only exists in once place.
- //Implements conversion from enum -> datatype
- template<typename TRetVal, typename TOperator>
- TRetVal visit( EventTypes::Enum inEventType, const Event::EventData& inData, TOperator inOperator )
- {
- switch( inEventType )
- {
- case EventTypes::StartEvent: return inOperator( inData.toType( Type2Type<StartEvent>() ) );
- case EventTypes::StopEvent: return inOperator( inData.toType( Type2Type<StopEvent>() ) );
- case EventTypes::RelativeStartEvent: return inOperator( inData.toType( Type2Type<RelativeStartEvent>() ) );
- case EventTypes::RelativeStopEvent: return inOperator( inData.toType( Type2Type<RelativeStopEvent>() ) );
- case EventTypes::EventValue: return inOperator( inData.toType( Type2Type<EventValue>() ) );
- //obsolete, placeholder to skip data from PhysX SDKs < 3.4
- case EventTypes::CUDAProfileBuffer: return inOperator( inData.toType( Type2Type<CUDAProfileBuffer>() ) );
- case EventTypes::Unknown: break;
- }
- uint8_t type = static_cast<uint8_t>( inEventType );
- return inOperator( type );
- }
-
- template<typename TRetVal, typename TOperator>
- inline TRetVal Event::visit( TOperator inOp ) const
- {
- return physx::profile::visit<TRetVal>( static_cast<EventTypes::Enum>(mHeader.mEventType), mData, inOp );
- }
-} }
-
-#endif // PXPVDSDK_PXPROFILEEVENTS_H
diff --git a/PxShared/src/pvd/src/PxProfileMemory.h b/PxShared/src/pvd/src/PxProfileMemory.h
deleted file mode 100644
index 30e8bdc..0000000
--- a/PxShared/src/pvd/src/PxProfileMemory.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORY_H
-#define PXPVDSDK_PXPROFILEMEMORY_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventBufferClientManager.h"
-#include "PxProfileEventSender.h"
-#include "PsBroadcast.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Record events so a late-connecting client knows about
- all outstanding allocations
- */
- class PxProfileMemoryEventRecorder : public shdfnd::AllocationListener
- {
- protected:
- virtual ~PxProfileMemoryEventRecorder(){}
- public:
- /**
- \brief Set the allocation listener
- \param inListener Allocation listener.
- */
- virtual void setListener(AllocationListener* inListener) = 0;
- /**
- \brief Release the instance.
- */
- virtual void release() = 0;
-
- /**
- \brief Create the profile memory event recorder.
- \param inAllocator Allocation callback.
- */
- static PxProfileMemoryEventRecorder& createRecorder(PxAllocatorCallback* inAllocator);
- };
-
- /**
- \brief Stores memory events into the memory buffer.
- */
- class PxProfileMemoryEventBuffer
- : public shdfnd::AllocationListener //add a new event to the buffer
- , public PxProfileEventBufferClientManager //add clients to handle the serialized memory events
- , public PxProfileEventFlusher //flush the buffer
- {
- protected:
- virtual ~PxProfileMemoryEventBuffer(){}
- public:
-
- /**
- \brief Release the instance.
- */
- virtual void release() = 0;
-
- /**
- \brief Create a non-mutex-protected event buffer.
- \param inAllocator Allocation callback.
- \param inBufferSize Internal buffer size.
- */
- static PxProfileMemoryEventBuffer& createMemoryEventBuffer(PxAllocatorCallback& inAllocator, uint32_t inBufferSize = 0x1000);
- };
-
-
-
-} } // namespace physx
-
-
-#endif // PXPVDSDK_PXPROFILEMEMORY_H
-
-
diff --git a/PxShared/src/pvd/src/PxProfileMemoryBuffer.h b/PxShared/src/pvd/src/PxProfileMemoryBuffer.h
deleted file mode 100644
index ae957ce..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryBuffer.h
+++ /dev/null
@@ -1,193 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYBUFFER_H
-#define PXPVDSDK_PXPROFILEMEMORYBUFFER_H
-
-#include "PxProfileBase.h"
-#include "PsAllocator.h"
-#include "foundation/PxMemory.h"
-
-namespace physx { namespace profile {
-
- template<typename TAllocator = typename shdfnd::AllocatorTraits<uint8_t>::Type >
- class MemoryBuffer : public TAllocator
- {
- uint8_t* mBegin;
- uint8_t* mEnd;
- uint8_t* mCapacityEnd;
-
- public:
- MemoryBuffer( const TAllocator& inAlloc = TAllocator() ) : TAllocator( inAlloc ), mBegin( 0 ), mEnd( 0 ), mCapacityEnd( 0 ) {}
- ~MemoryBuffer()
- {
- if ( mBegin ) TAllocator::deallocate( mBegin );
- }
- uint32_t size() const { return static_cast<uint32_t>( mEnd - mBegin ); }
- uint32_t capacity() const { return static_cast<uint32_t>( mCapacityEnd - mBegin ); }
- uint8_t* begin() { return mBegin; }
- uint8_t* end() { return mEnd; }
- void setEnd(uint8_t* nEnd) { mEnd = nEnd; }
- const uint8_t* begin() const { return mBegin; }
- const uint8_t* end() const { return mEnd; }
- void clear() { mEnd = mBegin; }
- uint32_t write( uint8_t inValue )
- {
- growBuf( 1 );
- *mEnd = inValue;
- ++mEnd;
- return 1;
- }
-
- template<typename TDataType>
- uint32_t write( const TDataType& inValue )
- {
- uint32_t writtenSize = sizeof(TDataType);
- growBuf(writtenSize);
- const uint8_t* __restrict readPtr = reinterpret_cast< const uint8_t* >( &inValue );
- uint8_t* __restrict writePtr = mEnd;
- for ( uint32_t idx = 0; idx < sizeof(TDataType); ++idx ) writePtr[idx] = readPtr[idx];
- mEnd += writtenSize;
- return writtenSize;
- }
-
- template<typename TDataType>
- uint32_t write( const TDataType* inValue, uint32_t inLength )
- {
- if ( inValue && inLength )
- {
- uint32_t writeSize = inLength * sizeof( TDataType );
- growBuf( writeSize );
- PxMemCopy( mBegin + size(), inValue, writeSize );
- mEnd += writeSize;
- return writeSize;
- }
- return 0;
- }
-
- // used by atomic write. Store the data and write the end afterwards
- // we dont check the buffer size, it should not resize on the fly
- template<typename TDataType>
- uint32_t write(const TDataType* inValue, uint32_t inLength, int32_t index)
- {
- if (inValue && inLength)
- {
- uint32_t writeSize = inLength * sizeof(TDataType);
- PX_ASSERT(mBegin + index + writeSize < mCapacityEnd);
- PxMemCopy(mBegin + index, inValue, writeSize);
- return writeSize;
- }
- return 0;
- }
-
- void growBuf( uint32_t inAmount )
- {
- uint32_t newSize = size() + inAmount;
- reserve( newSize );
- }
- void resize( uint32_t inAmount )
- {
- reserve( inAmount );
- mEnd = mBegin + inAmount;
- }
- void reserve( uint32_t newSize )
- {
- uint32_t currentSize = size();
- if ( newSize >= capacity() )
- {
- const uint32_t allocSize = mBegin ? newSize * 2 : newSize;
-
- uint8_t* newData = static_cast<uint8_t*>(TAllocator::allocate(allocSize, __FILE__, __LINE__));
- memset(newData, 0xf,allocSize);
- if ( mBegin )
- {
- PxMemCopy( newData, mBegin, currentSize );
- TAllocator::deallocate( mBegin );
- }
- mBegin = newData;
- mEnd = mBegin + currentSize;
- mCapacityEnd = mBegin + allocSize;
- }
- }
- };
-
-
- class TempMemoryBuffer
- {
- uint8_t* mBegin;
- uint8_t* mEnd;
- uint8_t* mCapacityEnd;
-
- public:
- TempMemoryBuffer(uint8_t* data, int32_t size) : mBegin(data), mEnd(data), mCapacityEnd(data + size) {}
- ~TempMemoryBuffer()
- {
- }
- uint32_t size() const { return static_cast<uint32_t>(mEnd - mBegin); }
- uint32_t capacity() const { return static_cast<uint32_t>(mCapacityEnd - mBegin); }
- const uint8_t* begin() { return mBegin; }
- uint8_t* end() { return mEnd; }
- const uint8_t* begin() const { return mBegin; }
- const uint8_t* end() const { return mEnd; }
- uint32_t write(uint8_t inValue)
- {
- *mEnd = inValue;
- ++mEnd;
- return 1;
- }
-
- template<typename TDataType>
- uint32_t write(const TDataType& inValue)
- {
- uint32_t writtenSize = sizeof(TDataType);
- const uint8_t* __restrict readPtr = reinterpret_cast<const uint8_t*>(&inValue);
- uint8_t* __restrict writePtr = mEnd;
- for (uint32_t idx = 0; idx < sizeof(TDataType); ++idx) writePtr[idx] = readPtr[idx];
- mEnd += writtenSize;
- return writtenSize;
- }
-
- template<typename TDataType>
- uint32_t write(const TDataType* inValue, uint32_t inLength)
- {
- if (inValue && inLength)
- {
- uint32_t writeSize = inLength * sizeof(TDataType);
- PxMemCopy(mBegin + size(), inValue, writeSize);
- mEnd += writeSize;
- return writeSize;
- }
- return 0;
- }
- };
-
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYBUFFER_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventBuffer.h b/PxShared/src/pvd/src/PxProfileMemoryEventBuffer.h
deleted file mode 100644
index 7cc50b6..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventBuffer.h
+++ /dev/null
@@ -1,156 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTBUFFER_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTBUFFER_H
-
-#include "PxProfileDataBuffer.h"
-#include "PxProfileMemoryEvents.h"
-#include "PxProfileMemoryEventTypes.h"
-#include "PxProfileScopedMutexLock.h"
-#include "PxProfileAllocatorWrapper.h"
-
-#include "PsHash.h"
-#include "PsHashMap.h"
-#include "PsUserAllocated.h"
-
-namespace physx { namespace profile {
-
- template<typename TMutex,
- typename TScopedLock>
- class MemoryEventBuffer : public DataBuffer<TMutex, TScopedLock>
- {
- public:
- typedef DataBuffer<TMutex, TScopedLock> TBaseType;
- typedef typename TBaseType::TMutexType TMutexType;
- typedef typename TBaseType::TScopedLockType TScopedLockType;
- typedef typename TBaseType::TU8AllocatorType TU8AllocatorType;
- typedef typename TBaseType::TMemoryBufferType TMemoryBufferType;
- typedef typename TBaseType::TBufferClientArray TBufferClientArray;
- typedef shdfnd::HashMap<const char*, uint32_t, shdfnd::Hash<const char*>, TU8AllocatorType> TCharPtrToHandleMap;
-
- protected:
- TCharPtrToHandleMap mStringTable;
-
- public:
-
- MemoryEventBuffer( PxAllocatorCallback& cback
- , uint32_t inBufferFullAmount
- , TMutexType* inBufferMutex )
- : TBaseType( &cback, inBufferFullAmount, inBufferMutex, "struct physx::profile::MemoryEvent" )
- , mStringTable( TU8AllocatorType( TBaseType::getWrapper(), "MemoryEventStringBuffer" ) )
- {
- }
-
- uint32_t getHandle( const char* inData )
- {
- if ( inData == NULL ) inData = "";
- const typename TCharPtrToHandleMap::Entry* result( mStringTable.find( inData ) );
- if ( result )
- return result->second;
- uint32_t hdl = mStringTable.size() + 1;
- mStringTable.insert( inData, hdl );
- StringTableEvent theEvent;
- theEvent.init( inData, hdl );
- sendEvent( theEvent );
- return hdl;
- }
-
- void onAllocation( size_t inSize, const char* inType, const char* inFile, uint32_t inLine, uint64_t addr )
- {
- if ( addr == 0 )
- return;
- uint32_t typeHdl( getHandle( inType ) );
- uint32_t fileHdl( getHandle( inFile ) );
- AllocationEvent theEvent;
- theEvent.init( inSize, typeHdl, fileHdl, inLine, addr );
- sendEvent( theEvent );
- }
-
- void onDeallocation( uint64_t addr )
- {
- if ( addr == 0 )
- return;
- DeallocationEvent theEvent;
- theEvent.init( addr );
- sendEvent( theEvent );
- }
-
- void flushProfileEvents()
- {
- TBaseType::flushEvents();
- }
-
- protected:
-
- template<typename TDataType>
- void sendEvent( TDataType inType )
- {
- MemoryEventHeader theHeader( getMemoryEventType<TDataType>() );
- inType.setup( theHeader );
- theHeader.streamify( TBaseType::mSerializer );
- inType.streamify( TBaseType::mSerializer, theHeader );
- if ( TBaseType::mDataArray.size() >= TBaseType::mBufferFullAmount )
- flushProfileEvents();
- }
- };
-
- class PxProfileMemoryEventBufferImpl : public shdfnd::UserAllocated
- , public PxProfileMemoryEventBuffer
- {
- typedef MemoryEventBuffer<PxProfileEventMutex, NullLock> TMemoryBufferType;
- TMemoryBufferType mBuffer;
-
- public:
- PxProfileMemoryEventBufferImpl( PxAllocatorCallback& alloc, uint32_t inBufferFullAmount )
- : mBuffer( alloc, inBufferFullAmount, NULL )
- {
- }
-
- virtual void onAllocation( size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory )
- {
- mBuffer.onAllocation( size, typeName, filename, uint32_t(line), PX_PROFILE_POINTER_TO_U64( allocatedMemory ) );
- }
- virtual void onDeallocation( void* allocatedMemory )
- {
- mBuffer.onDeallocation( PX_PROFILE_POINTER_TO_U64( allocatedMemory ) );
- }
-
- virtual void addClient( PxProfileEventBufferClient& inClient ) { mBuffer.addClient( inClient ); }
- virtual void removeClient( PxProfileEventBufferClient& inClient ) { mBuffer.removeClient( inClient ); }
- virtual bool hasClients() const { return mBuffer.hasClients(); }
-
- virtual void flushProfileEvents() { mBuffer.flushProfileEvents(); }
-
- virtual void release(){ PX_PROFILE_DELETE( mBuffer.getWrapper().getAllocator(), this ); }
- };
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTBUFFER_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventParser.h b/PxShared/src/pvd/src/PxProfileMemoryEventParser.h
deleted file mode 100644
index feb8063..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventParser.h
+++ /dev/null
@@ -1,185 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTPARSER_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTPARSER_H
-
-#include "PxProfileMemoryEvents.h"
-#include "PxProfileAllocatorWrapper.h"
-#include "PxProfileEventSerialization.h"
-
-#include "PsHashMap.h"
-#include "PsString.h"
-
-namespace physx { namespace profile {
-
- template<bool TSwapBytes, typename TParserType, typename THandlerType>
- bool parseEventData( TParserType& inParser, const uint8_t* inData, uint32_t inLength, THandlerType* inHandler );
-
- template<bool TSwapBytes>
- struct MemoryEventParser
- {
- typedef PxProfileWrapperReflectionAllocator<uint8_t> TAllocatorType;
- typedef shdfnd::HashMap<uint32_t, char*, shdfnd::Hash<uint32_t>, TAllocatorType > THdlToStringMap;
- typedef EventDeserializer<TSwapBytes> TDeserializerType;
-
- PxProfileAllocatorWrapper mWrapper;
- THdlToStringMap mHdlToStringMap;
- TDeserializerType mDeserializer;
-
- MemoryEventParser( PxAllocatorCallback& inAllocator )
- : mWrapper( inAllocator )
- , mHdlToStringMap( TAllocatorType( mWrapper ) )
- , mDeserializer ( 0, 0 )
- {
- }
-
- ~MemoryEventParser()
- {
- for ( THdlToStringMap::Iterator iter( mHdlToStringMap.getIterator() ); iter.done() == false; ++iter )
- mWrapper.getAllocator().deallocate( reinterpret_cast<void*>(iter->second) );
- }
-
- template<typename TOperator>
- void parse(const StringTableEvent&, const MemoryEventHeader& inHeader, TOperator& inOperator)
- {
- StringTableEvent evt;
- evt.init();
- evt.streamify( mDeserializer, inHeader );
- uint32_t len = static_cast<uint32_t>( strlen( evt.mString ) );
- char* newStr = static_cast<char*>( mWrapper.getAllocator().allocate( len + 1, "const char*", __FILE__, __LINE__ ) );
- shdfnd::strlcpy( newStr, len+1, evt.mString );
- mHdlToStringMap[evt.mHandle] = newStr;
- inOperator( inHeader, evt );
- }
-
- const char* getString( uint32_t inHdl )
- {
- const THdlToStringMap::Entry* entry = mHdlToStringMap.find( inHdl );
- if ( entry ) return entry->second;
- return "";
- }
-
- //Slow reverse lookup used only for testing.
- uint32_t getHandle( const char* inStr )
- {
- for ( THdlToStringMap::Iterator iter = mHdlToStringMap.getIterator();
- !iter.done();
- ++iter )
- {
- if ( safeStrEq( iter->second, inStr ) )
- return iter->first;
- }
- return 0;
- }
-
- template<typename TOperator>
- void parse(const AllocationEvent&, const MemoryEventHeader& inHeader, TOperator& inOperator)
- {
- AllocationEvent evt;
- evt.streamify( mDeserializer, inHeader );
- inOperator( inHeader, evt );
- }
-
- template<typename TOperator>
- void parse(const DeallocationEvent&, const MemoryEventHeader& inHeader, TOperator& inOperator)
- {
- DeallocationEvent evt;
- evt.streamify( mDeserializer, inHeader );
- inOperator( inHeader, evt );
- }
-
- template<typename TOperator>
- void parse(const FullAllocationEvent&, const MemoryEventHeader&, TOperator& )
- {
- PX_ASSERT( false ); //will never happen.
- }
-
- template<typename THandlerType>
- void parseEventData( const uint8_t* inData, uint32_t inLength, THandlerType* inOperator )
- {
- physx::profile::parseEventData<TSwapBytes>( *this, inData, inLength, inOperator );
- }
- };
-
-
- template<typename THandlerType, bool TSwapBytes>
- struct MemoryEventParseOperator
- {
- MemoryEventParser<TSwapBytes>* mParser;
- THandlerType* mOperator;
- MemoryEventHeader* mHeader;
- MemoryEventParseOperator( MemoryEventParser<TSwapBytes>* inParser, THandlerType* inOperator, MemoryEventHeader* inHeader )
- : mParser( inParser )
- , mOperator( inOperator )
- , mHeader( inHeader )
- {
- }
-
- bool wasSuccessful() { return mParser->mDeserializer.mFail == false; }
-
- bool parseHeader()
- {
- mHeader->streamify( mParser->mDeserializer );
- return wasSuccessful();
- }
-
- template<typename TDataType>
- bool operator()( const TDataType& inType )
- {
- mParser->parse( inType, *mHeader, *mOperator );
- return wasSuccessful();
- }
-
- bool operator()( uint8_t ) { PX_ASSERT( false ); return false;}
- };
-
- template<bool TSwapBytes, typename TParserType, typename THandlerType>
- inline bool parseEventData( TParserType& inParser, const uint8_t* inData, uint32_t inLength, THandlerType* inHandler )
- {
- inParser.mDeserializer = EventDeserializer<TSwapBytes>( inData, inLength );
- MemoryEvent::EventData crapData;
- uint32_t eventCount = 0;
- MemoryEventHeader theHeader;
- MemoryEventParseOperator<THandlerType, TSwapBytes> theOp( &inParser, inHandler, &theHeader );
- while( inParser.mDeserializer.mLength && inParser.mDeserializer.mFail == false)
- {
- if ( theOp.parseHeader() )
- {
- if( visit<bool>( theHeader.getType(), crapData, theOp ) == false )
- inParser.mDeserializer.mFail = true;
- }
- ++eventCount;
- }
- return inParser.mDeserializer.mFail == false;
- }
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTPARSER_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventRecorder.h b/PxShared/src/pvd/src/PxProfileMemoryEventRecorder.h
deleted file mode 100644
index a3d1ed8..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventRecorder.h
+++ /dev/null
@@ -1,147 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTRECORDER_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTRECORDER_H
-
-
-#include "PxProfileBase.h"
-#include "PxProfileAllocatorWrapper.h"
-#include "PxProfileMemoryEvents.h"
-#include "PxProfileMemoryEventTypes.h"
-
-#include "PsHashMap.h"
-#include "PsUserAllocated.h"
-#include "PsBroadcast.h"
-#include "PxProfileMemory.h"
-
-namespace physx { namespace profile {
-
- //Remember outstanding events.
- //Remembers allocations, forwards them to a listener if one is attached
- //and will forward all outstanding allocations to a listener when one is
- //attached.
- struct MemoryEventRecorder : public shdfnd::AllocationListener
- {
- typedef PxProfileWrapperReflectionAllocator<uint8_t> TAllocatorType;
- typedef shdfnd::HashMap<uint64_t,FullAllocationEvent,shdfnd::Hash<uint64_t>,TAllocatorType> THashMapType;
-
- PxProfileAllocatorWrapper mWrapper;
- THashMapType mOutstandingAllocations;
- AllocationListener* mListener;
-
- MemoryEventRecorder( PxAllocatorCallback* inFoundation )
- : mWrapper( inFoundation )
- , mOutstandingAllocations( TAllocatorType( mWrapper ) )
- , mListener( NULL )
- {
- }
-
- static uint64_t ToU64( void* inData ) { return PX_PROFILE_POINTER_TO_U64( inData ); }
- static void* ToVoidPtr( uint64_t inData ) { return reinterpret_cast<void*>(size_t(inData)); }
- virtual void onAllocation( size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory )
- {
- onAllocation( size, typeName, filename, uint32_t(line), ToU64( allocatedMemory ) );
- }
-
- void onAllocation( size_t size, const char* typeName, const char* filename, uint32_t line, uint64_t allocatedMemory )
- {
- if ( allocatedMemory == 0 )
- return;
- FullAllocationEvent theEvent;
- theEvent.init( size, typeName, filename, line, allocatedMemory );
- mOutstandingAllocations.insert( allocatedMemory, theEvent );
- if ( mListener != NULL ) mListener->onAllocation( size, typeName, filename, int(line), ToVoidPtr(allocatedMemory) );
- }
-
- virtual void onDeallocation( void* allocatedMemory )
- {
- onDeallocation( ToU64( allocatedMemory ) );
- }
-
- void onDeallocation( uint64_t allocatedMemory )
- {
- if ( allocatedMemory == 0 )
- return;
- mOutstandingAllocations.erase( allocatedMemory );
- if ( mListener != NULL ) mListener->onDeallocation( ToVoidPtr( allocatedMemory ) );
- }
-
- void flushProfileEvents() {}
-
- void setListener( AllocationListener* inListener )
- {
- mListener = inListener;
- if ( mListener )
- {
- for ( THashMapType::Iterator iter = mOutstandingAllocations.getIterator();
- !iter.done();
- ++iter )
- {
- const FullAllocationEvent& evt( iter->second );
- mListener->onAllocation( evt.mSize, evt.mType, evt.mFile, int(evt.mLine), ToVoidPtr( evt.mAddress ) );
- }
- }
- }
- };
-
- class PxProfileMemoryEventRecorderImpl : public shdfnd::UserAllocated
- , public physx::profile::PxProfileMemoryEventRecorder
- {
- MemoryEventRecorder mRecorder;
- public:
- PxProfileMemoryEventRecorderImpl( PxAllocatorCallback* inFnd )
- : mRecorder( inFnd )
- {
- }
-
- virtual void onAllocation( size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory )
- {
- mRecorder.onAllocation( size, typeName, filename, line, allocatedMemory );
- }
-
- virtual void onDeallocation( void* allocatedMemory )
- {
- mRecorder.onDeallocation( allocatedMemory );
- }
-
- virtual void setListener( AllocationListener* inListener )
- {
- mRecorder.setListener( inListener );
- }
-
- virtual void release()
- {
- PX_PROFILE_DELETE( mRecorder.mWrapper.getAllocator(), this );
- }
- };
-
-}}
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTRECORDER_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventReflexiveWriter.h b/PxShared/src/pvd/src/PxProfileMemoryEventReflexiveWriter.h
deleted file mode 100644
index 75fbd03..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventReflexiveWriter.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTREFLEXIVEWRITER_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTREFLEXIVEWRITER_H
-
-#include "PxProfileMemoryBuffer.h"
-#include "PxProfileFoundationWrapper.h"
-#include "PxProfileMemoryEvents.h"
-
-namespace physx { namespace profile {
-
- struct MemoryEventReflexiveWriter
- {
- typedef PxProfileWrapperReflectionAllocator<uint8_t> TAllocatorType;
- typedef MemoryBuffer<TAllocatorType> TMemoryBufferType;
- typedef EventSerializer<TMemoryBufferType> TSerializerType;
-
-
- PxProfileAllocatorWrapper mWrapper;
- TMemoryBufferType mBuffer;
- TSerializerType mSerializer;
-
- MemoryEventReflexiveWriter( PxAllocatorCallback* inFoundation )
- : mWrapper( inFoundation )
- , mBuffer( TAllocatorType( mWrapper ) )
- , mSerializer( &mBuffer )
- {
- }
-
- template<typename TDataType>
- void operator()( const MemoryEventHeader& inHeader, const TDataType& inType )
- {
- //copy to get rid of const.
- MemoryEventHeader theHeader( inHeader );
- TDataType theData( inType );
-
- //write them out.
- theHeader.streamify( mSerializer );
- theData.streamify( mSerializer, theHeader );
- }
- };
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTREFLEXIVEWRITER_H \ No newline at end of file
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventSummarizer.h b/PxShared/src/pvd/src/PxProfileMemoryEventSummarizer.h
deleted file mode 100644
index 788636e..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventSummarizer.h
+++ /dev/null
@@ -1,304 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTSUMMARIZER_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTSUMMARIZER_H
-
-#include "PxProfileBase.h"
-#include "PxProfileAllocatorWrapper.h"
-#include "PxProfileMemoryEvents.h"
-#include "PxProfileMemoryEventRecorder.h"
-#include "PxProfileMemoryEventParser.h"
-
-#include "PsHashMap.h"
-
-namespace physx { namespace profile {
-
- struct MemoryEventSummarizerEntry
- {
- uint32_t mType;
- uint32_t mFile;
- uint32_t mLine;
-
- MemoryEventSummarizerEntry( const AllocationEvent& evt )
- : mType( evt.mType )
- , mFile( evt.mFile )
- , mLine( evt.mLine )
- {
- }
-
- MemoryEventSummarizerEntry( uint32_t tp, uint32_t f, uint32_t line )
- : mType( tp )
- , mFile( f )
- , mLine( line )
- {
- }
- };
-}}
-
-
-namespace physx { namespace shdfnd {
-
- template <>
- struct Hash<physx::profile::MemoryEventSummarizerEntry>
- {
- public:
- uint32_t operator()(const physx::profile::MemoryEventSummarizerEntry& entry) const
- {
- //Combine hash values in a semi-reasonable way.
- return Hash<uint32_t>()( entry.mType )
- ^ Hash<uint32_t>()( entry.mFile )
- ^ Hash<uint32_t>()( entry.mLine );
- }
-
- bool operator()(const physx::profile::MemoryEventSummarizerEntry& lhs, const physx::profile::MemoryEventSummarizerEntry& rhs) const
- {
- return lhs.mType == rhs.mType
- && lhs.mFile == rhs.mFile
- && lhs.mLine == rhs.mLine;
- }
-
- bool equal(const physx::profile::MemoryEventSummarizerEntry& lhs, const physx::profile::MemoryEventSummarizerEntry& rhs) const
- {
- return lhs.mType == rhs.mType
- && lhs.mFile == rhs.mFile
- && lhs.mLine == rhs.mLine;
- }
- };
-}}
-
-namespace physx { namespace profile {
-
- struct MemoryEventSummarizerAllocatedValue
- {
- MemoryEventSummarizerEntry mEntry;
- uint32_t mSize;
- MemoryEventSummarizerAllocatedValue( MemoryEventSummarizerEntry en, uint32_t sz )
- : mEntry( en )
- , mSize( sz )
- {
- }
- };
-
- template<typename TSummarizerType>
- struct SummarizerParseHandler
- {
- TSummarizerType* mSummarizer;
- SummarizerParseHandler( TSummarizerType* inType )
- : mSummarizer( inType )
- {
- }
- template<typename TDataType>
- void operator()( const MemoryEventHeader& inHeader, const TDataType& inType )
- {
- mSummarizer->handleParsedData( inHeader, inType );
- }
- };
-
- template<typename TForwardType>
- struct MemoryEventForward
- {
- TForwardType* mForward;
- MemoryEventForward( TForwardType& inForward )
- : mForward( &inForward )
- {
- }
- template<typename TDataType>
- void operator()( const MemoryEventHeader& inHeader, const TDataType& inType )
- {
- TForwardType& theForward( *mForward );
- theForward( inHeader, inType );
- }
- };
-
- struct NullMemoryEventHandler
- {
- template<typename TDataType>
- void operator()( const MemoryEventHeader&, const TDataType&)
- {
- }
- };
-
- template<typename TForwardType>
- struct NewEntryOperatorForward
- {
- TForwardType* mForward;
- NewEntryOperatorForward( TForwardType& inForward )
- : mForward( &inForward )
- {
- }
- void operator()( const MemoryEventSummarizerEntry& inEntry, const char* inTypeStr, const char* inFileStr, uint32_t inTotalsArrayIndex )
- {
- TForwardType& theType( *mForward );
- theType( inEntry, inTypeStr, inFileStr, inTotalsArrayIndex );
- }
- };
-
- struct NullNewEntryOperator
- {
- void operator()( const MemoryEventSummarizerEntry&, const char*, const char*, uint32_t)
- {
- }
- };
-
- //Very specialized class meant to take a stream of memory events
- //endian-convert it.
- //Produce a new stream
- //And keep track of the events in a meaningful way.
- //It collapses the allocations into groupings keyed
- //by file, line, and type.
- template<bool TSwapBytes
- , typename TNewEntryOperator
- , typename MemoryEventHandler>
- struct MemoryEventSummarizer : public PxProfileEventBufferClient
- {
- typedef MemoryEventSummarizer< TSwapBytes, TNewEntryOperator, MemoryEventHandler > TThisType;
- typedef PxProfileWrapperReflectionAllocator<MemoryEventSummarizerEntry> TAllocatorType;
- typedef shdfnd::HashMap<MemoryEventSummarizerEntry, uint32_t, shdfnd::Hash<MemoryEventSummarizerEntry>, TAllocatorType> TSummarizeEntryToU32Hash;
- typedef shdfnd::HashMap<uint64_t, MemoryEventSummarizerAllocatedValue, shdfnd::Hash<uint64_t>, TAllocatorType> TU64ToSummarizerValueHash;
- PxProfileAllocatorWrapper mWrapper;
- TSummarizeEntryToU32Hash mEntryIndexHash;
- PxProfileArray<int32_t> mTotalsArray;
- MemoryEventParser<TSwapBytes> mParser;
- TU64ToSummarizerValueHash mOutstandingAllocations;
- TNewEntryOperator mNewEntryOperator;
- MemoryEventHandler mEventHandler;
-
-
- MemoryEventSummarizer( PxAllocatorCallback& inAllocator
- , TNewEntryOperator inNewEntryOperator
- , MemoryEventHandler inEventHandler)
-
- : mWrapper( inAllocator )
- , mEntryIndexHash( TAllocatorType( mWrapper ) )
- , mTotalsArray( mWrapper )
- , mParser( inAllocator )
- , mOutstandingAllocations( mWrapper )
- , mNewEntryOperator( inNewEntryOperator )
- , mEventHandler( inEventHandler )
- {
- }
- virtual ~MemoryEventSummarizer(){}
-
- //parse this data block. This will endian-convert the data if necessary
- //and then
- void handleData( const uint8_t* inData, uint32_t inLen )
- {
- SummarizerParseHandler<TThisType> theHandler( this );
- parseEventData<TSwapBytes>( mParser, inData, inLen, &theHandler );
- }
-
- template<typename TDataType>
- void handleParsedData( const MemoryEventHeader& inHeader, const TDataType& inData )
- {
- //forward it to someone who might care
- mEventHandler( inHeader, inData );
- //handle the parsed data.
- doHandleParsedData( inData );
- }
-
- template<typename TDataType>
- void doHandleParsedData( const TDataType& ) {}
-
- void doHandleParsedData( const AllocationEvent& inEvt )
- {
- onAllocation( inEvt.mSize, inEvt.mType, inEvt.mFile, inEvt.mLine, inEvt.mAddress );
- }
-
- void doHandleParsedData( const DeallocationEvent& inEvt )
- {
- onDeallocation( inEvt.mAddress );
- }
-
- uint32_t getOrCreateEntryIndex( const MemoryEventSummarizerEntry& inEvent )
- {
- uint32_t index = 0;
- const TSummarizeEntryToU32Hash::Entry* entry( mEntryIndexHash.find(inEvent ) );
- if ( !entry )
- {
- index = mTotalsArray.size();
- mTotalsArray.pushBack( 0 );
- mEntryIndexHash.insert( inEvent, index );
-
- //Force a string lookup and such here.
- mNewEntryOperator( inEvent, mParser.getString( inEvent.mType), mParser.getString( inEvent.mFile ), index );
- }
- else
- index = entry->second;
- return index;
- }
-
- //Keep a running total of what is going on, letting a listener know when new events happen.
- void onMemoryEvent( const MemoryEventSummarizerEntry& inEvent, int32_t inSize )
- {
- MemoryEventSummarizerEntry theEntry( inEvent );
- uint32_t index = getOrCreateEntryIndex( theEntry );
- mTotalsArray[index] += inSize;
- }
-
- void onAllocation( uint32_t inSize, uint32_t inType, uint32_t inFile, uint32_t inLine, uint64_t inAddress )
- {
- MemoryEventSummarizerEntry theEntry( inType, inFile, inLine );
- onMemoryEvent( theEntry, static_cast<int32_t>( inSize ) );
- mOutstandingAllocations.insert( inAddress, MemoryEventSummarizerAllocatedValue( theEntry, inSize ) );
- }
-
- void onDeallocation( uint64_t inAddress )
- {
- const TU64ToSummarizerValueHash::Entry* existing( mOutstandingAllocations.find( inAddress ) );
- if ( existing )
- {
- const MemoryEventSummarizerAllocatedValue& data( existing->second );
- onMemoryEvent( data.mEntry, -1 * static_cast<int32_t>( data.mSize ) );
- mOutstandingAllocations.erase( inAddress );
- }
- //Not much we can do with an deallocation when we didn't track the allocation.
- }
-
- int32_t getTypeTotal( const char* inTypeName, const char* inFilename, uint32_t inLine )
- {
- uint32_t theType( mParser.getHandle( inTypeName ) );
- uint32_t theFile( mParser.getHandle( inFilename ) );
- uint32_t theLine = inLine; //all test lines are 50...
- uint32_t index = getOrCreateEntryIndex( MemoryEventSummarizerEntry( theType, theFile, theLine ) );
- return mTotalsArray[index];
- }
-
- virtual void handleBufferFlush( const uint8_t* inData, uint32_t inLength )
- {
- handleData( inData, inLength );
- }
-
- virtual void handleClientRemoved() {}
- };
-
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTSUMMARIZER_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEventTypes.h b/PxShared/src/pvd/src/PxProfileMemoryEventTypes.h
deleted file mode 100644
index c737451..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEventTypes.h
+++ /dev/null
@@ -1,90 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTTYPES_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTTYPES_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventBufferClientManager.h"
-#include "PxProfileEventSender.h"
-#include "PsBroadcast.h"
-
-namespace physx { namespace profile {
-
- struct PxProfileMemoryEventType
- {
- enum Enum
- {
- Unknown = 0,
- Allocation,
- Deallocation
- };
- };
-
- struct PxProfileBulkMemoryEvent
- {
- uint64_t mAddress;
- uint32_t mDatatype;
- uint32_t mFile;
- uint32_t mLine;
- uint32_t mSize;
- PxProfileMemoryEventType::Enum mType;
-
- PxProfileBulkMemoryEvent(){}
-
- PxProfileBulkMemoryEvent( uint32_t size, uint32_t type, uint32_t file, uint32_t line, uint64_t addr )
- : mAddress( addr )
- , mDatatype( type )
- , mFile( file )
- , mLine( line )
- , mSize( size )
- , mType( PxProfileMemoryEventType::Allocation )
- {
- }
-
- PxProfileBulkMemoryEvent( uint64_t addr )
- : mAddress( addr )
- , mDatatype( 0 )
- , mFile( 0 )
- , mLine( 0 )
- , mSize( 0 )
- , mType( PxProfileMemoryEventType::Deallocation )
- {
- }
- };
-
- class PxProfileBulkMemoryEventHandler
- {
- protected:
- virtual ~PxProfileBulkMemoryEventHandler(){}
- public:
- virtual void handleEvents( const PxProfileBulkMemoryEvent* inEvents, uint32_t inBufferSize ) = 0;
- static void parseEventBuffer( const uint8_t* inBuffer, uint32_t inBufferSize, PxProfileBulkMemoryEventHandler& inHandler, bool inSwapBytes, PxAllocatorCallback* inAlloc );
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTTYPES_H
diff --git a/PxShared/src/pvd/src/PxProfileMemoryEvents.h b/PxShared/src/pvd/src/PxProfileMemoryEvents.h
deleted file mode 100644
index 6fcb032..0000000
--- a/PxShared/src/pvd/src/PxProfileMemoryEvents.h
+++ /dev/null
@@ -1,411 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEMEMORYEVENTS_H
-#define PXPVDSDK_PXPROFILEMEMORYEVENTS_H
-
-#include "PxProfileEvents.h"
-
-//Memory events define their own event stream
-
-namespace physx { namespace profile {
- struct MemoryEventTypes
- {
- enum Enum
- {
- Unknown = 0,
- StringTableEvent, //introduce a new mapping of const char* -> integer
- AllocationEvent,
- DeallocationEvent,
- FullAllocationEvent
- };
- };
-
- template<unsigned numBits, typename TDataType>
- inline unsigned char convertToNBits( TDataType inType )
- {
- uint8_t conversion = static_cast<uint8_t>( inType );
- PX_ASSERT( conversion < (1 << numBits) );
- return conversion;
- }
-
- template<typename TDataType>
- inline unsigned char convertToTwoBits( TDataType inType )
- {
- return convertToNBits<2>( inType );
- }
-
- template<typename TDataType>
- inline unsigned char convertToFourBits( TDataType inType )
- {
- return convertToNBits<4>( inType );
- }
-
- inline EventStreamCompressionFlags::Enum fromNumber( uint8_t inNum ) { return static_cast<EventStreamCompressionFlags::Enum>( inNum ); }
-
- template<unsigned lhs, unsigned rhs>
- inline void compileCheckSize()
- {
- PX_COMPILE_TIME_ASSERT( lhs <= rhs );
- }
-
- //Used for predictable bit fields.
- template<typename TDataType
- , uint8_t TNumBits
- , uint8_t TOffset
- , typename TInputType>
- struct BitMaskSetter
- {
- //Create a mask that masks out the orginal value shift into place
- static TDataType createOffsetMask() { return TDataType(createMask() << TOffset); }
- //Create a mask of TNumBits number of tis
- static TDataType createMask() { return static_cast<TDataType>((1 << TNumBits) - 1); }
- void setValue( TDataType& inCurrent, TInputType inData )
- {
- PX_ASSERT( inData < ( 1 << TNumBits ) );
-
- //Create a mask to remove the current value.
- TDataType theMask = TDataType(~(createOffsetMask()));
- //Clear out current value.
- inCurrent = TDataType(inCurrent & theMask);
- //Create the new value.
- TDataType theAddition = static_cast<TDataType>( inData << TOffset );
- //or it into the existing value.
- inCurrent = TDataType(inCurrent | theAddition);
- }
-
- TInputType getValue( TDataType inCurrent )
- {
- return static_cast<TInputType>( ( inCurrent >> TOffset ) & createMask() );
- }
- };
-
-
- struct MemoryEventHeader
- {
- uint16_t mValue;
-
- typedef BitMaskSetter<uint16_t, 4, 0, uint8_t> TTypeBitmask;
- typedef BitMaskSetter<uint16_t, 2, 4, uint8_t> TAddrCompressBitmask;
- typedef BitMaskSetter<uint16_t, 2, 6, uint8_t> TTypeCompressBitmask;
- typedef BitMaskSetter<uint16_t, 2, 8, uint8_t> TFnameCompressBitmask;
- typedef BitMaskSetter<uint16_t, 2, 10, uint8_t> TSizeCompressBitmask;
- typedef BitMaskSetter<uint16_t, 2, 12, uint8_t> TLineCompressBitmask;
-
- //That leaves size as the only thing not compressed usually.
-
- MemoryEventHeader( MemoryEventTypes::Enum inType = MemoryEventTypes::Unknown )
- : mValue( 0 )
- {
- uint8_t defaultCompression( convertToTwoBits( EventStreamCompressionFlags::U64 ) );
- TTypeBitmask().setValue( mValue, convertToFourBits( inType ) );
- TAddrCompressBitmask().setValue( mValue, defaultCompression );
- TTypeCompressBitmask().setValue( mValue, defaultCompression );
- TFnameCompressBitmask().setValue( mValue, defaultCompression );
- TSizeCompressBitmask().setValue( mValue, defaultCompression );
- TLineCompressBitmask().setValue( mValue, defaultCompression );
- }
-
- MemoryEventTypes::Enum getType() const { return static_cast<MemoryEventTypes::Enum>( TTypeBitmask().getValue( mValue ) ); }
-
-#define DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( name ) \
- void set##name( EventStreamCompressionFlags::Enum inEnum ) { T##name##Bitmask().setValue( mValue, convertToTwoBits( inEnum ) ); } \
- EventStreamCompressionFlags::Enum get##name() const { return fromNumber( T##name##Bitmask().getValue( mValue ) ); }
-
- DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( AddrCompress )
- DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( TypeCompress )
- DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( FnameCompress )
- DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( SizeCompress )
- DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR( LineCompress )
-
-#undef DEFINE_MEMORY_HEADER_COMPRESSION_ACCESSOR
-
- bool operator==( const MemoryEventHeader& inOther ) const
- {
- return mValue == inOther.mValue;
- }
- template<typename TStreamType>
- void streamify( TStreamType& inStream )
- {
- inStream.streamify( "Header", mValue );
- }
- };
-
- //Declaration of type level getMemoryEventType function that maps enumeration event types to datatypes
- template<typename TDataType>
- inline MemoryEventTypes::Enum getMemoryEventType() { PX_ASSERT( false ); return MemoryEventTypes::Unknown; }
-
- inline bool safeStrEq( const char* lhs, const char* rhs )
- {
- if ( lhs == rhs )
- return true;
- //If they aren't equal, and one of them is null,
- //then they can't be equal.
- //This is assuming that the null char* is not equal to
- //the empty "" char*.
- if ( !lhs || !rhs )
- return false;
-
- return ::strcmp( lhs, rhs ) == 0;
- }
-
- struct StringTableEvent
- {
- const char* mString;
- uint32_t mHandle;
-
- void init( const char* inStr = "", uint32_t inHdl = 0 )
- {
- mString = inStr;
- mHandle = inHdl;
- }
-
- void init( const StringTableEvent& inData )
- {
- mString = inData.mString;
- mHandle = inData.mHandle;
- }
-
- bool operator==( const StringTableEvent& inOther ) const
- {
- return mHandle == inOther.mHandle
- && safeStrEq( mString, inOther.mString );
- }
-
- void setup( MemoryEventHeader& ) const {}
-
- template<typename TStreamType>
- void streamify( TStreamType& inStream, const MemoryEventHeader& )
- {
- inStream.streamify( "String", mString );
- inStream.streamify( "Handle", mHandle );
- }
- };
- template<> inline MemoryEventTypes::Enum getMemoryEventType<StringTableEvent>() { return MemoryEventTypes::StringTableEvent; }
-
- struct MemoryEventData
- {
- uint64_t mAddress;
- void init( uint64_t addr )
- {
- mAddress = addr;
- }
-
- void init( const MemoryEventData& inData)
- {
- mAddress = inData.mAddress;
- }
-
- bool operator==( const MemoryEventData& inOther ) const
- {
- return mAddress == inOther.mAddress;
- }
-
- void setup( MemoryEventHeader& inHeader ) const
- {
- inHeader.setAddrCompress( findCompressionValue( mAddress ) );
- }
-
- template<typename TStreamType>
- void streamify( TStreamType& inStream, const MemoryEventHeader& inHeader )
- {
- inStream.streamify( "Address", mAddress, inHeader.getAddrCompress() );
- }
- };
-
- struct AllocationEvent : public MemoryEventData
- {
- uint32_t mSize;
- uint32_t mType;
- uint32_t mFile;
- uint32_t mLine;
- void init( size_t size = 0, uint32_t type = 0, uint32_t file = 0, uint32_t line = 0, uint64_t addr = 0 )
- {
- MemoryEventData::init( addr );
- mSize = static_cast<uint32_t>( size );
- mType = type;
- mFile = file;
- mLine = line;
- }
-
- void init( const AllocationEvent& inData )
- {
- MemoryEventData::init( inData );
- mSize = inData.mSize;
- mType = inData.mType;
- mFile = inData.mFile;
- mLine = inData.mLine;
- }
-
- bool operator==( const AllocationEvent& inOther ) const
- {
- return MemoryEventData::operator==( inOther )
- && mSize == inOther.mSize
- && mType == inOther.mType
- && mFile == inOther.mFile
- && mLine == inOther.mLine;
- }
-
- void setup( MemoryEventHeader& inHeader ) const
- {
- inHeader.setTypeCompress( findCompressionValue( mType ) );
- inHeader.setFnameCompress( findCompressionValue( mFile ) );
- inHeader.setSizeCompress( findCompressionValue( mSize ) );
- inHeader.setLineCompress( findCompressionValue( mLine ) );
- MemoryEventData::setup( inHeader );
- }
-
- template<typename TStreamType>
- void streamify( TStreamType& inStream, const MemoryEventHeader& inHeader )
- {
- inStream.streamify( "Size", mSize, inHeader.getSizeCompress() );
- inStream.streamify( "Type", mType, inHeader.getTypeCompress() );
- inStream.streamify( "File", mFile, inHeader.getFnameCompress() );
- inStream.streamify( "Line", mLine, inHeader.getLineCompress() );
- MemoryEventData::streamify( inStream, inHeader );
- }
- };
- template<> inline MemoryEventTypes::Enum getMemoryEventType<AllocationEvent>() { return MemoryEventTypes::AllocationEvent; }
-
-
- struct FullAllocationEvent : public MemoryEventData
- {
- size_t mSize;
- const char* mType;
- const char* mFile;
- uint32_t mLine;
- void init( size_t size, const char* type, const char* file, uint32_t line, uint64_t addr )
- {
- MemoryEventData::init( addr );
- mSize = size;
- mType = type;
- mFile = file;
- mLine = line;
- }
-
- void init( const FullAllocationEvent& inData )
- {
- MemoryEventData::init( inData );
- mSize = inData.mSize;
- mType = inData.mType;
- mFile = inData.mFile;
- mLine = inData.mLine;
- }
-
- bool operator==( const FullAllocationEvent& inOther ) const
- {
- return MemoryEventData::operator==( inOther )
- && mSize == inOther.mSize
- && safeStrEq( mType, inOther.mType )
- && safeStrEq( mFile, inOther.mFile )
- && mLine == inOther.mLine;
- }
-
- void setup( MemoryEventHeader& ) const {}
- };
-
- template<> inline MemoryEventTypes::Enum getMemoryEventType<FullAllocationEvent>() { return MemoryEventTypes::FullAllocationEvent; }
-
- struct DeallocationEvent : public MemoryEventData
- {
- void init( uint64_t addr = 0 ) { MemoryEventData::init( addr ); }
- void init( const DeallocationEvent& inData ) { MemoryEventData::init( inData ); }
- };
-
- template<> inline MemoryEventTypes::Enum getMemoryEventType<DeallocationEvent>() { return MemoryEventTypes::DeallocationEvent; }
-
- class MemoryEvent
- {
- public:
- typedef PX_PROFILE_UNION_5(StringTableEvent, AllocationEvent, DeallocationEvent, FullAllocationEvent, uint8_t) EventData;
-
- private:
- MemoryEventHeader mHeader;
- EventData mData;
- public:
-
- MemoryEvent() {}
- MemoryEvent( MemoryEventHeader inHeader, const EventData& inData = EventData() )
- : mHeader( inHeader )
- , mData( inData )
- {
- }
-
- template<typename TDataType>
- MemoryEvent( const TDataType& inType )
- : mHeader( getMemoryEventType<TDataType>() )
- , mData( inType )
- {
- //set the appropriate compression bits.
- inType.setup( mHeader );
- }
- const MemoryEventHeader& getHeader() const { return mHeader; }
- const EventData& getData() const { return mData; }
-
- template<typename TDataType>
- const TDataType& getValue() const { PX_ASSERT( mHeader.getType() == getMemoryEventType<TDataType>() ); return mData.toType<TDataType>(); }
-
- template<typename TDataType>
- TDataType& getValue() { PX_ASSERT( mHeader.getType() == getMemoryEventType<TDataType>() ); return mData.toType<TDataType>(); }
-
- template<typename TRetVal, typename TOperator>
- inline TRetVal visit( TOperator inOp ) const;
-
- bool operator==( const MemoryEvent& inOther ) const
- {
- if ( !(mHeader == inOther.mHeader ) ) return false;
- if ( mHeader.getType() )
- return inOther.visit<bool>( EventDataEqualOperator<EventData>( mData ) );
- return true;
- }
- };
-
- template<typename TRetVal, typename TOperator>
- inline TRetVal visit( MemoryEventTypes::Enum inEventType, const MemoryEvent::EventData& inData, TOperator inOperator )
- {
- switch( inEventType )
- {
- case MemoryEventTypes::StringTableEvent: return inOperator( inData.toType( Type2Type<StringTableEvent>() ) );
- case MemoryEventTypes::AllocationEvent: return inOperator( inData.toType( Type2Type<AllocationEvent>() ) );
- case MemoryEventTypes::DeallocationEvent: return inOperator( inData.toType( Type2Type<DeallocationEvent>() ) );
- case MemoryEventTypes::FullAllocationEvent: return inOperator( inData.toType( Type2Type<FullAllocationEvent>() ) );
- case MemoryEventTypes::Unknown: return inOperator( static_cast<uint8_t>( inEventType ) );
- }
- return TRetVal();
- }
-
- template<typename TRetVal, typename TOperator>
- inline TRetVal MemoryEvent::visit( TOperator inOp ) const
- {
- return physx::profile::visit<TRetVal>( mHeader.getType(), mData, inOp );
- }
-}}
-
-#endif // PXPVDSDK_PXPROFILEMEMORYEVENTS_H
diff --git a/PxShared/src/pvd/src/PxProfileScopedEvent.h b/PxShared/src/pvd/src/PxProfileScopedEvent.h
deleted file mode 100644
index 953fcf8..0000000
--- a/PxShared/src/pvd/src/PxProfileScopedEvent.h
+++ /dev/null
@@ -1,150 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILESCOPEDEVENT_H
-#define PXPVDSDK_PXPROFILESCOPEDEVENT_H
-
-#include "PxProfileBase.h"
-#include "PxProfileEventId.h"
-#include "PxProfileCompileTimeEventFilter.h"
-
-namespace physx { namespace profile {
-
-#define TO_PXPVDSDK_PXPROFILEEVENTID( subsystem, eventId ) PxProfileEventId( SubsystemIds::subsystem, EventIds::subsystem##eventId );
-
- /**
- \brief Template version of startEvent, called directly on provided profile buffer.
-
- \param inBuffer Profile event buffer.
- \param inId Profile event id.
- \param inContext Profile event context.
- */
- template<bool TEnabled, typename TBufferType>
- inline void startEvent( TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext )
- {
- if ( TEnabled && inBuffer ) inBuffer->startEvent( inId, inContext );
- }
-
- /**
- \brief Template version of stopEvent, called directly on provided profile buffer.
-
- \param inBuffer Profile event buffer.
- \param inId Profile event id.
- \param inContext Profile event context.
- */
- template<bool TEnabled, typename TBufferType>
- inline void stopEvent( TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext )
- {
- if ( TEnabled && inBuffer ) inBuffer->stopEvent( inId, inContext );
- }
-
- /**
- \brief Template version of startEvent, called directly on provided profile buffer.
-
- \param inEnabled If profile event is enabled.
- \param inBuffer Profile event buffer.
- \param inId Profile event id.
- \param inContext Profile event context.
- */
- template<typename TBufferType>
- inline void startEvent( bool inEnabled, TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext )
- {
- if ( inEnabled && inBuffer ) inBuffer->startEvent( inId, inContext );
- }
-
- /**
- \brief Template version of stopEvent, called directly on provided profile buffer.
-
- \param inEnabled If profile event is enabled.
- \param inBuffer Profile event buffer.
- \param inId Profile event id.
- \param inContext Profile event context.
- */
- template<typename TBufferType>
- inline void stopEvent( bool inEnabled, TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext )
- {
- if ( inEnabled && inBuffer ) inBuffer->stopEvent( inId, inContext );
- }
-
- /**
- \brief Template version of eventValue, called directly on provided profile buffer.
-
- \param inEnabled If profile event is enabled.
- \param inBuffer Profile event buffer.
- \param inId Profile event id.
- \param inContext Profile event context.
- \param inValue Event value.
- */
- template<typename TBufferType>
- inline void eventValue( bool inEnabled, TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext, int64_t inValue )
- {
- if ( inEnabled && inBuffer ) inBuffer->eventValue( inId, inContext, inValue );
- }
-
- template<bool TEnabled, typename TBufferType, uint16_t eventId>
- struct ScopedEventWithContext
- {
- uint64_t mContext;
- TBufferType* mBuffer;
- ScopedEventWithContext( TBufferType* inBuffer, uint64_t inContext)
- : mContext ( inContext )
- , mBuffer( inBuffer )
- {
- startEvent<true>( mBuffer, PxProfileEventId(eventId), mContext );
- }
- ~ScopedEventWithContext()
- {
- stopEvent<true>( mBuffer, PxProfileEventId(eventId), mContext );
- }
- };
-
- template<typename TBufferType, uint16_t eventId>
- struct ScopedEventWithContext<false,TBufferType,eventId> { ScopedEventWithContext( TBufferType*, uint64_t) {} };
-
- template<typename TBufferType>
- struct DynamicallyEnabledScopedEvent
- {
- TBufferType* mBuffer;
- PxProfileEventId mId;
- uint64_t mContext;
- DynamicallyEnabledScopedEvent( TBufferType* inBuffer, const PxProfileEventId& inId, uint64_t inContext)
- : mBuffer( inBuffer )
- , mId( inId )
- , mContext( inContext )
- {
- if(mBuffer)
- startEvent( mId.compileTimeEnabled, mBuffer, mId, mContext );
- }
- ~DynamicallyEnabledScopedEvent()
- {
- if(mBuffer)
- stopEvent( mId.compileTimeEnabled, mBuffer, mId, mContext );
- }
- };
-}}
-
-#endif // PXPVDSDK_PXPROFILESCOPEDEVENT_H
diff --git a/PxShared/src/pvd/src/PxProfileScopedMutexLock.h b/PxShared/src/pvd/src/PxProfileScopedMutexLock.h
deleted file mode 100644
index 9d21cb8..0000000
--- a/PxShared/src/pvd/src/PxProfileScopedMutexLock.h
+++ /dev/null
@@ -1,64 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILESCOPEDMUTEXLOCK_H
-#define PXPVDSDK_PXPROFILESCOPEDMUTEXLOCK_H
-
-#include "PxProfileBase.h"
-
-namespace physx { namespace profile {
-
- /**
- * Generic class to wrap any mutex type that has lock and unlock methods
- */
- template<typename TMutexType>
- struct ScopedLockImpl
- {
- TMutexType* mMutex;
- ScopedLockImpl( TMutexType* inM ) : mMutex( inM )
- {
- if ( mMutex ) mMutex->lock();
- }
- ~ScopedLockImpl()
- {
- if ( mMutex ) mMutex->unlock();
- }
- };
-
- /**
- * Null locking system that does nothing.
- */
- struct NullLock
- {
- template<typename TDataType> NullLock( TDataType*) {}
- };
-}}
-
-#endif // PXPVDSDK_PXPROFILESCOPEDMUTEXLOCK_H
diff --git a/PxShared/src/pvd/src/PxProfileZone.h b/PxShared/src/pvd/src/PxProfileZone.h
deleted file mode 100644
index 1573c2f..0000000
--- a/PxShared/src/pvd/src/PxProfileZone.h
+++ /dev/null
@@ -1,142 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEZONE_H
-#define PXPVDSDK_PXPROFILEZONE_H
-
-#include "foundation/PxPreprocessor.h"
-
-#include "PxProfileEventBufferClientManager.h"
-#include "PxProfileEventNames.h"
-#include "PxProfileEventSender.h"
-
-namespace physx {
- class PxAllocatorCallback;
-
- namespace profile {
-
- class PxProfileZoneManager;
-
- /**
- \brief The profiling system was setup in the expectation that there would be several
- systems that each had its own island of profile information. PhysX, client code,
- and APEX would be the first examples of these. Each one of these islands is represented
- by a profile zone.
-
- A profile zone combines a name, a place where all the events coming from its interface
- can flushed, and a mapping from event number to full event name.
-
- It also provides a top level filtering service where profile events
- can be filtered by event id.
-
- The profile zone implements a system where if there is no one
- listening to events it doesn't provide a mechanism to send them. In this way
- the event system is short circuited when there aren't any clients.
-
- All functions on this interface should be considered threadsafe.
-
- @see PxProfileZoneClientManager, PxProfileNameProvider, PxProfileEventSender, PxProfileEventFlusher
- */
- class PxProfileZone : public PxProfileZoneClientManager
- , public PxProfileNameProvider
- , public PxProfileEventSender
- , public PxProfileEventFlusher
- {
- protected:
- virtual ~PxProfileZone(){}
- public:
- /**
- \brief Get profile zone name.
- \return Zone name.
- */
- virtual const char* getName() = 0;
- /**
- \brief Release the profile zone.
- */
- virtual void release() = 0;
-
- /**
- \brief Set profile zone manager for the zone.
- \param inMgr Profile zone manager.
- */
- virtual void setProfileZoneManager(PxProfileZoneManager* inMgr) = 0;
- /**
- \brief Get profile zone manager for the zone.
- \return Profile zone manager.
- */
- virtual PxProfileZoneManager* getProfileZoneManager() = 0;
-
- /**
- \brief Get or create a new event id for a given name.
- If you pass in a previously defined event name (including one returned)
- from the name provider) you will just get the same event id back.
- \param inName Profile event name.
- */
- virtual uint16_t getEventIdForName( const char* inName ) = 0;
-
- /**
- \brief Specifies that it is a safe point to flush read-write name map into
- read-only map. Make sure getEventIdForName is not called from a different thread.
- */
- virtual void flushEventIdNameMap() = 0;
-
- /**
- \brief Reserve a contiguous set of profile event ids for a set of names.
-
- This function does not do any meaningful error checking other than to ensure
- that if it does generate new ids they are contiguous. If the first name is already
- registered, that is the ID that will be returned regardless of what other
- names are registered. Thus either use this function alone (without the above
- function) or don't use it.
- If you register "one","two","three" and the function returns an id of 4, then
- "one" is mapped to 4, "two" is mapped to 5, and "three" is mapped to 6.
-
- \param inNames set of names to register.
- \param inLen Length of the name list.
-
- \return The first id associated with the first name. The rest of the names
- will be associated with monotonically incrementing uint16_t values from the first
- id.
- */
- virtual uint16_t getEventIdsForNames( const char** inNames, uint32_t inLen ) = 0;
-
- /**
- \brief Create a new profile zone.
-
- \param inAllocator memory allocation is controlled through the foundation if one is passed in.
- \param inSDKName Name of the profile zone; useful for clients to understand where events came from.
- \param inNames Mapping from event id -> event name.
- \param inEventBufferByteSize Size of the canonical event buffer. This does not need to be a large number
- as profile events are fairly small individually.
- \return a profile zone implementation.
- */
- static PX_FOUNDATION_API PxProfileZone& createProfileZone(PxAllocatorCallback* inAllocator, const char* inSDKName, PxProfileNames inNames = PxProfileNames(), uint32_t inEventBufferByteSize = 0x10000 /*64k*/);
-
- };
-} }
-
-#endif // PXPVDSDK_PXPROFILEZONE_H
diff --git a/PxShared/src/pvd/src/PxProfileZoneImpl.h b/PxShared/src/pvd/src/PxProfileZoneImpl.h
deleted file mode 100644
index 981180f..0000000
--- a/PxShared/src/pvd/src/PxProfileZoneImpl.h
+++ /dev/null
@@ -1,318 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEZONEIMPL_H
-#define PXPVDSDK_PXPROFILEZONEIMPL_H
-
-#include "PxProfileZone.h"
-#include "PxProfileEventFilter.h"
-#include "PxProfileZoneManager.h"
-#include "PxProfileContextProviderImpl.h"
-#include "PxProfileScopedMutexLock.h"
-#include "PxProfileEventBufferAtomic.h"
-#include "PsMutex.h"
-
-namespace physx { namespace profile {
-
- /**
- \brief Simple event filter that enables all events.
- */
- struct PxProfileNullEventFilter
- {
- void setEventEnabled( const PxProfileEventId&, bool) { PX_ASSERT(false); }
- bool isEventEnabled( const PxProfileEventId&) const { return true; }
- };
-
- typedef shdfnd::MutexT<PxProfileWrapperReflectionAllocator<uint8_t> > TZoneMutexType;
- typedef ScopedLockImpl<TZoneMutexType> TZoneLockType;
- typedef EventBuffer< PxDefaultContextProvider, TZoneMutexType, TZoneLockType, PxProfileNullEventFilter > TZoneEventBufferType;
- //typedef EventBufferAtomic< PxDefaultContextProvider, TZoneMutexType, TZoneLockType, PxProfileNullEventFilter > TZoneEventBufferType;
-
- template<typename TNameProvider>
- class ZoneImpl : TZoneEventBufferType //private inheritance intended
- , public PxProfileZone
- , public PxProfileEventBufferClient
- {
- typedef shdfnd::MutexT<PxProfileWrapperReflectionAllocator<uint8_t> > TMutexType;
- typedef PxProfileHashMap<const char*, uint32_t> TNameToEvtIndexMap;
- //ensure we don't reuse event ids.
- typedef PxProfileHashMap<uint16_t, const char*> TEvtIdToNameMap;
- typedef TMutexType::ScopedLock TLockType;
-
-
- const char* mName;
- PxProfileAllocatorWrapper mWrapper;
- mutable TMutexType mMutex;
- PxProfileArray<PxProfileEventName> mEventNames;
- // to avoid locking, read-only and read-write map exist
- TNameToEvtIndexMap mNameToEvtIndexMapR;
- TNameToEvtIndexMap mNameToEvtIndexMapRW;
- //ensure we don't reuse event ids.
- TEvtIdToNameMap mEvtIdToNameMap;
-
- PxProfileZoneManager* mProfileZoneManager;
-
- PxProfileArray<PxProfileZoneClient*> mClients;
- volatile bool mEventsActive;
-
- PX_NOCOPY(ZoneImpl<TNameProvider>)
- public:
- ZoneImpl( PxAllocatorCallback* inAllocator, const char* inName, uint32_t bufferSize = 0x10000 /*64k*/, const TNameProvider& inProvider = TNameProvider() )
- : TZoneEventBufferType( inAllocator, bufferSize, PxDefaultContextProvider(), NULL, PxProfileNullEventFilter() )
- , mName( inName )
- , mWrapper( inAllocator )
- , mMutex( PxProfileWrapperReflectionAllocator<uint8_t>( mWrapper ) )
- , mEventNames( mWrapper )
- , mNameToEvtIndexMapR( mWrapper )
- , mNameToEvtIndexMapRW(mWrapper)
- , mEvtIdToNameMap( mWrapper )
- , mProfileZoneManager( NULL )
- , mClients( mWrapper )
- , mEventsActive( false )
- {
- TZoneEventBufferType::setBufferMutex( &mMutex );
- //Initialize the event name structure with existing names from the name provider.
- PxProfileNames theNames( inProvider.getProfileNames() );
- for ( uint32_t idx = 0; idx < theNames.eventCount; ++idx )
- {
- const PxProfileEventName& theName (theNames.events[idx]);
- doAddName( theName.name, theName.eventId.eventId, theName.eventId.compileTimeEnabled );
- }
- TZoneEventBufferType::addClient( *this );
- }
-
- virtual ~ZoneImpl() {
- if ( mProfileZoneManager != NULL )
- mProfileZoneManager->removeProfileZone( *this );
- mProfileZoneManager = NULL;
- TZoneEventBufferType::removeClient( *this );
- }
-
- void doAddName( const char* inName, uint16_t inEventId, bool inCompileTimeEnabled )
- {
- TLockType theLocker( mMutex );
- mEvtIdToNameMap.insert( inEventId, inName );
- uint32_t idx = static_cast<uint32_t>( mEventNames.size() );
- mNameToEvtIndexMapRW.insert( inName, idx );
- mEventNames.pushBack( PxProfileEventName( inName, PxProfileEventId( inEventId, inCompileTimeEnabled ) ) );
- }
-
- virtual void flushEventIdNameMap()
- {
- // copy the RW map into R map
- if (mNameToEvtIndexMapRW.size())
- {
- for (TNameToEvtIndexMap::Iterator iter = mNameToEvtIndexMapRW.getIterator(); !iter.done(); ++iter)
- {
- mNameToEvtIndexMapR.insert(iter->first, iter->second);
- }
- mNameToEvtIndexMapRW.clear();
- }
- }
-
- virtual uint16_t getEventIdForName( const char* inName )
- {
- return getEventIdsForNames( &inName, 1 );
- }
-
- virtual uint16_t getEventIdsForNames( const char** inNames, uint32_t inLen )
- {
- if ( inLen == 0 )
- return 0;
-
- // search the read-only map first
- const TNameToEvtIndexMap::Entry* theEntry( mNameToEvtIndexMapR.find( inNames[0] ) );
- if ( theEntry )
- return mEventNames[theEntry->second].eventId;
-
- TLockType theLocker(mMutex);
-
- const TNameToEvtIndexMap::Entry* theReEntry(mNameToEvtIndexMapRW.find(inNames[0]));
- if (theReEntry)
- return mEventNames[theReEntry->second].eventId;
-
- //Else git R dun.
- uint16_t nameSize = static_cast<uint16_t>( mEventNames.size() );
- //We don't allow 0 as an event id.
- uint16_t eventId = nameSize;
- //Find a contiguous set of unique event ids
- bool foundAnEventId = false;
- do
- {
- foundAnEventId = false;
- ++eventId;
- for ( uint16_t idx = 0; idx < inLen && foundAnEventId == false; ++idx )
- foundAnEventId = mEvtIdToNameMap.find( uint16_t(eventId + idx) ) != NULL;
- }
- while( foundAnEventId );
-
- uint32_t clientCount = mClients.size();
- for ( uint16_t nameIdx = 0; nameIdx < inLen; ++nameIdx )
- {
- uint16_t newId = uint16_t(eventId + nameIdx);
- doAddName( inNames[nameIdx], newId, true );
- for( uint32_t clientIdx =0; clientIdx < clientCount; ++clientIdx )
- mClients[clientIdx]->handleEventAdded( PxProfileEventName( inNames[nameIdx], PxProfileEventId( newId ) ) );
- }
-
- return eventId;
- }
-
- virtual void setProfileZoneManager(PxProfileZoneManager* inMgr)
- {
- mProfileZoneManager = inMgr;
- }
-
- virtual PxProfileZoneManager* getProfileZoneManager()
- {
- return mProfileZoneManager;
- }
-
-
-
- const char* getName() { return mName; }
-
- PxProfileEventBufferClient* getEventBufferClient() { return this; }
-
- //SDK implementation
-
- void addClient( PxProfileZoneClient& inClient )
- {
- TLockType lock( mMutex );
- mClients.pushBack( &inClient );
- mEventsActive = true;
- }
-
- void removeClient( PxProfileZoneClient& inClient )
- {
- TLockType lock( mMutex );
- for ( uint32_t idx =0; idx < mClients.size(); ++idx )
- {
- if ( mClients[idx] == &inClient )
- {
- inClient.handleClientRemoved();
- mClients.replaceWithLast( idx );
- break;
- }
- }
- mEventsActive = mClients.size() != 0;
- }
-
- virtual bool hasClients() const
- {
- return mEventsActive;
- }
-
- virtual PxProfileNames getProfileNames() const
- {
- TLockType theLocker( mMutex );
- const PxProfileEventName* theNames = mEventNames.begin();
- uint32_t theEventCount = uint32_t(mEventNames.size());
- return PxProfileNames( theEventCount, theNames );
- }
-
- virtual void release()
- {
- PX_PROFILE_DELETE( mWrapper.getAllocator(), this );
- }
-
- //Implementation chaining the buffer flush to our clients
- virtual void handleBufferFlush( const uint8_t* inData, uint32_t inLength )
- {
- TLockType theLocker( mMutex );
-
- uint32_t clientCount = mClients.size();
- for( uint32_t idx =0; idx < clientCount; ++idx )
- mClients[idx]->handleBufferFlush( inData, inLength );
- }
- //Happens if something removes all the clients from the manager.
- virtual void handleClientRemoved() {}
-
- //Send a profile event, optionally with a context. Events are sorted by thread
- //and context in the client side.
- virtual void startEvent( uint16_t inId, uint64_t contextId)
- {
- if( mEventsActive )
- {
- TZoneEventBufferType::startEvent( inId, contextId );
- }
- }
- virtual void stopEvent( uint16_t inId, uint64_t contextId)
- {
- if( mEventsActive )
- {
- TZoneEventBufferType::stopEvent( inId, contextId );
- }
- }
-
- virtual void startEvent( uint16_t inId, uint64_t contextId, uint32_t threadId)
- {
- if( mEventsActive )
- {
- TZoneEventBufferType::startEvent( inId, contextId, threadId );
- }
- }
- virtual void stopEvent( uint16_t inId, uint64_t contextId, uint32_t threadId )
- {
- if( mEventsActive )
- {
- TZoneEventBufferType::stopEvent( inId, contextId, threadId );
- }
- }
-
- virtual void atEvent(uint16_t inId, uint64_t contextId, uint32_t threadId, uint64_t start, uint64_t stop)
- {
- if (mEventsActive)
- {
- TZoneEventBufferType::startEvent(inId, threadId, contextId, 0, 0, start);
- TZoneEventBufferType::stopEvent(inId, threadId, contextId, 0, 0, stop);
- }
- }
-
- /**
- * Set an specific events value. This is different than the profiling value
- * for the event; it is a value recorded and kept around without a timestamp associated
- * with it. This value is displayed when the event itself is processed.
- */
- virtual void eventValue( uint16_t inId, uint64_t contextId, int64_t inValue )
- {
- if( mEventsActive )
- {
- TZoneEventBufferType::eventValue( inId, contextId, inValue );
- }
- }
- virtual void flushProfileEvents()
- {
- TZoneEventBufferType::flushProfileEvents();
- }
- };
-
-}}
-#endif // PXPVDSDK_PXPROFILEZONEIMPL_H
diff --git a/PxShared/src/pvd/src/PxProfileZoneManager.h b/PxShared/src/pvd/src/PxProfileZoneManager.h
deleted file mode 100644
index 9668460..0000000
--- a/PxShared/src/pvd/src/PxProfileZoneManager.h
+++ /dev/null
@@ -1,155 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPROFILEZONEMANAGER_H
-#define PXPVDSDK_PXPROFILEZONEMANAGER_H
-
-#include "PxProfileEventSender.h"
-#include "PxProfileEventNames.h"
-
-namespace physx {
-
- class PxAllocatorCallback;
-
- namespace profile {
-
- class PxProfileZone;
- class PxProfileNameProvider;
-
- /**
- \brief Profile zone handler for zone add/remove notification.
- */
- class PxProfileZoneHandler
- {
- protected:
- virtual ~PxProfileZoneHandler(){}
- public:
- /**
- \brief On zone added notification
-
- \note Not a threadsafe call; handlers are expected to be able to handle
- this from any thread.
-
- \param inSDK Added zone.
- */
- virtual void onZoneAdded( PxProfileZone& inSDK ) = 0;
- /**
- \brief On zone removed notification
-
- \note Not a threadsafe call; handlers are expected to be able to handle
- this from any thread.
-
- \param inSDK removed zone.
- */
- virtual void onZoneRemoved( PxProfileZone& inSDK ) = 0;
- };
-
- /**
- \brief The profiling system was setup in the expectation that there would be several
- systems that each had its own island of profile information. PhysX, client code,
- and APEX would be the first examples of these. Each one of these islands is represented
- by a profile zone.
-
- The Manager is a singleton-like object where all these different systems can be registered
- so that clients of the profiling system can have one point to capture *all* profiling events.
-
- Flushing the manager implies that you want to loop through all the profile zones and flush
- each one.
-
- @see PxProfileEventFlusher
- */
- class PxProfileZoneManager
- : public PxProfileEventFlusher //Tell all SDK's to flush their queue of profile events.
- {
- protected:
- virtual ~PxProfileZoneManager(){}
- public:
- /**
- \brief Add new profile zone for the manager.
- \note Threadsafe call, can be done from any thread. Handlers that are already connected
- will get a new callback on the current thread.
-
- \param inSDK Profile zone to add.
- */
- virtual void addProfileZone( PxProfileZone& inSDK ) = 0;
- /**
- \brief Removes profile zone from the manager.
- \note Threadsafe call, can be done from any thread. Handlers that are already connected
- will get a new callback on the current thread.
-
- \param inSDK Profile zone to remove.
- */
- virtual void removeProfileZone( PxProfileZone& inSDK ) = 0;
-
- /**
- \brief Add profile zone handler callback for the profile zone notifications.
-
- \note Threadsafe call. The new handler will immediately be notified about all
- known SDKs.
-
- \param inHandler Profile zone handler to add.
- */
- virtual void addProfileZoneHandler( PxProfileZoneHandler& inHandler ) = 0;
- /**
- \brief Removes profile zone handler callback for the profile zone notifications.
-
- \note Threadsafe call. The new handler will immediately be notified about all
- known SDKs.
-
- \param inHandler Profile zone handler to remove.
- */
- virtual void removeProfileZoneHandler( PxProfileZoneHandler& inHandler ) = 0;
-
-
- /**
- \brief Create a new profile zone. This means you don't need access to a PxFoundation to
- create your profile zone object, and your object is automatically registered with
- the profile zone manager.
-
- You still need to release your object when you are finished with it.
- \param inSDKName Name of the SDK object.
- \param inNames Option set of event id to name mappings.
- \param inEventBufferByteSize rough maximum size of the event buffer. May exceed this size
- by sizeof one event. When full an immediate call to all listeners is made.
- */
- virtual PxProfileZone& createProfileZone( const char* inSDKName, PxProfileNames inNames = PxProfileNames(), uint32_t inEventBufferByteSize = 0x4000 /*16k*/ ) = 0;
-
- /**
- \brief Releases the profile manager instance.
- */
- virtual void release() = 0;
-
- /**
- \brief Create the profile zone manager.
- \param inAllocatorCallback Allocator callback.
- */
- static PxProfileZoneManager& createProfileZoneManager(PxAllocatorCallback* inAllocatorCallback );
- };
-
-} }
-
-#endif // PXPVDSDK_PXPROFILEZONEMANAGER_H
diff --git a/PxShared/src/pvd/src/PxProfileZoneManagerImpl.h b/PxShared/src/pvd/src/PxProfileZoneManagerImpl.h
deleted file mode 100644
index 6542917..0000000
--- a/PxShared/src/pvd/src/PxProfileZoneManagerImpl.h
+++ /dev/null
@@ -1,174 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#ifndef PXPVDSDK_PXPROFILEZONEMANAGERIMPL_H
-#define PXPVDSDK_PXPROFILEZONEMANAGERIMPL_H
-
-#include "PxProfileZoneManager.h"
-#include "PxProfileBase.h"
-#include "PxProfileScopedMutexLock.h"
-#include "PxProfileZone.h"
-#include "PxProfileAllocatorWrapper.h"
-
-#include "PsArray.h"
-#include "PsMutex.h"
-
-namespace physx { namespace profile {
-
- struct NullEventNameProvider : public PxProfileNameProvider
- {
- virtual PxProfileNames getProfileNames() const { return PxProfileNames( 0, 0 ); }
- };
-
- class ZoneManagerImpl : public PxProfileZoneManager
- {
- typedef ScopedLockImpl<shdfnd::Mutex> TScopedLockType;
- PxProfileAllocatorWrapper mWrapper;
- PxProfileArray<PxProfileZone*> mZones;
- PxProfileArray<PxProfileZoneHandler*> mHandlers;
- shdfnd::Mutex mMutex;
-
- ZoneManagerImpl( const ZoneManagerImpl& inOther );
- ZoneManagerImpl& operator=( const ZoneManagerImpl& inOther );
-
- public:
-
- ZoneManagerImpl(PxAllocatorCallback* inFoundation)
- : mWrapper( inFoundation )
- , mZones( mWrapper )
- , mHandlers( mWrapper )
- {}
-
- virtual ~ZoneManagerImpl()
- {
- //This assert would mean that a profile zone is outliving us.
- //This will cause a crash when the profile zone is released.
- PX_ASSERT( mZones.size() == 0 );
- while( mZones.size() )
- removeProfileZone( *mZones.back() );
- }
-
- virtual void addProfileZone( PxProfileZone& inSDK )
- {
- TScopedLockType lock( &mMutex );
-
- if ( inSDK.getProfileZoneManager() != NULL )
- {
- if ( inSDK.getProfileZoneManager() == this )
- return;
- else //there must be two managers in the system somehow.
- {
- PX_ASSERT( false );
- inSDK.getProfileZoneManager()->removeProfileZone( inSDK );
- }
- }
- mZones.pushBack( &inSDK );
- inSDK.setProfileZoneManager( this );
- for ( uint32_t idx =0; idx < mHandlers.size(); ++idx )
- mHandlers[idx]->onZoneAdded( inSDK );
- }
-
- virtual void removeProfileZone( PxProfileZone& inSDK )
- {
- TScopedLockType lock( &mMutex );
- if ( inSDK.getProfileZoneManager() == NULL )
- return;
-
- else if ( inSDK.getProfileZoneManager() != this )
- {
- PX_ASSERT( false );
- inSDK.getProfileZoneManager()->removeProfileZone( inSDK );
- return;
- }
-
- inSDK.setProfileZoneManager( NULL );
- for ( uint32_t idx = 0; idx < mZones.size(); ++idx )
- {
- if ( mZones[idx] == &inSDK )
- {
- for ( uint32_t handler =0; handler < mHandlers.size(); ++handler )
- mHandlers[handler]->onZoneRemoved( inSDK );
- mZones.replaceWithLast( idx );
- }
- }
- }
-
- virtual void flushProfileEvents()
- {
- uint32_t sdkCount = mZones.size();
- for ( uint32_t idx = 0; idx < sdkCount; ++idx )
- mZones[idx]->flushProfileEvents();
- }
-
- virtual void addProfileZoneHandler( PxProfileZoneHandler& inHandler )
- {
- TScopedLockType lock( &mMutex );
- mHandlers.pushBack( &inHandler );
- for ( uint32_t idx = 0; idx < mZones.size(); ++idx )
- inHandler.onZoneAdded( *mZones[idx] );
- }
-
- virtual void removeProfileZoneHandler( PxProfileZoneHandler& inHandler )
- {
- TScopedLockType lock( &mMutex );
- for( uint32_t idx = 0; idx < mZones.size(); ++idx )
- inHandler.onZoneRemoved( *mZones[idx] );
- for( uint32_t idx = 0; idx < mHandlers.size(); ++idx )
- {
- if ( mHandlers[idx] == &inHandler )
- mHandlers.replaceWithLast( idx );
- }
- }
-
- virtual PxProfileZone& createProfileZone( const char* inSDKName, PxProfileNameProvider* inProvider, uint32_t inEventBufferByteSize )
- {
- NullEventNameProvider nullProvider;
- if ( inProvider == NULL )
- inProvider = &nullProvider;
- return createProfileZone( inSDKName, inProvider->getProfileNames(), inEventBufferByteSize );
- }
-
-
- virtual PxProfileZone& createProfileZone( const char* inSDKName, PxProfileNames inNames, uint32_t inEventBufferByteSize )
- {
- PxProfileZone& retval( PxProfileZone::createProfileZone( &mWrapper.getAllocator(), inSDKName, inNames, inEventBufferByteSize ) );
- addProfileZone( retval );
- return retval;
- }
-
- virtual void release()
- {
- PX_PROFILE_DELETE( mWrapper.getAllocator(), this );
- }
- };
-} }
-
-
-#endif // PXPVDSDK_PXPROFILEZONEMANAGERIMPL_H
diff --git a/PxShared/src/pvd/src/PxPvd.cpp b/PxShared/src/pvd/src/PxPvd.cpp
deleted file mode 100644
index 4e1eb09..0000000
--- a/PxShared/src/pvd/src/PxPvd.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvd.h"
-
-#include "PxPvdImpl.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-ForwardingAllocator gForwardingAllocator;
-PxAllocatorCallback* gPvdAllocatorCallback = &gForwardingAllocator;
-
-void SetPvdAllocatorCallback(PxAllocatorCallback* inAllocatorCallback)
-{
- gPvdAllocatorCallback = inAllocatorCallback;
-}
-
-} // namespace pvdsdk
-
-PxPvd* PxCreatePvd(PxFoundation& foundation)
-{
- pvdsdk::gPvdAllocatorCallback = &foundation.getAllocatorCallback();
- pvdsdk::PvdImpl::initialize();
- return pvdsdk::PvdImpl::getInstance();
-}
-
-} // namespace physx
diff --git a/PxShared/src/pvd/src/PxPvdBits.h b/PxShared/src/pvd/src/PxPvdBits.h
deleted file mode 100644
index b763065..0000000
--- a/PxShared/src/pvd/src/PxPvdBits.h
+++ /dev/null
@@ -1,173 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDBITS_H
-#define PXPVDSDK_PXPVDBITS_H
-
-#include "PxPvdObjectModelBaseTypes.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-// Marshallers cannot assume src is aligned, but they can assume dest is aligned.
-typedef void (*TSingleMarshaller)(const uint8_t* src, uint8_t* dest);
-typedef void (*TBlockMarshaller)(const uint8_t* src, uint8_t* dest, uint32_t numItems);
-
-template <uint8_t ByteCount>
-static inline void doSwapBytes(uint8_t* __restrict inData)
-{
- for(uint32_t idx = 0; idx < ByteCount / 2; ++idx)
- {
- uint32_t endIdx = ByteCount - idx - 1;
- uint8_t theTemp = inData[idx];
- inData[idx] = inData[endIdx];
- inData[endIdx] = theTemp;
- }
-}
-
-template <uint8_t ByteCount>
-static inline void doSwapBytes(uint8_t* __restrict inData, uint32_t itemCount)
-{
- uint8_t* end = inData + itemCount * ByteCount;
- for(; inData < end; inData += ByteCount)
- doSwapBytes<ByteCount>(inData);
-}
-
-static inline void swapBytes(uint8_t* __restrict dataPtr, uint32_t numBytes, uint32_t itemWidth)
-{
- uint32_t numItems = numBytes / itemWidth;
- switch(itemWidth)
- {
- case 1:
- break;
- case 2:
- doSwapBytes<2>(dataPtr, numItems);
- break;
- case 4:
- doSwapBytes<4>(dataPtr, numItems);
- break;
- case 8:
- doSwapBytes<8>(dataPtr, numItems);
- break;
- case 16:
- doSwapBytes<16>(dataPtr, numItems);
- break;
- default:
- PX_ASSERT(false);
- break;
- }
-}
-
-template <uint8_t TByteCount, bool TShouldSwap>
-struct PvdByteSwapper
-{
- void swapBytes(uint8_t* __restrict inData)
- {
- doSwapBytes<TByteCount>(inData);
- }
- void swapBytes(uint8_t* __restrict inData, uint32_t itemCount)
- {
- doSwapBytes<TByteCount>(inData, itemCount);
- }
- void swapBytes(uint8_t* __restrict dataPtr, uint32_t numBytes, uint32_t itemWidth)
- {
- physx::pvdsdk::swapBytes(dataPtr, numBytes, itemWidth);
- }
-};
-
-struct PvdNullSwapper
-{
-
- void swapBytes(uint8_t* __restrict)
- {
- }
- void swapBytes(uint8_t* __restrict, uint32_t)
- {
- }
- void swapBytes(uint8_t* __restrict, uint32_t, uint32_t)
- {
- }
-};
-// Anything that doesn't need swapping gets the null swapper
-template <uint8_t TByteCount>
-struct PvdByteSwapper<TByteCount, false> : public PvdNullSwapper
-{
-};
-// A 1 byte byte swapper can't really do anything.
-template <>
-struct PvdByteSwapper<1, true> : public PvdNullSwapper
-{
-};
-
-static inline void swapBytes(uint8_t&)
-{
-}
-static inline void swapBytes(int8_t&)
-{
-}
-static inline void swapBytes(uint16_t& inData)
-{
- doSwapBytes<2>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(int16_t& inData)
-{
- doSwapBytes<2>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(uint32_t& inData)
-{
- doSwapBytes<4>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(int32_t& inData)
-{
- doSwapBytes<4>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(float& inData)
-{
- doSwapBytes<4>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(uint64_t& inData)
-{
- doSwapBytes<8>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(int64_t& inData)
-{
- doSwapBytes<8>(reinterpret_cast<uint8_t*>(&inData));
-}
-static inline void swapBytes(double& inData)
-{
- doSwapBytes<8>(reinterpret_cast<uint8_t*>(&inData));
-}
-
-static inline bool checkLength(const uint8_t* inStart, const uint8_t* inStop, uint32_t inLength)
-{
- return static_cast<uint32_t>(inStop - inStart) >= inLength;
-}
-}
-}
-#endif // PXPVDSDK_PXPVDBITS_H
diff --git a/PxShared/src/pvd/src/PxPvdByteStreams.h b/PxShared/src/pvd/src/PxPvdByteStreams.h
deleted file mode 100644
index fff3c4f..0000000
--- a/PxShared/src/pvd/src/PxPvdByteStreams.h
+++ /dev/null
@@ -1,155 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDBYTESTREAMS_H
-#define PXPVDSDK_PXPVDBYTESTREAMS_H
-#include "PxPvdObjectModelBaseTypes.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-static inline uint32_t strLen(const char* inStr)
-{
- uint32_t len = 0;
- if(inStr)
- {
- while(*inStr)
- {
- ++len;
- ++inStr;
- }
- }
- return len;
-}
-
-class PvdInputStream
-{
- protected:
- virtual ~PvdInputStream()
- {
- }
-
- public:
- // Return false if you can't write the number of bytes requested
- // But make an absolute best effort to read the data...
- virtual bool read(uint8_t* buffer, uint32_t& len) = 0;
-
- template <typename TDataType>
- bool read(TDataType* buffer, uint32_t numItems)
- {
- uint32_t expected = numItems;
- uint32_t amountToRead = numItems * sizeof(TDataType);
- read(reinterpret_cast<uint8_t*>(buffer), amountToRead);
- numItems = amountToRead / sizeof(TDataType);
- PX_ASSERT(numItems == expected);
- return expected == numItems;
- }
-
- template <typename TDataType>
- PvdInputStream& operator>>(TDataType& data)
- {
- uint32_t dataSize = static_cast<uint32_t>(sizeof(TDataType));
- bool success = read(reinterpret_cast<uint8_t*>(&data), dataSize);
- // PX_ASSERT( success );
- // PX_ASSERT( dataSize == sizeof( data ) );
- (void)success;
- return *this;
- }
-};
-
-struct ByteSwappingPvdInputStream
-{
- protected:
- ByteSwappingPvdInputStream& operator=(ByteSwappingPvdInputStream& other);
-
- public:
- PvdInputStream& mStream;
- ByteSwappingPvdInputStream(PvdInputStream& stream) : mStream(stream)
- {
- }
-
- template <typename TDataType>
- bool read(TDataType* buffer, uint32_t& numItems)
- {
- bool retval = mStream.read(buffer, numItems);
- for(uint32_t idx = 0; idx < numItems; ++idx)
- swapBytes(buffer[idx]);
- return retval;
- }
-
- template <typename TDataType>
- ByteSwappingPvdInputStream& operator>>(TDataType& data)
- {
- mStream >> data;
- swapBytes(data);
- return *this;
- }
-};
-
-class PvdOutputStream
-{
- protected:
- virtual ~PvdOutputStream()
- {
- }
-
- public:
- // Return false if you can't write the number of bytes requested
- // But make an absolute best effort to write the data...
- virtual bool write(const uint8_t* buffer, uint32_t len) = 0;
- virtual bool directCopy(PvdInputStream& inStream, uint32_t len) = 0;
-
- template <typename TDataType>
- bool write(const TDataType* buffer, uint32_t numItems)
- {
- return write(reinterpret_cast<const uint8_t*>(buffer), numItems * sizeof(TDataType));
- }
-
- template <typename TDataType>
- PvdOutputStream& operator<<(const TDataType& data)
- {
- bool success = write(reinterpret_cast<const uint8_t*>(&data), sizeof(data));
- PX_ASSERT(success);
- (void)success;
- return *this;
- }
-
- PvdOutputStream& operator<<(const char* inString)
- {
- if(inString && *inString)
- {
- uint32_t len(strLen(inString));
- write(inString, len);
- }
- return *this;
- }
-};
-}
-}
-#endif // PXPVDSDK_PXPVDBYTESTREAMS_H
diff --git a/PxShared/src/pvd/src/PxPvdCommStreamEventSink.h b/PxShared/src/pvd/src/PxPvdCommStreamEventSink.h
deleted file mode 100644
index 57e8635..0000000
--- a/PxShared/src/pvd/src/PxPvdCommStreamEventSink.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDCOMMSTREAMEVENTSINK_H
-#define PXPVDSDK_PXPVDCOMMSTREAMEVENTSINK_H
-
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PxPvdCommStreamEvents.h"
-#include "PxPvdCommStreamTypes.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-class PvdCommStreamEventSink
-{
- public:
- template <typename TStreamType>
- static void writeStreamEvent(const EventSerializeable& evt, PvdCommStreamEventTypes::Enum evtType, TStreamType& stream)
- {
- EventStreamifier<TStreamType> streamifier_concrete(stream);
- PvdEventSerializer& streamifier(streamifier_concrete);
- streamifier.streamify(evtType);
- const_cast<EventSerializeable&>(evt).serialize(streamifier);
- }
-};
-
-} // pvd
-} // physx
-#endif // PXPVDSDK_PXPVDCOMMSTREAMEVENTSINK_H
diff --git a/PxShared/src/pvd/src/PxPvdCommStreamEvents.h b/PxShared/src/pvd/src/PxPvdCommStreamEvents.h
deleted file mode 100644
index 81770da..0000000
--- a/PxShared/src/pvd/src/PxPvdCommStreamEvents.h
+++ /dev/null
@@ -1,987 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDCOMMSTREAMEVENTS_H
-#define PXPVDSDK_PXPVDCOMMSTREAMEVENTS_H
-
-#include "foundation/PxVec3.h"
-#include "foundation/PxFlags.h"
-
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PsTime.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-struct CommStreamFlagTypes
-{
- enum Enum
- {
- Is64BitPtr = 1
- };
-};
-
-typedef PxFlags<CommStreamFlagTypes::Enum, uint32_t> CommStreamFlags;
-
-template <typename TDataType>
-struct PvdCommVariableSizedEventCheck
-{
- bool variable_size_check;
-};
-
-// Pick out the events that are possibly very large.
-// This helps us keep our buffers close to the size the user requested.
-#define DECLARE_TYPE_VARIABLE_SIZED(type) \
- template <> \
- struct PvdCommVariableSizedEventCheck<type> \
- { \
- uint32_t variable_size_check; \
- };
-
-struct NameHandleValue;
-struct StreamPropMessageArg;
-struct StringHandleEvent;
-struct CreateClass;
-struct DeriveClass;
-struct CreateProperty;
-struct CreatePropertyMessage;
-struct CreateInstance;
-struct SetPropertyValue;
-struct BeginSetPropertyValue;
-struct AppendPropertyValueData;
-struct EndSetPropertyValue;
-struct SetPropertyMessage;
-struct BeginPropertyMessageGroup;
-struct SendPropertyMessageFromGroup;
-struct EndPropertyMessageGroup;
-struct CreateDestroyInstanceProperty;
-struct PushBackObjectRef;
-struct RemoveObjectRef;
-struct BeginSection;
-struct EndSection;
-struct SetPickable;
-struct SetColor;
-struct SetIsTopLevel;
-struct SetCamera;
-struct AddProfileZone;
-struct AddProfileZoneEvent;
-struct StreamEndEvent;
-struct ErrorMessage;
-struct OriginShift;
-struct DestroyInstance;
-
-#define DECLARE_COMM_STREAM_EVENTS \
- \
-DECLARE_PVD_COMM_STREAM_EVENT(StringHandleEvent) \
-DECLARE_PVD_COMM_STREAM_EVENT(CreateClass) \
-DECLARE_PVD_COMM_STREAM_EVENT(DeriveClass) \
-DECLARE_PVD_COMM_STREAM_EVENT(CreateProperty) \
-DECLARE_PVD_COMM_STREAM_EVENT(CreatePropertyMessage) \
-DECLARE_PVD_COMM_STREAM_EVENT(CreateInstance) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetPropertyValue) \
-DECLARE_PVD_COMM_STREAM_EVENT(BeginSetPropertyValue) \
-DECLARE_PVD_COMM_STREAM_EVENT(AppendPropertyValueData) \
-DECLARE_PVD_COMM_STREAM_EVENT(EndSetPropertyValue) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetPropertyMessage) \
-DECLARE_PVD_COMM_STREAM_EVENT(BeginPropertyMessageGroup) \
-DECLARE_PVD_COMM_STREAM_EVENT(SendPropertyMessageFromGroup) \
-DECLARE_PVD_COMM_STREAM_EVENT(EndPropertyMessageGroup) \
-DECLARE_PVD_COMM_STREAM_EVENT(DestroyInstance) \
-DECLARE_PVD_COMM_STREAM_EVENT(PushBackObjectRef) \
-DECLARE_PVD_COMM_STREAM_EVENT(RemoveObjectRef) \
-DECLARE_PVD_COMM_STREAM_EVENT(BeginSection) \
-DECLARE_PVD_COMM_STREAM_EVENT(EndSection) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetPickable) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetColor) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetIsTopLevel) \
-DECLARE_PVD_COMM_STREAM_EVENT(SetCamera) \
-DECLARE_PVD_COMM_STREAM_EVENT(AddProfileZone) \
-DECLARE_PVD_COMM_STREAM_EVENT(AddProfileZoneEvent) \
-DECLARE_PVD_COMM_STREAM_EVENT(StreamEndEvent) \
-DECLARE_PVD_COMM_STREAM_EVENT(ErrorMessage) \
-DECLARE_PVD_COMM_STREAM_EVENT_NO_COMMA(OriginShift)
-
-struct PvdCommStreamEventTypes
-{
- enum Enum
- {
- Unknown = 0,
-#define DECLARE_PVD_COMM_STREAM_EVENT(x) x,
-#define DECLARE_PVD_COMM_STREAM_EVENT_NO_COMMA(x) x
- DECLARE_COMM_STREAM_EVENTS
-#undef DECLARE_PVD_COMM_STREAM_EVENT_NO_COMMA
-#undef DECLARE_PVD_COMM_STREAM_EVENT
- , Last
- };
-};
-
-template <typename TDataType>
-struct DatatypeToCommEventType
-{
- bool compile_error;
-};
-template <PvdCommStreamEventTypes::Enum TEnumType>
-struct CommEventTypeToDatatype
-{
- bool compile_error;
-};
-
-#define DECLARE_PVD_COMM_STREAM_EVENT(x) \
- template <> \
- struct DatatypeToCommEventType<x> \
- { \
- enum Enum \
- { \
- EEventTypeMap = PvdCommStreamEventTypes::x \
- }; \
- }; \
- template <> \
- struct CommEventTypeToDatatype<PvdCommStreamEventTypes::x> \
- { \
- typedef x TEventType; \
- };
-#define DECLARE_PVD_COMM_STREAM_EVENT_NO_COMMA(x) \
- \
-template<> struct DatatypeToCommEventType<x> \
- { \
- enum Enum \
- { \
- EEventTypeMap = PvdCommStreamEventTypes::x \
- }; \
- }; \
- \
-template<> struct CommEventTypeToDatatype<PvdCommStreamEventTypes::x> \
- { \
- typedef x TEventType; \
- };
-
-DECLARE_COMM_STREAM_EVENTS
-#undef DECLARE_PVD_COMM_STREAM_EVENT_NO_COMMA
-#undef DECLARE_PVD_COMM_STREAM_EVENT
-
-template <typename TDataType>
-PvdCommStreamEventTypes::Enum getCommStreamEventType()
-{
- return static_cast<PvdCommStreamEventTypes::Enum>(DatatypeToCommEventType<TDataType>::EEventTypeMap);
-}
-
-struct StreamNamespacedName
-{
- StringHandle mNamespace; // StringHandle handles
- StringHandle mName;
- StreamNamespacedName(StringHandle ns = 0, StringHandle nm = 0) : mNamespace(ns), mName(nm)
- {
- }
-};
-
-class EventSerializeable;
-
-class PvdEventSerializer
-{
- protected:
- virtual ~PvdEventSerializer()
- {
- }
-
- public:
- virtual void streamify(uint8_t& val) = 0;
- virtual void streamify(uint16_t& val) = 0;
- virtual void streamify(uint32_t& val) = 0;
- virtual void streamify(float& val) = 0;
- virtual void streamify(uint64_t& val) = 0;
- virtual void streamify(String& val) = 0;
- virtual void streamify(DataRef<const uint8_t>& data) = 0;
- virtual void streamify(DataRef<NameHandleValue>& data) = 0;
- virtual void streamify(DataRef<StreamPropMessageArg>& data) = 0;
- virtual void streamify(DataRef<StringHandle>& data) = 0;
-
- void streamify(StringHandle& hdl)
- {
- streamify(hdl.mHandle);
- }
- void streamify(CommStreamFlags& flags)
- {
- uint32_t val(flags);
- streamify(val);
- flags = CommStreamFlags(val);
- }
-
- void streamify(PvdCommStreamEventTypes::Enum& val)
- {
- uint8_t detyped = static_cast<uint8_t>(val);
- streamify(detyped);
- val = static_cast<PvdCommStreamEventTypes::Enum>(detyped);
- }
- void streamify(PropertyType::Enum& val)
- {
- uint8_t detyped = static_cast<uint8_t>(val);
- streamify(detyped);
- val = static_cast<PropertyType::Enum>(detyped);
- }
-
- void streamify(bool& val)
- {
- uint8_t detyped = uint8_t(val ? 1 : 0);
- streamify(detyped);
- val = detyped ? true : false;
- }
-
- void streamify(StreamNamespacedName& name)
- {
- streamify(name.mNamespace);
- streamify(name.mName);
- }
-
- void streamify(PvdColor& color)
- {
- streamify(color.r);
- streamify(color.g);
- streamify(color.b);
- streamify(color.a);
- }
-
- void streamify(PxVec3& vec)
- {
- streamify(vec.x);
- streamify(vec.y);
- streamify(vec.z);
- }
-
- static uint32_t measure(const EventSerializeable& evt);
-};
-
-class EventSerializeable
-{
- protected:
- virtual ~EventSerializeable()
- {
- }
-
- public:
- virtual void serialize(PvdEventSerializer& serializer) = 0;
-};
-
-/** Numbers generated from random.org
-129919156 17973702 401496246 144984007 336950759
-907025328 837150850 679717896 601529147 269478202
-*/
-struct StreamInitialization : public EventSerializeable
-{
- static uint32_t getStreamId()
- {
- return 837150850;
- }
- static uint32_t getStreamVersion()
- {
- return 1;
- }
-
- uint32_t mStreamId;
- uint32_t mStreamVersion;
- uint64_t mTimestampNumerator;
- uint64_t mTimestampDenominator;
- CommStreamFlags mStreamFlags;
- StreamInitialization()
- : mStreamId(getStreamId())
- , mStreamVersion(getStreamVersion())
- , mTimestampNumerator(physx::shdfnd::Time::getCounterFrequency().mNumerator * 10)
- , mTimestampDenominator(physx::shdfnd::Time::getCounterFrequency().mDenominator)
- , mStreamFlags(sizeof(void*) == 4 ? 0 : 1)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mStreamId);
- s.streamify(mStreamVersion);
- s.streamify(mTimestampNumerator);
- s.streamify(mTimestampDenominator);
- s.streamify(mStreamFlags);
- }
-};
-
-struct EventGroup : public EventSerializeable
-{
- uint32_t mDataSize; // in bytes, data directly follows this header
- uint32_t mNumEvents;
- uint64_t mStreamId;
- uint64_t mTimestamp;
-
- EventGroup(uint32_t dataSize = 0, uint32_t numEvents = 0, uint64_t streamId = 0, uint64_t ts = 0)
- : mDataSize(dataSize), mNumEvents(numEvents), mStreamId(streamId), mTimestamp(ts)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mDataSize);
- s.streamify(mNumEvents);
- s.streamify(mStreamId);
- s.streamify(mTimestamp);
- }
-};
-
-struct StringHandleEvent : public EventSerializeable
-{
- String mString;
- uint32_t mHandle;
- StringHandleEvent(String str, uint32_t hdl) : mString(str), mHandle(hdl)
- {
- }
- StringHandleEvent()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mString);
- s.streamify(mHandle);
- }
-};
-
-DECLARE_TYPE_VARIABLE_SIZED(StringHandleEvent)
-
-typedef uint64_t Timestamp;
-
-struct CreateClass : public EventSerializeable
-{
- StreamNamespacedName mName;
- CreateClass(StreamNamespacedName nm) : mName(nm)
- {
- }
- CreateClass()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mName);
- }
-};
-
-struct DeriveClass : public EventSerializeable
-{
- StreamNamespacedName mParent;
- StreamNamespacedName mChild;
-
- DeriveClass(StreamNamespacedName p, StreamNamespacedName c) : mParent(p), mChild(c)
- {
- }
- DeriveClass()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mParent);
- s.streamify(mChild);
- }
-};
-
-struct NameHandleValue : public EventSerializeable
-{
- StringHandle mName;
- uint32_t mValue;
- NameHandleValue(StringHandle name, uint32_t val) : mName(name), mValue(val)
- {
- }
- NameHandleValue()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mName);
- s.streamify(mValue);
- }
-};
-/*virtual PvdError createProperty( StreamNamespacedName clsName, StringHandle name, StringHandle semantic
- , StreamNamespacedName dtypeName, PropertyType::Enum propertyType
- , DataRef<NamedValue> values = DataRef<NamedValue>() ) = 0; */
-struct CreateProperty : public EventSerializeable
-{
- StreamNamespacedName mClass;
- StringHandle mName;
- StringHandle mSemantic;
- StreamNamespacedName mDatatypeName;
- PropertyType::Enum mPropertyType;
- DataRef<NameHandleValue> mValues;
-
- CreateProperty(StreamNamespacedName cls, StringHandle name, StringHandle semantic, StreamNamespacedName dtypeName,
- PropertyType::Enum ptype, DataRef<NameHandleValue> values)
- : mClass(cls), mName(name), mSemantic(semantic), mDatatypeName(dtypeName), mPropertyType(ptype), mValues(values)
- {
- }
- CreateProperty()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mClass);
- s.streamify(mName);
- s.streamify(mSemantic);
- s.streamify(mDatatypeName);
- s.streamify(mPropertyType);
- s.streamify(mValues);
- }
-};
-
-struct StreamPropMessageArg : public EventSerializeable
-{
- StringHandle mPropertyName;
- StreamNamespacedName mDatatypeName;
- uint32_t mMessageOffset;
- uint32_t mByteSize;
- StreamPropMessageArg(StringHandle pname, StreamNamespacedName dtypeName, uint32_t offset, uint32_t byteSize)
- : mPropertyName(pname), mDatatypeName(dtypeName), mMessageOffset(offset), mByteSize(byteSize)
- {
- }
-
- StreamPropMessageArg()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mPropertyName);
- s.streamify(mDatatypeName);
- s.streamify(mMessageOffset);
- s.streamify(mByteSize);
- }
-};
-
-/*
- virtual PvdError createPropertyMessage( StreamNamespacedName cls, StreamNamespacedName msgName
- , DataRef<PropertyMessageArg> entries, uint32_t messageSizeInBytes ) =
- 0;*/
-struct CreatePropertyMessage : public EventSerializeable
-{
- StreamNamespacedName mClass;
- StreamNamespacedName mMessageName;
- DataRef<StreamPropMessageArg> mMessageEntries;
- uint32_t mMessageByteSize;
-
- CreatePropertyMessage(StreamNamespacedName cls, StreamNamespacedName msgName, DataRef<StreamPropMessageArg> propArg,
- uint32_t messageByteSize)
- : mClass(cls), mMessageName(msgName), mMessageEntries(propArg), mMessageByteSize(messageByteSize)
- {
- }
- CreatePropertyMessage()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mClass);
- s.streamify(mMessageName);
- s.streamify(mMessageEntries);
- s.streamify(mMessageByteSize);
- }
-};
-
-/**Changing immediate data on instances*/
-
-// virtual PvdError createInstance( StreamNamespacedName cls, uint64_t instance ) = 0;
-struct CreateInstance : public EventSerializeable
-{
- StreamNamespacedName mClass;
- uint64_t mInstanceId;
-
- CreateInstance(StreamNamespacedName cls, uint64_t streamId) : mClass(cls), mInstanceId(streamId)
- {
- }
- CreateInstance()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mClass);
- s.streamify(mInstanceId);
- }
-};
-
-// virtual PvdError setPropertyValue( uint64_t instance, StringHandle name, DataRef<const uint8_t> data,
-// StreamNamespacedName incomingTypeName ) = 0;
-struct SetPropertyValue : public EventSerializeable
-{
- uint64_t mInstanceId;
- StringHandle mPropertyName;
- DataRef<const uint8_t> mData;
- StreamNamespacedName mIncomingTypeName;
- uint32_t mNumItems;
-
- SetPropertyValue(uint64_t instance, StringHandle name, DataRef<const uint8_t> data,
- StreamNamespacedName incomingTypeName, uint32_t numItems)
- : mInstanceId(instance), mPropertyName(name), mData(data), mIncomingTypeName(incomingTypeName), mNumItems(numItems)
- {
- }
-
- SetPropertyValue()
- {
- }
-
- void serializeBeginning(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mPropertyName);
- s.streamify(mIncomingTypeName);
- s.streamify(mNumItems);
- }
-
- void serialize(PvdEventSerializer& s)
- {
- serializeBeginning(s);
- s.streamify(mData);
- }
-};
-
-DECLARE_TYPE_VARIABLE_SIZED(SetPropertyValue)
-
-struct BeginSetPropertyValue : public EventSerializeable
-{
- uint64_t mInstanceId;
- StringHandle mPropertyName;
- StreamNamespacedName mIncomingTypeName;
-
- BeginSetPropertyValue(uint64_t instance, StringHandle name, StreamNamespacedName incomingTypeName)
- : mInstanceId(instance), mPropertyName(name), mIncomingTypeName(incomingTypeName)
- {
- }
- BeginSetPropertyValue()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mPropertyName);
- s.streamify(mIncomingTypeName);
- }
-};
-
-// virtual PvdError appendPropertyValueData( DataRef<const uint8_t> data ) = 0;
-struct AppendPropertyValueData : public EventSerializeable
-{
- DataRef<const uint8_t> mData;
- uint32_t mNumItems;
- AppendPropertyValueData(DataRef<const uint8_t> data, uint32_t numItems) : mData(data), mNumItems(numItems)
- {
- }
- AppendPropertyValueData()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mData);
- s.streamify(mNumItems);
- }
-};
-
-DECLARE_TYPE_VARIABLE_SIZED(AppendPropertyValueData)
-
-// virtual PvdError endSetPropertyValue() = 0;
-struct EndSetPropertyValue : public EventSerializeable
-{
- EndSetPropertyValue()
- {
- }
-
- void serialize(PvdEventSerializer&)
- {
- }
-};
-
-// virtual PvdError setPropertyMessage( uint64_t instance, StreamNamespacedName msgName, DataRef<const uint8_t> data ) =
-// 0;
-struct SetPropertyMessage : public EventSerializeable
-{
- uint64_t mInstanceId;
- StreamNamespacedName mMessageName;
- DataRef<const uint8_t> mData;
-
- SetPropertyMessage(uint64_t instance, StreamNamespacedName msgName, DataRef<const uint8_t> data)
- : mInstanceId(instance), mMessageName(msgName), mData(data)
- {
- }
-
- SetPropertyMessage()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mMessageName);
- s.streamify(mData);
- }
-};
-
-DECLARE_TYPE_VARIABLE_SIZED(SetPropertyMessage)
-
-// virtual PvdError beginPropertyMessageGroup( StreamNamespacedName msgName ) = 0;
-struct BeginPropertyMessageGroup : public EventSerializeable
-{
- StreamNamespacedName mMsgName;
- BeginPropertyMessageGroup(StreamNamespacedName msgName) : mMsgName(msgName)
- {
- }
- BeginPropertyMessageGroup()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mMsgName);
- }
-};
-
-// virtual PvdError sendPropertyMessageFromGroup( uint64_t instance, DataRef<const uint8_t*> data ) = 0;
-struct SendPropertyMessageFromGroup : public EventSerializeable
-{
- uint64_t mInstance;
- DataRef<const uint8_t> mData;
-
- SendPropertyMessageFromGroup(uint64_t instance, DataRef<const uint8_t> data) : mInstance(instance), mData(data)
- {
- }
- SendPropertyMessageFromGroup()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstance);
- s.streamify(mData);
- }
-};
-
-DECLARE_TYPE_VARIABLE_SIZED(SendPropertyMessageFromGroup)
-
-// virtual PvdError endPropertyMessageGroup() = 0;
-struct EndPropertyMessageGroup : public EventSerializeable
-{
- EndPropertyMessageGroup()
- {
- }
-
- void serialize(PvdEventSerializer&)
- {
- }
-};
-
-struct PushBackObjectRef : public EventSerializeable
-{
- uint64_t mInstanceId;
- StringHandle mProperty;
- uint64_t mObjectRef;
-
- PushBackObjectRef(uint64_t instId, StringHandle prop, uint64_t objRef)
- : mInstanceId(instId), mProperty(prop), mObjectRef(objRef)
- {
- }
-
- PushBackObjectRef()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mProperty);
- s.streamify(mObjectRef);
- }
-};
-
-struct RemoveObjectRef : public EventSerializeable
-{
- uint64_t mInstanceId;
- StringHandle mProperty;
- uint64_t mObjectRef;
-
- RemoveObjectRef(uint64_t instId, StringHandle prop, uint64_t objRef)
- : mInstanceId(instId), mProperty(prop), mObjectRef(objRef)
- {
- }
-
- RemoveObjectRef()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mProperty);
- s.streamify(mObjectRef);
- }
-};
-
-// virtual PvdError destroyInstance( uint64_t key ) = 0;
-struct DestroyInstance : public EventSerializeable
-{
- uint64_t mInstanceId;
- DestroyInstance(uint64_t instance) : mInstanceId(instance)
- {
- }
- DestroyInstance()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- }
-};
-
-// virtual PvdError beginSection( uint64_t sectionId, StringHandle name ) = 0;
-struct BeginSection : public EventSerializeable
-{
- uint64_t mSectionId;
- StringHandle mName;
- Timestamp mTimestamp;
- BeginSection(uint64_t sectionId, StringHandle name, uint64_t timestamp)
- : mSectionId(sectionId), mName(name), mTimestamp(timestamp)
- {
- }
- BeginSection()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mSectionId);
- s.streamify(mName);
- s.streamify(mTimestamp);
- }
-};
-// virtual PvdError endSection( uint64_t sectionId, StringHandle name ) = 0;
-struct EndSection : public EventSerializeable
-{
- uint64_t mSectionId;
- StringHandle mName;
- Timestamp mTimestamp;
- EndSection(uint64_t sectionId, StringHandle name, uint64_t timestamp)
- : mSectionId(sectionId), mName(name), mTimestamp(timestamp)
- {
- }
- EndSection()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mSectionId);
- s.streamify(mName);
- s.streamify(mTimestamp);
- }
-};
-
-// virtual void setPickable( void* instance, bool pickable ) = 0;
-struct SetPickable : public EventSerializeable
-{
- uint64_t mInstanceId;
- bool mPickable;
- SetPickable(uint64_t instId, bool pick) : mInstanceId(instId), mPickable(pick)
- {
- }
- SetPickable()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mPickable);
- }
-};
-// virtual void setColor( void* instance, const PvdColor& color ) = 0;
-struct SetColor : public EventSerializeable
-{
- uint64_t mInstanceId;
- PvdColor mColor;
- SetColor(uint64_t instId, PvdColor color) : mInstanceId(instId), mColor(color)
- {
- }
- SetColor()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mColor);
- }
-};
-
-// virtual void setColor( void* instance, const PvdColor& color ) = 0;
-struct SetIsTopLevel : public EventSerializeable
-{
- uint64_t mInstanceId;
- bool mIsTopLevel;
-
- SetIsTopLevel(uint64_t instId, bool topLevel) : mInstanceId(instId), mIsTopLevel(topLevel)
- {
- }
- SetIsTopLevel() : mIsTopLevel(false)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mIsTopLevel);
- }
-};
-
-struct SetCamera : public EventSerializeable
-{
- String mName;
- PxVec3 mPosition;
- PxVec3 mUp;
- PxVec3 mTarget;
- SetCamera(String name, const PxVec3& pos, const PxVec3& up, const PxVec3& target)
- : mName(name), mPosition(pos), mUp(up), mTarget(target)
- {
- }
- SetCamera() : mName(NULL)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mName);
- s.streamify(mPosition);
- s.streamify(mUp);
- s.streamify(mTarget);
- }
-};
-
-struct ErrorMessage : public EventSerializeable
-{
- uint32_t mCode;
- String mMessage;
- String mFile;
- uint32_t mLine;
-
- ErrorMessage(uint32_t code, String message, String file, uint32_t line)
- : mCode(code), mMessage(message), mFile(file), mLine(line)
- {
- }
-
- ErrorMessage() : mMessage(NULL), mFile(NULL)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mCode);
- s.streamify(mMessage);
- s.streamify(mFile);
- s.streamify(mLine);
- }
-};
-
-struct AddProfileZone : public EventSerializeable
-{
- uint64_t mInstanceId;
- String mName;
- AddProfileZone(uint64_t iid, String nm) : mInstanceId(iid), mName(nm)
- {
- }
- AddProfileZone() : mName(NULL)
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mName);
- }
-};
-
-struct AddProfileZoneEvent : public EventSerializeable
-{
- uint64_t mInstanceId;
- String mName;
- uint16_t mEventId;
- bool mCompileTimeEnabled;
- AddProfileZoneEvent(uint64_t iid, String nm, uint16_t eid, bool cte)
- : mInstanceId(iid), mName(nm), mEventId(eid), mCompileTimeEnabled(cte)
- {
- }
- AddProfileZoneEvent()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mName);
- s.streamify(mEventId);
- s.streamify(mCompileTimeEnabled);
- }
-};
-
-struct StreamEndEvent : public EventSerializeable
-{
- String mName;
- StreamEndEvent() : mName("StreamEnd")
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mName);
- }
-};
-
-struct OriginShift : public EventSerializeable
-{
- uint64_t mInstanceId;
- PxVec3 mShift;
-
- OriginShift(uint64_t iid, const PxVec3& shift) : mInstanceId(iid), mShift(shift)
- {
- }
- OriginShift()
- {
- }
-
- void serialize(PvdEventSerializer& s)
- {
- s.streamify(mInstanceId);
- s.streamify(mShift);
- }
-};
-} // pvdsdk
-} // physx
-
-#endif // PXPVDSDK_PXPVDCOMMSTREAMEVENTS_H
diff --git a/PxShared/src/pvd/src/PxPvdCommStreamSDKEventTypes.h b/PxShared/src/pvd/src/PxPvdCommStreamSDKEventTypes.h
deleted file mode 100644
index 4105730..0000000
--- a/PxShared/src/pvd/src/PxPvdCommStreamSDKEventTypes.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#define THERE_IS_NO_INCLUDE_GUARD_FOR_A_REASON
-
-DECLARE_PVD_COMM_STREAM_SDK_EVENT(SetPauseState)
-
-#undef THERE_IS_NO_INCLUDE_GUARD_FOR_A_REASON
diff --git a/PxShared/src/pvd/src/PxPvdCommStreamTypes.h b/PxShared/src/pvd/src/PxPvdCommStreamTypes.h
deleted file mode 100644
index cbfda4d..0000000
--- a/PxShared/src/pvd/src/PxPvdCommStreamTypes.h
+++ /dev/null
@@ -1,262 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDCOMMSTREAMTYPES_H
-#define PXPVDSDK_PXPVDCOMMSTREAMTYPES_H
-
-#include "foundation/PxErrorCallback.h"
-#include "pvd/PxPvdTransport.h"
-
-#include "PxPvdRenderBuffer.h"
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PxPvdCommStreamEvents.h"
-#include "PxPvdDataStream.h"
-#include "PsMutex.h"
-
-namespace physx
-{
-namespace profile
-{
-class PxProfileZone;
-class PxProfileMemoryEventBuffer;
-}
-namespace pvdsdk
-{
-struct PvdErrorMessage;
-class PvdObjectModelMetaData;
-
-DEFINE_PVD_TYPE_NAME_MAP(profile::PxProfileZone, "_debugger_", "PxProfileZone")
-DEFINE_PVD_TYPE_NAME_MAP(profile::PxProfileMemoryEventBuffer, "_debugger_", "PxProfileMemoryEventBuffer")
-DEFINE_PVD_TYPE_NAME_MAP(PvdErrorMessage, "_debugger_", "PvdErrorMessage")
-// All event streams are on the 'events' property of objects of these types
-static inline NamespacedName getMemoryEventTotalsClassName()
-{
- return NamespacedName("_debugger", "MemoryEventTotals");
-}
-
-class PvdOMMetaDataProvider
-{
- protected:
- virtual ~PvdOMMetaDataProvider()
- {
- }
-
- public:
- virtual void addRef() = 0;
- virtual void release() = 0;
- virtual PvdObjectModelMetaData& lock() = 0;
- virtual void unlock() = 0;
- virtual bool createInstance(const NamespacedName& clsName, const void* instance) = 0;
- virtual bool isInstanceValid(const void* instance) = 0;
- virtual void destroyInstance(const void* instance) = 0;
- virtual int32_t getInstanceClassType(const void* instance) = 0;
-};
-
-class PvdCommStreamInternalConnection;
-
-class PvdConnectionListener
-{
- protected:
- virtual ~PvdConnectionListener()
- {
- }
-
- public:
- virtual void onDisconnect(PvdCommStreamInternalConnection& connection) = 0;
- virtual void onInstanceDestroyed(const void* instance) = 0;
-};
-
-class PvdCommStreamEmbeddedTypes
-{
- public:
- static const char* getProfileEventStreamSemantic()
- {
- return "profile event stream";
- }
- static const char* getMemoryEventStreamSemantic()
- {
- return "memory event stream";
- }
- static const char* getRendererEventStreamSemantic()
- {
- return "render event stream";
- }
-};
-
-class PvdCommStreamEventBufferClient;
-
-template <typename TStreamType>
-struct EventStreamifier : public PvdEventSerializer
-{
- TStreamType& mBuffer;
- EventStreamifier(TStreamType& buf) : mBuffer(buf)
- {
- }
-
- template <typename TDataType>
- void write(const TDataType& type)
- {
- mBuffer.write(reinterpret_cast<const uint8_t*>(&type), sizeof(TDataType));
- }
- template <typename TDataType>
- void write(const TDataType* type, uint32_t count)
- {
- mBuffer.write(reinterpret_cast<const uint8_t*>(type), count * sizeof(TDataType));
- }
-
- void writeRef(DataRef<const uint8_t> data)
- {
- uint32_t amount = static_cast<uint32_t>(data.size());
- write(amount);
- write(data.begin(), amount);
- }
- void writeRef(DataRef<StringHandle> data)
- {
- uint32_t amount = static_cast<uint32_t>(data.size());
- write(amount);
- write(data.begin(), amount);
- }
- template <typename TDataType>
- void writeRef(DataRef<TDataType> data)
- {
- uint32_t amount = static_cast<uint32_t>(data.size());
- write(amount);
- for(uint32_t idx = 0; idx < amount; ++idx)
- {
- TDataType& dtype(const_cast<TDataType&>(data[idx]));
- dtype.serialize(*this);
- }
- }
-
- virtual void streamify(uint16_t& val)
- {
- write(val);
- }
- virtual void streamify(uint8_t& val)
- {
- write(val);
- }
- virtual void streamify(uint32_t& val)
- {
- write(val);
- }
- virtual void streamify(float& val)
- {
- write(val);
- }
- virtual void streamify(uint64_t& val)
- {
- write(val);
- }
- virtual void streamify(PvdDebugText& val)
- {
- write(val.color);
- write(val.position);
- write(val.size);
- streamify(val.string);
- }
-
- virtual void streamify(String& val)
- {
- uint32_t len = 0;
- String temp = nonNull(val);
- if(*temp)
- len = static_cast<uint32_t>(strlen(temp) + 1);
- write(len);
- write(val, len);
- }
- virtual void streamify(DataRef<const uint8_t>& val)
- {
- writeRef(val);
- }
- virtual void streamify(DataRef<NameHandleValue>& val)
- {
- writeRef(val);
- }
- virtual void streamify(DataRef<StreamPropMessageArg>& val)
- {
- writeRef(val);
- }
- virtual void streamify(DataRef<StringHandle>& val)
- {
- writeRef(val);
- }
-
- private:
- EventStreamifier& operator=(const EventStreamifier&);
-};
-
-struct MeasureStream
-{
- uint32_t mSize;
- MeasureStream() : mSize(0)
- {
- }
- template <typename TDataType>
- void write(const TDataType& val)
- {
- mSize += sizeof(val);
- }
- template <typename TDataType>
- void write(const TDataType*, uint32_t count)
- {
- mSize += sizeof(TDataType) * count;
- }
-};
-
-struct DataStreamState
-{
- enum Enum
- {
- Open,
- SetPropertyValue,
- PropertyMessageGroup
- };
-};
-
-class ExtendedEventSerializer : public PvdEventSerializer
-{
- protected:
- virtual ~ExtendedEventSerializer()
- {
- }
-
- public:
- virtual void setData(DataRef<const uint8_t> eventData) = 0;
- // True if this serializer performs byte swapping
- virtual bool performsSwap() = 0;
-
- virtual bool isGood() = 0;
-
- virtual void release() = 0;
-
- static ExtendedEventSerializer& createInputSerializer(bool swapBytes);
-};
-
-} // pvdsdk
-} // physx
-#endif // PXPVDSDK_PXPVDCOMMSTREAMTYPES_H
diff --git a/PxShared/src/pvd/src/PxPvdDataStream.cpp b/PxShared/src/pvd/src/PxPvdDataStream.cpp
deleted file mode 100644
index da13140..0000000
--- a/PxShared/src/pvd/src/PxPvdDataStream.cpp
+++ /dev/null
@@ -1,870 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#include "PxPvdDataStream.h"
-#include "PxPvdFoundation.h"
-#include "PxPvdCommStreamEvents.h"
-#include "PxPvdCommStreamEventSink.h"
-#include "PxPvdCommStreamTypes.h"
-#include "PxPvdDataStreamHelpers.h"
-#include "PxPvdObjectModelInternalTypes.h"
-#include "PxPvdImpl.h"
-#include "PsTime.h"
-#include "PsFoundation.h"
-#include "foundation/PxMemory.h"
-
-using namespace physx;
-using namespace physx::pvdsdk;
-using namespace physx::shdfnd;
-
-namespace
-{
-
-struct ScopedMetaData
-{
- PvdOMMetaDataProvider& mProvider;
- PvdObjectModelMetaData& mMeta;
- ScopedMetaData(PvdOMMetaDataProvider& provider) : mProvider(provider), mMeta(provider.lock())
- {
- }
- ~ScopedMetaData()
- {
- mProvider.unlock();
- }
- PvdObjectModelMetaData* operator->()
- {
- return &mMeta;
- }
-
- private:
- ScopedMetaData& operator=(const ScopedMetaData&);
-};
-
-struct PropertyDefinitionHelper : public PvdPropertyDefinitionHelper
-{
- PvdDataStream* mStream;
- PvdOMMetaDataProvider& mProvider;
- Array<char> mNameBuffer;
- Array<uint32_t> mNameStack;
- Array<NamedValue> mNamedValues;
- Array<PropertyMessageArg> mPropertyMessageArgs;
-
- PropertyDefinitionHelper(PvdOMMetaDataProvider& provider)
- : mStream(NULL)
- , mProvider(provider)
- , mNameBuffer("PropertyDefinitionHelper::mNameBuffer")
- , mNameStack("PropertyDefinitionHelper::mNameStack")
- , mNamedValues("PropertyDefinitionHelper::mNamedValues")
- , mPropertyMessageArgs("PropertyDefinitionHelper::mPropertyMessageArgs")
- {
- }
- void setStream(PvdDataStream* stream)
- {
- mStream = stream;
- }
-
- inline void appendStrToBuffer(const char* str)
- {
- if(str == NULL)
- return;
- size_t strLen = strlen(str);
- size_t endBufOffset = mNameBuffer.size();
- size_t resizeLen = endBufOffset;
- // account for null
- if(mNameBuffer.empty())
- resizeLen += 1;
- else
- endBufOffset -= 1;
-
- mNameBuffer.resize(static_cast<uint32_t>(resizeLen + strLen));
- char* endPtr = mNameBuffer.begin() + endBufOffset;
- PxMemCopy(endPtr, str, static_cast<uint32_t>(strLen));
- }
-
- virtual void pushName(const char* nm, const char* appender = ".")
- {
- size_t nameBufLen = mNameBuffer.size();
- mNameStack.pushBack(static_cast<uint32_t>(nameBufLen));
- if(mNameBuffer.empty() == false)
- appendStrToBuffer(appender);
- appendStrToBuffer(nm);
- mNameBuffer.back() = 0;
- }
-
- virtual void pushBracketedName(const char* inName, const char* leftBracket = "[", const char* rightBracket = "]")
- {
- size_t nameBufLen = mNameBuffer.size();
- mNameStack.pushBack(static_cast<uint32_t>(nameBufLen));
- appendStrToBuffer(leftBracket);
- appendStrToBuffer(inName);
- appendStrToBuffer(rightBracket);
- mNameBuffer.back() = 0;
- }
-
- virtual void popName()
- {
- if(mNameStack.empty())
- return;
- mNameBuffer.resize(static_cast<uint32_t>(mNameStack.back()));
- mNameStack.popBack();
- if(mNameBuffer.empty() == false)
- mNameBuffer.back() = 0;
- }
-
- virtual const char* getTopName()
- {
- if(mNameBuffer.size())
- return mNameBuffer.begin();
- return "";
- }
- virtual void clearNameStack()
- {
- mNameBuffer.clear();
- mNameStack.clear();
- }
-
- virtual void addNamedValue(const char* name, uint32_t value)
- {
- mNamedValues.pushBack(NamedValue(name, value));
- }
- virtual void clearNamedValues()
- {
- mNamedValues.clear();
- }
-
- virtual DataRef<NamedValue> getNamedValues()
- {
- return DataRef<NamedValue>(mNamedValues.begin(), mNamedValues.size());
- }
-
- virtual void createProperty(const NamespacedName& clsName, const char* inSemantic, const NamespacedName& dtypeName,
- PropertyType::Enum propType)
- {
- mStream->createProperty(clsName, getTopName(), inSemantic, dtypeName, propType, getNamedValues());
- clearNamedValues();
- }
- const char* registerStr(const char* str)
- {
- ScopedMetaData scopedProvider(mProvider);
- return scopedProvider->getStringTable().registerStr(str);
- }
- virtual void addPropertyMessageArg(const NamespacedName& inDatatype, uint32_t inOffset, uint32_t inSize)
- {
- mPropertyMessageArgs.pushBack(PropertyMessageArg(registerStr(getTopName()), inDatatype, inOffset, inSize));
- }
- virtual void addPropertyMessage(const NamespacedName& clsName, const NamespacedName& msgName,
- uint32_t inStructSizeInBytes)
- {
- if(mPropertyMessageArgs.empty())
- {
- PX_ASSERT(false);
- return;
- }
- mStream->createPropertyMessage(
- clsName, msgName, DataRef<PropertyMessageArg>(mPropertyMessageArgs.begin(), mPropertyMessageArgs.size()),
- inStructSizeInBytes);
- }
- virtual void clearPropertyMessageArgs()
- {
- mPropertyMessageArgs.clear();
- }
-
- private:
- PropertyDefinitionHelper& operator=(const PropertyDefinitionHelper&);
-};
-
-class PvdMemPool
-{
- // Link List
- Array<uint8_t*> mMemBuffer;
- uint32_t mLength;
- uint32_t mBufIndex;
-
- // 4k for one page
- static const int BUFFER_LENGTH = 4096;
- PX_NOCOPY(PvdMemPool)
- public:
- PvdMemPool(const char* bufDataName) : mMemBuffer(bufDataName), mLength(0), mBufIndex(0)
- {
- grow();
- }
-
- ~PvdMemPool()
- {
- for(uint32_t i = 0; i < mMemBuffer.size(); i++)
- {
- PX_FREE(mMemBuffer[i]);
- }
- }
-
- void grow()
- {
- if(mBufIndex + 1 < mMemBuffer.size())
- {
- mBufIndex++;
- }
- else
- {
- uint8_t* Buf = reinterpret_cast<uint8_t*>(PX_ALLOC(BUFFER_LENGTH, "PvdMemPool::mMemBuffer.buf"));
- mMemBuffer.pushBack(Buf);
- mBufIndex = mMemBuffer.size() - 1;
- }
- mLength = 0;
- }
-
- void* allocate(uint32_t length)
- {
- if(length > uint32_t(BUFFER_LENGTH))
- return NULL;
-
- if(length + mLength > uint32_t(BUFFER_LENGTH))
- grow();
-
- void* mem = reinterpret_cast<void*>(&mMemBuffer[mBufIndex][mLength]);
- mLength += length;
- return mem;
- }
-
- void clear()
- {
- mLength = 0;
- mBufIndex = 0;
- }
-};
-struct PvdOutStream : public PvdDataStream, public UserAllocated
-{
- HashMap<String, uint32_t> mStringHashMap;
- PvdOMMetaDataProvider& mMetaDataProvider;
- Array<uint8_t> mTempBuffer;
- PropertyDefinitionHelper mPropertyDefinitionHelper;
- DataStreamState::Enum mStreamState;
-
- ClassDescription mSPVClass;
- PropertyMessageDescription mMessageDesc;
- // Set property value and SetPropertyMessage calls require
- // us to write the data out to a separate buffer
- // when strings are involved.
- ForwardingMemoryBuffer mSPVBuffer;
- uint32_t mEventCount;
- uint32_t mPropertyMessageSize;
- bool mConnected;
- uint64_t mStreamId;
- Array<PvdCommand*> mPvdCommandArray;
- PvdMemPool mPvdCommandPool;
- PxPvdTransport& mTransport;
-
- PvdOutStream(PxPvdTransport& transport, PvdOMMetaDataProvider& provider, uint64_t streamId)
- : mStringHashMap("PvdOutStream::mStringHashMap")
- , mMetaDataProvider(provider)
- , mTempBuffer("PvdOutStream::mTempBuffer")
- , mPropertyDefinitionHelper(mMetaDataProvider)
- , mStreamState(DataStreamState::Open)
- , mSPVBuffer("PvdCommStreamBufferedEventSink::mSPVBuffer")
- , mEventCount(0)
- , mPropertyMessageSize(0)
- , mConnected(true)
- , mStreamId(streamId)
- , mPvdCommandArray("PvdCommStreamBufferedEventSink::mPvdCommandArray")
- , mPvdCommandPool("PvdCommStreamBufferedEventSink::mPvdCommandPool")
- , mTransport(transport)
- {
- mPropertyDefinitionHelper.setStream(this);
- }
- virtual ~PvdOutStream()
- {
- }
-
- virtual void release()
- {
- PVD_DELETE(this);
- }
-
- StringHandle toStream(String nm)
- {
- if(nm == NULL || *nm == 0)
- return 0;
- const HashMap<String, uint32_t>::Entry* entry(mStringHashMap.find(nm));
- if(entry)
- return entry->second;
- ScopedMetaData meta(mMetaDataProvider);
- StringHandle hdl = meta->getStringTable().strToHandle(nm);
- nm = meta->getStringTable().handleToStr(hdl);
- handlePvdEvent(StringHandleEvent(nm, hdl));
- mStringHashMap.insert(nm, hdl);
- return hdl;
- }
-
- StreamNamespacedName toStream(const NamespacedName& nm)
- {
- return StreamNamespacedName(toStream(nm.mNamespace), toStream(nm.mName));
- }
-
- bool isClassExist(const NamespacedName& nm)
- {
- ScopedMetaData meta(mMetaDataProvider);
- return meta->findClass(nm).hasValue();
- }
-
- bool createMetaClass(const NamespacedName& nm)
- {
- ScopedMetaData meta(mMetaDataProvider);
- meta->getOrCreateClass(nm);
- return true;
- }
-
- bool deriveMetaClass(const NamespacedName& parent, const NamespacedName& child)
- {
- ScopedMetaData meta(mMetaDataProvider);
- return meta->deriveClass(parent, child);
- }
-
-// You will notice that some functions are #pragma'd out throughout this file.
-// This is because they are only called from asserts which means they aren't
-// called in release. This causes warnings when building using snc which break
-// the build.
-#if PX_DEBUG
-
- bool propertyExists(const NamespacedName& nm, String pname)
- {
- ScopedMetaData meta(mMetaDataProvider);
- return meta->findProperty(nm, pname).hasValue();
- }
-
-#endif
-
- PvdError boolToError(bool val)
- {
- if(val)
- return PvdErrorType::Success;
- return PvdErrorType::NetworkError;
- }
-
- // PvdMetaDataStream
- virtual PvdError createClass(const NamespacedName& nm)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
-#if PX_DEBUG
- PX_ASSERT(isClassExist(nm) == false);
-#endif
- createMetaClass(nm);
- return boolToError(handlePvdEvent(CreateClass(toStream(nm))));
- }
-
- virtual PvdError deriveClass(const NamespacedName& parent, const NamespacedName& child)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
-#if PX_DEBUG
- PX_ASSERT(isClassExist(parent));
- PX_ASSERT(isClassExist(child));
-#endif
- deriveMetaClass(parent, child);
- return boolToError(handlePvdEvent(DeriveClass(toStream(parent), toStream(child))));
- }
-
- template <typename TDataType>
- TDataType* allocTemp(uint32_t numItems)
- {
- uint32_t desiredBytes = numItems * sizeof(TDataType);
- if(desiredBytes > mTempBuffer.size())
- mTempBuffer.resize(desiredBytes);
- TDataType* retval = reinterpret_cast<TDataType*>(mTempBuffer.begin());
- if(numItems)
- {
- PVD_FOREACH(idx, numItems) new (retval + idx) TDataType();
- }
- return retval;
- }
-
-#if PX_DEBUG
-
- // Property datatypes need to be uniform.
- // At this point, the data stream cannot handle properties that
- // A struct with a float member and a char member would work.
- // A struct with a float member and a long member would work (more efficiently).
- bool isValidPropertyDatatype(const NamespacedName& dtypeName)
- {
- ScopedMetaData meta(mMetaDataProvider);
- ClassDescription clsDesc(meta->findClass(dtypeName));
- return clsDesc.mRequiresDestruction == false;
- }
-
-#endif
-
- NamespacedName createMetaProperty(const NamespacedName& clsName, String name, String semantic,
- const NamespacedName& dtypeName, PropertyType::Enum propertyType)
- {
- ScopedMetaData meta(mMetaDataProvider);
- int32_t dtypeType = meta->findClass(dtypeName)->mClassId;
- NamespacedName typeName = dtypeName;
- if(dtypeType == getPvdTypeForType<String>())
- {
- dtypeType = getPvdTypeForType<StringHandle>();
- typeName = getPvdNamespacedNameForType<StringHandle>();
- }
- Option<PropertyDescription> propOpt =
- meta->createProperty(meta->findClass(clsName)->mClassId, name, semantic, dtypeType, propertyType);
- PX_ASSERT(propOpt.hasValue());
- PX_UNUSED(propOpt);
- return typeName;
- }
-
- virtual PvdError createProperty(const NamespacedName& clsName, String name, String semantic,
- const NamespacedName& incomingDtypeName, PropertyType::Enum propertyType,
- DataRef<NamedValue> values)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
-#if PX_DEBUG
- PX_ASSERT(isClassExist(clsName));
- PX_ASSERT(propertyExists(clsName, name) == false);
-#endif
- NamespacedName dtypeName(incomingDtypeName);
- if(safeStrEq(dtypeName.mName, "VoidPtr"))
- dtypeName.mName = "ObjectRef";
-#if PX_DEBUG
- PX_ASSERT(isClassExist(dtypeName));
- PX_ASSERT(isValidPropertyDatatype(dtypeName));
-#endif
- NamespacedName typeName = createMetaProperty(clsName, name, semantic, dtypeName, propertyType);
- // Can't have arrays of strings or arrays of string handles due to the difficulty
- // of quickly dealing with them on the network receiving side.
- if(propertyType == PropertyType::Array && safeStrEq(typeName.mName, "StringHandle"))
- {
- PX_ASSERT(false);
- return PvdErrorType::ArgumentError;
- }
- uint32_t numItems = values.size();
- NameHandleValue* streamValues = allocTemp<NameHandleValue>(numItems);
- PVD_FOREACH(idx, numItems)
- streamValues[idx] = NameHandleValue(toStream(values[idx].mName), values[idx].mValue);
- CreateProperty evt(toStream(clsName), toStream(name), toStream(semantic), toStream(typeName), propertyType,
- DataRef<NameHandleValue>(streamValues, numItems));
- return boolToError(handlePvdEvent(evt));
- }
-
- bool createMetaPropertyMessage(const NamespacedName& cls, const NamespacedName& msgName,
- DataRef<PropertyMessageArg> entries, uint32_t messageSizeInBytes)
- {
- ScopedMetaData meta(mMetaDataProvider);
- return meta->createPropertyMessage(cls, msgName, entries, messageSizeInBytes).hasValue();
- }
-#if PX_DEBUG
-
- bool messageExists(const NamespacedName& msgName)
- {
- ScopedMetaData meta(mMetaDataProvider);
- return meta->findPropertyMessage(msgName).hasValue();
- }
-
-#endif
-
- virtual PvdError createPropertyMessage(const NamespacedName& cls, const NamespacedName& msgName,
- DataRef<PropertyMessageArg> entries, uint32_t messageSizeInBytes)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
-#if PX_DEBUG
- PX_ASSERT(isClassExist(cls));
- PX_ASSERT(messageExists(msgName) == false);
-#endif
- createMetaPropertyMessage(cls, msgName, entries, messageSizeInBytes);
- uint32_t numItems = entries.size();
- StreamPropMessageArg* streamValues = allocTemp<StreamPropMessageArg>(numItems);
- PVD_FOREACH(idx, numItems)
- streamValues[idx] =
- StreamPropMessageArg(toStream(entries[idx].mPropertyName), toStream(entries[idx].mDatatypeName),
- entries[idx].mMessageOffset, entries[idx].mByteSize);
- CreatePropertyMessage evt(toStream(cls), toStream(msgName),
- DataRef<StreamPropMessageArg>(streamValues, numItems), messageSizeInBytes);
- return boolToError(handlePvdEvent(evt));
- }
-
- uint64_t toStream(const void* instance)
- {
- return PVD_POINTER_TO_U64(instance);
- }
- virtual PvdError createInstance(const NamespacedName& cls, const void* instance)
- {
- PX_ASSERT(isInstanceValid(instance) == false);
- PX_ASSERT(mStreamState == DataStreamState::Open);
- bool success = mMetaDataProvider.createInstance(cls, instance);
- PX_ASSERT(success);
- (void)success;
- return boolToError(handlePvdEvent(CreateInstance(toStream(cls), toStream(instance))));
- }
-
- virtual bool isInstanceValid(const void* instance)
- {
- return mMetaDataProvider.isInstanceValid(instance);
- }
-
-#if PX_DEBUG
-
- // If the property will fit or is already completely in memory
- bool checkPropertyType(const void* instance, String name, const NamespacedName& incomingType)
- {
- int32_t instType = mMetaDataProvider.getInstanceClassType(instance);
- ScopedMetaData meta(mMetaDataProvider);
- Option<PropertyDescription> prop = meta->findProperty(instType, name);
- if(prop.hasValue() == false)
- return false;
- int32_t propType = prop->mDatatype;
- int32_t incomingTypeId = meta->findClass(incomingType)->mClassId;
- if(incomingTypeId != getPvdTypeForType<VoidPtr>())
- {
- MarshalQueryResult result = meta->checkMarshalling(incomingTypeId, propType);
- bool possible = result.needsMarshalling == false || result.canMarshal;
- return possible;
- }
- else
- {
- if(propType != getPvdTypeForType<ObjectRef>())
- return false;
- }
- return true;
- }
-
-#endif
-
- DataRef<const uint8_t> bufferPropertyValue(ClassDescriptionSizeInfo info, DataRef<const uint8_t> data)
- {
- uint32_t realSize = info.mByteSize;
- uint32_t numItems = data.size() / realSize;
- if(info.mPtrOffsets.size() != 0)
- {
- mSPVBuffer.clear();
- PVD_FOREACH(item, numItems)
- {
- const uint8_t* itemPtr = data.begin() + item * realSize;
- mSPVBuffer.write(itemPtr, realSize);
- PVD_FOREACH(stringIdx, info.mPtrOffsets.size())
- {
- PtrOffset offset(info.mPtrOffsets[stringIdx]);
- if(offset.mOffsetType == PtrOffsetType::VoidPtrOffset)
- continue;
- const char* strPtr;
- physx::intrinsics::memCopy(&strPtr, itemPtr + offset.mOffset, sizeof(char*));
- strPtr = nonNull(strPtr);
- uint32_t len = safeStrLen(strPtr) + 1;
- mSPVBuffer.write(strPtr, len);
- }
- }
- data = DataRef<const uint8_t>(mSPVBuffer.begin(), mSPVBuffer.size());
- }
- return data;
- }
-
- virtual PvdError setPropertyValue(const void* instance, String name, DataRef<const uint8_t> data,
- const NamespacedName& incomingTypeName)
- {
-
- PX_ASSERT(isInstanceValid(instance));
-#if PX_DEBUG
- PX_ASSERT(isClassExist(incomingTypeName));
-#endif
- PX_ASSERT(mStreamState == DataStreamState::Open);
- ClassDescription clsDesc;
- {
- ScopedMetaData meta(mMetaDataProvider);
- clsDesc = meta->findClass(incomingTypeName);
- }
- uint32_t realSize = clsDesc.getNativeSize();
- uint32_t numItems = data.size() / realSize;
- data = bufferPropertyValue(clsDesc.getNativeSizeInfo(), data);
- SetPropertyValue evt(toStream(instance), toStream(name), data, toStream(incomingTypeName), numItems);
- return boolToError(handlePvdEvent(evt));
- }
-
- // Else if the property is very large (contact reports) you can send it in chunks.
- virtual PvdError beginSetPropertyValue(const void* instance, String name, const NamespacedName& incomingTypeName)
- {
- PX_ASSERT(isInstanceValid(instance));
-#if PX_DEBUG
- PX_ASSERT(isClassExist(incomingTypeName));
- PX_ASSERT(checkPropertyType(instance, name, incomingTypeName));
-#endif
- PX_ASSERT(mStreamState == DataStreamState::Open);
- mStreamState = DataStreamState::SetPropertyValue;
- {
- ScopedMetaData meta(mMetaDataProvider);
- mSPVClass = meta->findClass(incomingTypeName);
- }
- BeginSetPropertyValue evt(toStream(instance), toStream(name), toStream(incomingTypeName));
- return boolToError(handlePvdEvent(evt));
- }
-
- virtual PvdError appendPropertyValueData(DataRef<const uint8_t> data)
- {
- uint32_t realSize = mSPVClass.getNativeSize();
- uint32_t numItems = data.size() / realSize;
- data = bufferPropertyValue(mSPVClass.getNativeSizeInfo(), data);
- PX_ASSERT(mStreamState == DataStreamState::SetPropertyValue);
- return boolToError(handlePvdEvent(AppendPropertyValueData(data, numItems)));
- }
- virtual PvdError endSetPropertyValue()
- {
- PX_ASSERT(mStreamState == DataStreamState::SetPropertyValue);
- mStreamState = DataStreamState::Open;
- return boolToError(handlePvdEvent(EndSetPropertyValue()));
- }
-
-#if PX_DEBUG
-
- bool checkPropertyMessage(const void* instance, const NamespacedName& msgName)
- {
- int32_t clsId = mMetaDataProvider.getInstanceClassType(instance);
- ScopedMetaData meta(mMetaDataProvider);
- PropertyMessageDescription desc(meta->findPropertyMessage(msgName));
- bool retval = meta->isDerivedFrom(clsId, desc.mClassId);
- return retval;
- }
-
-#endif
-
- DataRef<const uint8_t> bufferPropertyMessage(const PropertyMessageDescription& desc, DataRef<const uint8_t> data)
- {
- if(desc.mStringOffsets.size())
- {
- mSPVBuffer.clear();
- mSPVBuffer.write(data.begin(), data.size());
- PVD_FOREACH(idx, desc.mStringOffsets.size())
- {
- const char* strPtr;
- physx::intrinsics::memCopy(&strPtr, data.begin() + desc.mStringOffsets[idx], sizeof(char*));
- strPtr = nonNull(strPtr);
- uint32_t len = safeStrLen(strPtr) + 1;
- mSPVBuffer.write(strPtr, len);
- }
- data = DataRef<const uint8_t>(mSPVBuffer.begin(), mSPVBuffer.end());
- }
- return data;
- }
-
- virtual PvdError setPropertyMessage(const void* instance, const NamespacedName& msgName, DataRef<const uint8_t> data)
- {
- ScopedMetaData meta(mMetaDataProvider);
- PX_ASSERT(isInstanceValid(instance));
-#if PX_DEBUG
- PX_ASSERT(messageExists(msgName));
- PX_ASSERT(checkPropertyMessage(instance, msgName));
-#endif
- PropertyMessageDescription desc(meta->findPropertyMessage(msgName));
- if(data.size() < desc.mMessageByteSize)
- {
- PX_ASSERT(false);
- return PvdErrorType::ArgumentError;
- }
- data = bufferPropertyMessage(desc, data);
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(SetPropertyMessage(toStream(instance), toStream(msgName), data)));
- }
-
-#if PX_DEBUG
-
- bool checkBeginPropertyMessageGroup(const NamespacedName& msgName)
- {
- ScopedMetaData meta(mMetaDataProvider);
- PropertyMessageDescription desc(meta->findPropertyMessage(msgName));
- return desc.mStringOffsets.size() == 0;
- }
-
-#endif
- // If you need to send of lot of identical messages, this avoids a hashtable lookup per message.
- virtual PvdError beginPropertyMessageGroup(const NamespacedName& msgName)
- {
-#if PX_DEBUG
- PX_ASSERT(messageExists(msgName));
- PX_ASSERT(checkBeginPropertyMessageGroup(msgName));
-#endif
- PX_ASSERT(mStreamState == DataStreamState::Open);
- mStreamState = DataStreamState::PropertyMessageGroup;
- ScopedMetaData meta(mMetaDataProvider);
- mMessageDesc = meta->findPropertyMessage(msgName);
- return boolToError(handlePvdEvent(BeginPropertyMessageGroup(toStream(msgName))));
- }
-
- virtual PvdError sendPropertyMessageFromGroup(const void* instance, DataRef<const uint8_t> data)
- {
- PX_ASSERT(mStreamState == DataStreamState::PropertyMessageGroup);
- PX_ASSERT(isInstanceValid(instance));
-#if PX_DEBUG
- PX_ASSERT(checkPropertyMessage(instance, mMessageDesc.mMessageName));
-#endif
- if(mMessageDesc.mMessageByteSize != data.size())
- {
- PX_ASSERT(false);
- return PvdErrorType::ArgumentError;
- }
- if(data.size() < mMessageDesc.mMessageByteSize)
- return PvdErrorType::ArgumentError;
- data = bufferPropertyMessage(mMessageDesc, data);
- return boolToError(handlePvdEvent(SendPropertyMessageFromGroup(toStream(instance), data)));
- }
- virtual PvdError endPropertyMessageGroup()
- {
- PX_ASSERT(mStreamState == DataStreamState::PropertyMessageGroup);
- mStreamState = DataStreamState::Open;
- return boolToError(handlePvdEvent(EndPropertyMessageGroup()));
- }
- virtual PvdError pushBackObjectRef(const void* instance, String propName, const void* data)
- {
- PX_ASSERT(isInstanceValid(instance));
- PX_ASSERT(isInstanceValid(data));
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(PushBackObjectRef(toStream(instance), toStream(propName), toStream(data))));
- }
- virtual PvdError removeObjectRef(const void* instance, String propName, const void* data)
- {
- PX_ASSERT(isInstanceValid(instance));
- PX_ASSERT(isInstanceValid(data));
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(RemoveObjectRef(toStream(instance), toStream(propName), toStream(data))));
- }
- // Instance elimination.
- virtual PvdError destroyInstance(const void* instance)
- {
- PX_ASSERT(isInstanceValid(instance));
- PX_ASSERT(mStreamState == DataStreamState::Open);
- mMetaDataProvider.destroyInstance(instance);
- return boolToError(handlePvdEvent(DestroyInstance(toStream(instance))));
- }
-
- // Profiling hooks
- virtual PvdError beginSection(const void* instance, String name)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(
- BeginSection(toStream(instance), toStream(name), Time::getCurrentCounterValue())));
- }
-
- virtual PvdError endSection(const void* instance, String name)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(
- EndSection(toStream(instance), toStream(name), Time::getCurrentCounterValue())));
- }
-
- virtual PvdError originShift(const void* scene, PxVec3 shift)
- {
- PX_ASSERT(mStreamState == DataStreamState::Open);
- return boolToError(handlePvdEvent(OriginShift(toStream(scene), shift)));
- }
-
- virtual void addProfileZone(void* zone, const char* name)
- {
- handlePvdEvent(AddProfileZone(toStream(zone), name));
- }
- virtual void addProfileZoneEvent(void* zone, const char* name, uint16_t eventId, bool compileTimeEnabled)
- {
- handlePvdEvent(AddProfileZoneEvent(toStream(zone), name, eventId, compileTimeEnabled));
- }
-
- // add a variable sized event
- void addEvent(const EventSerializeable& evt, PvdCommStreamEventTypes::Enum evtType)
- {
- MeasureStream measure;
- PvdCommStreamEventSink::writeStreamEvent(evt, evtType, measure);
- EventGroup evtGroup(measure.mSize, 1, mStreamId, Time::getCurrentCounterValue());
- EventStreamifier<PxPvdTransport> streamifier(mTransport.lock());
- evtGroup.serialize(streamifier);
- PvdCommStreamEventSink::writeStreamEvent(evt, evtType, mTransport);
- mTransport.unlock();
- }
-
- void setIsTopLevelUIElement(const void* instance, bool topLevel)
- {
- addEvent(SetIsTopLevel(static_cast<uint64_t>(reinterpret_cast<size_t>(instance)), topLevel),
- getCommStreamEventType<SetIsTopLevel>());
- }
-
- void sendErrorMessage(uint32_t code, const char* message, const char* file, uint32_t line)
- {
- addEvent(ErrorMessage(code, message, file, line), getCommStreamEventType<ErrorMessage>());
- }
-
- void updateCamera(const char* name, const PxVec3& origin, const PxVec3& up, const PxVec3& target)
- {
- addEvent(SetCamera(name, origin, up, target), getCommStreamEventType<SetCamera>());
- }
-
- template <typename TEventType>
- bool handlePvdEvent(const TEventType& evt)
- {
- addEvent(evt, getCommStreamEventType<TEventType>());
- return mConnected;
- }
-
- virtual PvdPropertyDefinitionHelper& getPropertyDefinitionHelper()
- {
- mPropertyDefinitionHelper.clearBufferedData();
- return mPropertyDefinitionHelper;
- }
-
- virtual bool isConnected()
- {
- return mConnected;
- }
-
- virtual void* allocateMemForCmd(uint32_t length)
- {
- return mPvdCommandPool.allocate(length);
- }
-
- virtual void pushPvdCommand(PvdCommand& cmd)
- {
- mPvdCommandArray.pushBack(&cmd);
- }
-
- virtual void flushPvdCommand()
- {
- uint32_t cmdQueueSize = mPvdCommandArray.size();
- for(uint32_t i = 0; i < cmdQueueSize; i++)
- {
- if(mPvdCommandArray[i])
- {
- // if(mPvdCommandArray[i]->canRun(*this))
- mPvdCommandArray[i]->run(*this);
- mPvdCommandArray[i]->~PvdCommand();
- }
- }
- mPvdCommandArray.clear();
- mPvdCommandPool.clear();
- }
-
- PX_NOCOPY(PvdOutStream)
-};
-}
-
-PvdDataStream* PvdDataStream::create(PxPvd* pvd)
-{
- if(pvd == NULL)
- {
- getFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, "PvdDataStream::create - pvd must be non-NULL!");
- return NULL;
- }
-
- PvdImpl* pvdImpl = static_cast<PvdImpl*>(pvd);
- return PVD_NEW(PvdOutStream)(*pvdImpl->getTransport(), pvdImpl->getMetaDataProvider(), pvdImpl->getNextStreamId());
-}
diff --git a/PxShared/src/pvd/src/PxPvdDefaultFileTransport.cpp b/PxShared/src/pvd/src/PxPvdDefaultFileTransport.cpp
deleted file mode 100644
index e3499a6..0000000
--- a/PxShared/src/pvd/src/PxPvdDefaultFileTransport.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvdTransport.h"
-#include "foundation/PxAssert.h"
-
-#include "PxPvdDefaultFileTransport.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-PvdDefaultFileTransport::PvdDefaultFileTransport(const char* name) : mConnected(false), mWrittenData(0), mLocked(false)
-{
- mFileBuffer = PX_NEW(PsFileBuffer)(name, PxFileBuf::OPEN_WRITE_ONLY);
-}
-
-PvdDefaultFileTransport::~PvdDefaultFileTransport()
-{
-}
-
-bool PvdDefaultFileTransport::connect()
-{
- PX_ASSERT(mFileBuffer);
- mConnected = mFileBuffer->isOpen();
- return mConnected;
-}
-
-void PvdDefaultFileTransport::disconnect()
-{
- mConnected = false;
-}
-
-bool PvdDefaultFileTransport::isConnected()
-{
- return mConnected;
-}
-
-bool PvdDefaultFileTransport::write(const uint8_t* inBytes, uint32_t inLength)
-{
- PX_ASSERT(mLocked);
- PX_ASSERT(mFileBuffer);
- if (mConnected)
- {
- uint32_t len = mFileBuffer->write(inBytes, inLength);
- mWrittenData += len;
- return len == inLength;
- }
- else
- return false;
-}
-
-PxPvdTransport& PvdDefaultFileTransport::lock()
-{
- mMutex.lock();
- PX_ASSERT(!mLocked);
- mLocked = true;
- return *this;
-}
-
-void PvdDefaultFileTransport::unlock()
-{
- PX_ASSERT(mLocked);
- mLocked = false;
- mMutex.unlock();
-}
-
-void PvdDefaultFileTransport::flush()
-{
-}
-
-uint64_t PvdDefaultFileTransport::getWrittenDataSize()
-{
- return mWrittenData;
-}
-
-void PvdDefaultFileTransport::release()
-{
- if (mFileBuffer)
- {
- mFileBuffer->close();
- delete mFileBuffer;
- }
- mFileBuffer = NULL;
- PX_DELETE(this);
-}
-
-} // namespace pvdsdk
-
-PxPvdTransport* PxDefaultPvdFileTransportCreate(const char* name)
-{
- return PX_NEW(pvdsdk::PvdDefaultFileTransport)(name);
-}
-
-} // namespace physx
-
diff --git a/PxShared/src/pvd/src/PxPvdDefaultFileTransport.h b/PxShared/src/pvd/src/PxPvdDefaultFileTransport.h
deleted file mode 100644
index 9f4166f..0000000
--- a/PxShared/src/pvd/src/PxPvdDefaultFileTransport.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDDEFAULTFILETRANSPORT_H
-#define PXPVDSDK_PXPVDDEFAULTFILETRANSPORT_H
-
-#include "pvd/PxPvdTransport.h"
-
-#include "PsUserAllocated.h"
-#include "PsFileBuffer.h"
-#include "PsMutex.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-class PvdDefaultFileTransport : public physx::PxPvdTransport, public physx::shdfnd::UserAllocated
-{
- PX_NOCOPY(PvdDefaultFileTransport)
- public:
- PvdDefaultFileTransport(const char* name);
- virtual ~PvdDefaultFileTransport();
-
- virtual bool connect();
- virtual void disconnect();
- virtual bool isConnected();
-
- virtual bool write(const uint8_t* inBytes, uint32_t inLength);
-
- virtual PxPvdTransport& lock();
- virtual void unlock();
-
- virtual void flush();
-
- virtual uint64_t getWrittenDataSize();
-
- virtual void release();
-
- private:
- physx::PsFileBuffer* mFileBuffer;
- bool mConnected;
- uint64_t mWrittenData;
- physx::shdfnd::Mutex mMutex;
- bool mLocked; // for debug, remove it when finished
-};
-
-} // pvdsdk
-} // physx
-
-#endif // PXPVDSDK_PXPVDDEFAULTFILETRANSPORT_H
diff --git a/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.cpp b/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.cpp
deleted file mode 100644
index 48b94b1..0000000
--- a/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.cpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvdTransport.h"
-
-#include "PxPvdDefaultSocketTransport.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-PvdDefaultSocketTransport::PvdDefaultSocketTransport(const char* host, int port, unsigned int timeoutInMilliseconds)
-: mHost(host), mPort(uint16_t(port)), mTimeout(timeoutInMilliseconds), mConnected(false), mWrittenData(0)
-{
-}
-
-PvdDefaultSocketTransport::~PvdDefaultSocketTransport()
-{
-}
-
-bool PvdDefaultSocketTransport::connect()
-{
- if(mConnected)
- return true;
-
- if(mSocket.connect(mHost, mPort, mTimeout))
- {
- mSocket.setBlocking(true);
- mConnected = true;
- }
- return mConnected;
-}
-
-void PvdDefaultSocketTransport::disconnect()
-{
- mSocket.flush();
- mSocket.disconnect();
- mConnected = false;
-}
-
-bool PvdDefaultSocketTransport::isConnected()
-{
- return mSocket.isConnected();
-}
-
-bool PvdDefaultSocketTransport::write(const uint8_t* inBytes, uint32_t inLength)
-{
- if(mConnected)
- {
- if(inLength == 0)
- return true;
-
- uint32_t amountWritten = 0;
- uint32_t totalWritten = 0;
- do
- {
- // Sockets don't have to write as much as requested, so we need
- // to wrap this call in a do/while loop.
- // If they don't write any bytes then we consider them disconnected.
- amountWritten = mSocket.write(inBytes, inLength);
- inLength -= amountWritten;
- inBytes += amountWritten;
- totalWritten += amountWritten;
- } while(inLength && amountWritten);
-
- if(amountWritten == 0)
- return false;
-
- mWrittenData += totalWritten;
-
- return true;
- }
- else
- return false;
-}
-
-PxPvdTransport& PvdDefaultSocketTransport::lock()
-{
- mMutex.lock();
- return *this;
-}
-
-void PvdDefaultSocketTransport::unlock()
-{
- mMutex.unlock();
-}
-
-void PvdDefaultSocketTransport::flush()
-{
- mSocket.flush();
-}
-
-uint64_t PvdDefaultSocketTransport::getWrittenDataSize()
-{
- return mWrittenData;
-}
-
-void PvdDefaultSocketTransport::release()
-{
- PX_DELETE(this);
-}
-
-} // namespace pvdsdk
-
-PxPvdTransport* PxDefaultPvdSocketTransportCreate(const char* host, int port, unsigned int timeoutInMilliseconds)
-{
- return PX_NEW(pvdsdk::PvdDefaultSocketTransport)(host, port, timeoutInMilliseconds);
-}
-
-} // namespace physx
diff --git a/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.h b/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.h
deleted file mode 100644
index b02b934..0000000
--- a/PxShared/src/pvd/src/PxPvdDefaultSocketTransport.h
+++ /dev/null
@@ -1,79 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDDEFAULTSOCKETTRANSPORT_H
-#define PXPVDSDK_PXPVDDEFAULTSOCKETTRANSPORT_H
-
-#include "pvd/PxPvdTransport.h"
-
-#include "PsUserAllocated.h"
-#include "PsSocket.h"
-#include "PsMutex.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-class PvdDefaultSocketTransport : public PxPvdTransport, public shdfnd::UserAllocated
-{
- PX_NOCOPY(PvdDefaultSocketTransport)
- public:
- PvdDefaultSocketTransport(const char* host, int port, unsigned int timeoutInMilliseconds);
- virtual ~PvdDefaultSocketTransport();
-
- virtual bool connect();
- virtual void disconnect();
- virtual bool isConnected();
-
- virtual bool write(const uint8_t* inBytes, uint32_t inLength);
-
- virtual void flush();
-
- virtual PxPvdTransport& lock();
- virtual void unlock();
-
- virtual uint64_t getWrittenDataSize();
-
- virtual void release();
-
- private:
- shdfnd::Socket mSocket;
- const char* mHost;
- uint16_t mPort;
- unsigned int mTimeout;
- bool mConnected;
- uint64_t mWrittenData;
- shdfnd::Mutex mMutex;
- bool mlocked;
-};
-
-} // pvdsdk
-} // physx
-
-#endif // PXPVDSDK_PXPVDDEFAULTSOCKETTRANSPORT_H
diff --git a/PxShared/src/pvd/src/PxPvdFoundation.h b/PxShared/src/pvd/src/PxPvdFoundation.h
deleted file mode 100644
index 90fc77f..0000000
--- a/PxShared/src/pvd/src/PxPvdFoundation.h
+++ /dev/null
@@ -1,504 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDFOUNDATION_H
-#define PXPVDSDK_PXPVDFOUNDATION_H
-
-#include "foundation/PxVec3.h"
-#include "foundation/PxTransform.h"
-#include "foundation/PxBounds3.h"
-
-#include "PsArray.h"
-#include "PsHashMap.h"
-#include "PsHashSet.h"
-#include "PsPool.h"
-#include "PsString.h"
-
-#include "PxPvdObjectModelBaseTypes.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-extern PxAllocatorCallback* gPvdAllocatorCallback;
-
-class ForwardingAllocator : public PxAllocatorCallback
-{
- void* allocate(size_t size, const char* typeName, const char* filename, int line)
- {
- return shdfnd::getAllocator().allocate(size, typeName, filename, line);
- }
- void deallocate(void* ptr)
- {
- shdfnd::getAllocator().deallocate(ptr);
- }
-};
-
-class RawMemoryBuffer
-{
- uint8_t* mBegin;
- uint8_t* mEnd;
- uint8_t* mCapacityEnd;
- const char* mBufDataName;
-
- public:
- RawMemoryBuffer(const char* name) : mBegin(0), mEnd(0), mCapacityEnd(0),mBufDataName(name)
- {
- PX_UNUSED(mBufDataName);
- }
- ~RawMemoryBuffer()
- {
- if(mBegin)
- PX_FREE(mBegin);
- }
- uint32_t size() const
- {
- return static_cast<uint32_t>(mEnd - mBegin);
- }
- uint32_t capacity() const
- {
- return static_cast<uint32_t>(mCapacityEnd - mBegin);
- }
- uint8_t* begin()
- {
- return mBegin;
- }
- uint8_t* end()
- {
- return mEnd;
- }
- const uint8_t* begin() const
- {
- return mBegin;
- }
- const uint8_t* end() const
- {
- return mEnd;
- }
- void clear()
- {
- mEnd = mBegin;
- }
- const char* cStr()
- {
- if(mEnd && (*mEnd != 0))
- write(0);
- return reinterpret_cast<const char*>(mBegin);
- }
- uint32_t write(uint8_t inValue)
- {
- *growBuf(1) = inValue;
- return 1;
- }
-
- template <typename TDataType>
- uint32_t write(const TDataType& inValue)
- {
- const uint8_t* __restrict readPtr = reinterpret_cast<const uint8_t*>(&inValue);
- uint8_t* __restrict writePtr = growBuf(sizeof(TDataType));
- for(uint32_t idx = 0; idx < sizeof(TDataType); ++idx)
- writePtr[idx] = readPtr[idx];
- return sizeof(TDataType);
- }
-
- template <typename TDataType>
- uint32_t write(const TDataType* inValue, uint32_t inLength)
- {
- uint32_t writeSize = inLength * sizeof(TDataType);
- if(inValue && inLength)
- {
- physx::intrinsics::memCopy(growBuf(writeSize), inValue, writeSize);
- }
- if(inLength && !inValue)
- {
- PX_ASSERT(false);
- // You can't not write something, because that will cause
- // the receiving end to crash.
- for(uint32_t idx = 0; idx < writeSize; ++idx)
- write(0);
- }
- return writeSize;
- }
-
- uint8_t* growBuf(uint32_t inAmount)
- {
- uint32_t offset = size();
- uint32_t newSize = offset + inAmount;
- reserve(newSize);
- mEnd += inAmount;
- return mBegin + offset;
- }
- void writeZeros(uint32_t inAmount)
- {
- uint32_t offset = size();
- growBuf(inAmount);
- physx::intrinsics::memZero(begin() + offset, inAmount);
- }
- void reserve(uint32_t newSize)
- {
- uint32_t currentSize = size();
- if(newSize && newSize >= capacity())
- {
- uint32_t newDataSize = newSize > 4096 ? newSize + (newSize >> 2) : newSize*2;
- uint8_t* newData = static_cast<uint8_t*>(PX_ALLOC(newDataSize, mBufDataName));
- if(mBegin)
- {
- physx::intrinsics::memCopy(newData, mBegin, currentSize);
- PX_FREE(mBegin);
- }
- mBegin = newData;
- mEnd = mBegin + currentSize;
- mCapacityEnd = mBegin + newDataSize;
- }
- }
-};
-
-struct ForwardingMemoryBuffer : public RawMemoryBuffer
-{
- ForwardingMemoryBuffer(const char* bufDataName) : RawMemoryBuffer(bufDataName)
- {
- }
-
- ForwardingMemoryBuffer& operator<<(const char* inString)
- {
- if(inString && *inString)
- {
- uint32_t len = static_cast<uint32_t>(strlen(inString));
- write(inString, len);
- }
- return *this;
- }
-
- template <typename TDataType>
- inline ForwardingMemoryBuffer& toStream(const char* inFormat, const TDataType inData)
- {
- char buffer[128] = { 0 };
- shdfnd::snprintf(buffer, 128, inFormat, inData);
- *this << buffer;
- return *this;
- }
-
- inline ForwardingMemoryBuffer& operator<<(bool inData)
- {
- *this << (inData ? "true" : "false");
- return *this;
- }
- inline ForwardingMemoryBuffer& operator<<(int32_t inData)
- {
- return toStream("%d", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(uint16_t inData)
- {
- return toStream("%u", uint32_t(inData));
- }
- inline ForwardingMemoryBuffer& operator<<(uint8_t inData)
- {
- return toStream("%u", uint32_t(inData));
- }
- inline ForwardingMemoryBuffer& operator<<(char inData)
- {
- return toStream("%c", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(uint32_t inData)
- {
- return toStream("%u", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(uint64_t inData)
- {
- return toStream("%I64u", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(int64_t inData)
- {
- return toStream("%I64d", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(const void* inData)
- {
- return *this << static_cast<uint64_t>(reinterpret_cast<size_t>(inData));
- }
- inline ForwardingMemoryBuffer& operator<<(float inData)
- {
- return toStream("%g", double(inData));
- }
- inline ForwardingMemoryBuffer& operator<<(double inData)
- {
- return toStream("%g", inData);
- }
- inline ForwardingMemoryBuffer& operator<<(const PxVec3& inData)
- {
- *this << inData[0];
- *this << " ";
- *this << inData[1];
- *this << " ";
- *this << inData[2];
- return *this;
- }
-
- inline ForwardingMemoryBuffer& operator<<(const PxQuat& inData)
- {
- *this << inData.x;
- *this << " ";
- *this << inData.y;
- *this << " ";
- *this << inData.z;
- *this << " ";
- *this << inData.w;
- return *this;
- }
-
- inline ForwardingMemoryBuffer& operator<<(const PxTransform& inData)
- {
- *this << inData.q;
- *this << " ";
- *this << inData.p;
- return *this;
- }
-
- inline ForwardingMemoryBuffer& operator<<(const PxBounds3& inData)
- {
- *this << inData.minimum;
- *this << " ";
- *this << inData.maximum;
- return *this;
- }
-
-};
-
-template <typename TObjectType, typename TGetSetIndexOp, typename TSetSetIndexOp>
-class InvasiveSet
-{
- shdfnd::Array<TObjectType*> mSet;
-
- InvasiveSet(const InvasiveSet& other);
- InvasiveSet& operator=(const InvasiveSet& other);
-
- public:
- InvasiveSet(const char* allocName) : mSet(allocName)
- {
- }
-
- bool insert(TObjectType& inObject)
- {
- uint32_t currentIdx = TGetSetIndexOp()(inObject);
- if(currentIdx == UINT32_MAX)
- {
- TSetSetIndexOp()(inObject, mSet.size());
- mSet.pushBack(&inObject);
- return true;
- }
- return false;
- }
-
- bool remove(TObjectType& inObject)
- {
- uint32_t currentIdx = TGetSetIndexOp()(inObject);
- if(currentIdx != UINT32_MAX)
- {
- TObjectType* theEnd = mSet.back();
- TObjectType* theObj = &inObject;
- if(theEnd != theObj)
- {
- TSetSetIndexOp()(*theEnd, currentIdx);
- mSet[currentIdx] = theEnd;
- }
- mSet.popBack();
- TSetSetIndexOp()(inObject, UINT32_MAX);
- return true;
- }
- return false;
- }
-
- bool contains(TObjectType& inObject)
- {
- return TGetSetIndexOp()(inObject) != UINT32_MAX;
- }
-
- void clear()
- {
- for(uint32_t idx = 0; idx < mSet.size(); ++idx)
- TSetSetIndexOp()(*(mSet[idx]), UINT32_MAX);
- mSet.clear();
- }
-
- TObjectType* operator[](uint32_t idx)
- {
- return mSet[idx];
- }
- const TObjectType* operator[](uint32_t idx) const
- {
- return mSet[idx];
- }
- uint32_t size() const
- {
- return mSet.size();
- }
- TObjectType** begin()
- {
- return mSet.begin();
- }
- TObjectType** end()
- {
- return mSet.end();
- }
- const TObjectType** begin() const
- {
- return mSet.begin();
- }
- const TObjectType** end() const
- {
- return mSet.end();
- }
- const TObjectType* back() const
- {
- return mSet.back();
- }
- TObjectType* back()
- {
- return mSet.back();
- }
-};
-
-template <typename TDataType>
-inline void* PvdAllocate(const char* typeName, const char* file, int line)
-{
- PX_ASSERT(gPvdAllocatorCallback);
- return gPvdAllocatorCallback->allocate(sizeof(TDataType), typeName, file, line);
-}
-
-template <typename TDataType>
-inline void PvdDeleteAndDeallocate(TDataType* inDType)
-{
- PX_ASSERT(gPvdAllocatorCallback);
- if(inDType)
- {
- inDType->~TDataType();
- gPvdAllocatorCallback->deallocate(inDType);
- }
-}
-}
-}
-
-#define PVD_NEW(dtype) new (PvdAllocate<dtype>(#dtype, __FILE__, __LINE__)) dtype
-#define PVD_DELETE(obj) PvdDeleteAndDeallocate(obj);
-//#define PVD_NEW(dtype) PX_NEW(dtype)
-//#define PVD_DELETE(obj) PX_DELETE(obj)
-#define PVD_FOREACH(varname, stop) for(uint32_t varname = 0; varname < stop; ++varname)
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-template <typename TKeyType, typename TValueType, typename THashType, typename TBufType, typename TOperator>
-uint32_t getMapKeysOp(shdfnd::HashMap<TKeyType, TValueType, THashType>& map, TBufType* buffer, uint32_t bufSize,
- uint32_t startIdx, TOperator op)
-{
- uint32_t numItems = static_cast<uint32_t>(map.size());
- if(numItems == 0 || bufSize == 0)
- return 0;
-
- startIdx = PxMin(numItems - 1, startIdx);
- uint32_t retval = 0;
- for(typename shdfnd::HashMap<TKeyType, TValueType, THashType>::Iterator iter = map.getIterator();
- iter.done() == false && bufSize; ++iter)
- {
- if(startIdx)
- --startIdx;
- else
- {
- buffer[retval] = op(iter->first);
- --bufSize;
- ++retval;
- }
- }
- return retval;
-}
-
-struct IdOp
-{
- template <typename TDataType>
- TDataType operator()(const TDataType& item)
- {
- return item;
- }
-};
-
-template <typename TKeyType, typename TValueType, typename THashType>
-uint32_t getMapKeys(shdfnd::HashMap<TKeyType, TValueType, THashType>& map, TKeyType* buffer, uint32_t bufSize, uint32_t startIdx)
-{
- return getMapKeysOp(map, buffer, bufSize, startIdx, IdOp());
-}
-
-struct DerefOp
-{
- template <typename TDataType>
- TDataType operator()(const TDataType* item)
- {
- return *item;
- }
-};
-
-template <typename TKeyType, typename TValueType, typename TBufType, typename TOp>
-uint32_t getMapValues(shdfnd::HashMap<TKeyType, TValueType>& map, TBufType* buffer, uint32_t bufSize, uint32_t startIdx, TOp op)
-{
- uint32_t numItems = static_cast<uint32_t>(map.size());
- if(numItems == 0 || bufSize == 0)
- return 0;
-
- startIdx = PxMin(numItems - 1, startIdx);
- uint32_t retval = 0;
- for(typename shdfnd::HashMap<TKeyType, TValueType>::Iterator iter = map.getIterator(); iter.done() == false && bufSize; ++iter)
- {
- if(startIdx)
- --startIdx;
- else
- {
- buffer[retval] = op(iter->second);
- --bufSize;
- ++retval;
- }
- }
- return retval;
-}
-
-template <typename TValueType, typename TBufType>
-uint32_t getArrayEntries(shdfnd::Array<TValueType>& data, TBufType* buffer, uint32_t bufSize, uint32_t startIdx)
-{
- uint32_t numItems = static_cast<uint32_t>(data.size());
- if(numItems == 0 || bufSize == 0)
- return 0;
-
- startIdx = PxMin(numItems - 1, startIdx);
- uint32_t available = PxMin(numItems - startIdx, bufSize);
- PVD_FOREACH(idx, available)
- buffer[idx] = data[idx + startIdx];
- return available;
-}
-#define PVD_POINTER_TO_U64(ptr) static_cast<uint64_t>(reinterpret_cast<size_t>(ptr))
-}
-}
-#endif // PXPVDSDK_PXPVDFOUNDATION_H
diff --git a/PxShared/src/pvd/src/PxPvdImpl.cpp b/PxShared/src/pvd/src/PxPvdImpl.cpp
deleted file mode 100644
index 9fa82a0..0000000
--- a/PxShared/src/pvd/src/PxPvdImpl.cpp
+++ /dev/null
@@ -1,405 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvdTransport.h"
-
-#include "PxPvdImpl.h"
-#include "PxPvdFoundation.h"
-#include "PxPvdClient.h"
-#include "PxPvdMemClient.h"
-#include "PxPvdProfileZoneClient.h"
-#include "PxPvdCommStreamTypes.h"
-#include "PxProfileZoneManager.h"
-#include "PxProfileZone.h"
-
-#include "PsFoundation.h"
-
-#if PX_NVTX
-#include "nvToolsExt.h"
-#endif
-
-namespace
-{
- const char* gSdkName = "PhysXSDK";
-}
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-class CmEventNameProvider : public physx::profile::PxProfileNameProvider
-{
-public:
- physx::profile::PxProfileNames getProfileNames() const
- {
- physx::profile::PxProfileNames ret;
- ret.eventCount = 0;
- return ret;
- }
-};
-
-CmEventNameProvider gProfileNameProvider;
-
-void initializeModelTypes(PvdDataStream& stream)
-{
- stream.createClass<profile::PxProfileZone>();
- stream.createProperty<profile::PxProfileZone, uint8_t>(
- "events", PvdCommStreamEmbeddedTypes::getProfileEventStreamSemantic(), PropertyType::Array);
-
- stream.createClass<profile::PxProfileMemoryEventBuffer>();
- stream.createProperty<profile::PxProfileMemoryEventBuffer, uint8_t>(
- "events", PvdCommStreamEmbeddedTypes::getMemoryEventStreamSemantic(), PropertyType::Array);
-
- stream.createClass<PvdUserRenderer>();
- stream.createProperty<PvdUserRenderer, uint8_t>(
- "events", PvdCommStreamEmbeddedTypes::getRendererEventStreamSemantic(), PropertyType::Array);
-}
-
-PvdImpl* PvdImpl::sInstance = NULL;
-uint32_t PvdImpl::sRefCount = 0;
-
-PvdImpl::PvdImpl()
-: mPvdTransport(NULL)
-, mSharedMetaProvider(NULL)
-, mMemClient(NULL)
-, mIsConnected(false)
-, mIsNVTXSupportEnabled(true)
-, mNVTXContext(0)
-, mNextStreamId(1)
-, mProfileClient(NULL)
-, mProfileZone(NULL)
-{
- mProfileZoneManager = &physx::profile::PxProfileZoneManager::createProfileZoneManager(&physx::shdfnd::getAllocator());
- mProfileClient = PVD_NEW(PvdProfileZoneClient)(*this);
-}
-
-PvdImpl::~PvdImpl()
-{
- if((mFlags & PxPvdInstrumentationFlag::ePROFILE) )
- {
- PxSetProfilerCallback(NULL);
- }
-
- disconnect();
-
- if ( mProfileZoneManager )
- {
- mProfileZoneManager->release();
- mProfileZoneManager = NULL;
- }
-
- PVD_DELETE(mProfileClient);
- mProfileClient = NULL;
-}
-
-bool PvdImpl::connect(PxPvdTransport& transport, PxPvdInstrumentationFlags flags)
-{
- if(mIsConnected)
- {
- physx::shdfnd::getFoundation().error(PxErrorCode::eINVALID_PARAMETER, __FILE__, __LINE__, "PxPvd::connect - recall connect! Should call disconnect before re-connect.");
- return false;
- }
-
- mFlags = flags;
- mPvdTransport = &transport;
-
- mIsConnected = mPvdTransport->connect();
-
- if(mIsConnected)
- {
- mSharedMetaProvider = PVD_NEW(MetaDataProvider);
- sendTransportInitialization();
-
- PvdDataStream* stream = PvdDataStream::create(this);
- initializeModelTypes(*stream);
- stream->release();
-
- if(mFlags & PxPvdInstrumentationFlag::eMEMORY)
- {
- mMemClient = PVD_NEW(PvdMemClient)(*this);
- mPvdClients.pushBack(mMemClient);
- }
-
- if((mFlags & PxPvdInstrumentationFlag::ePROFILE) && mProfileZoneManager)
- {
- mPvdClients.pushBack(mProfileClient);
- mProfileZone = &physx::profile::PxProfileZone::createProfileZone(&physx::shdfnd::getAllocator(),gSdkName,gProfileNameProvider.getProfileNames());
- }
-
- for(uint32_t i = 0; i < mPvdClients.size(); i++)
- mPvdClients[i]->onPvdConnected();
-
- if (mProfileZone)
- {
- mProfileZoneManager->addProfileZoneHandler(*mProfileClient);
- mProfileZoneManager->addProfileZone( *mProfileZone );
- }
-
- if ((mFlags & PxPvdInstrumentationFlag::ePROFILE))
- {
- PxSetProfilerCallback(this);
- }
- }
- return mIsConnected;
-}
-
-void PvdImpl::disconnect()
-{
- if(mProfileZone)
- {
- mProfileZoneManager->removeProfileZoneHandler(*mProfileClient);
- mProfileZoneManager->removeProfileZone( *mProfileZone );
- mProfileZone->release();
- mProfileZone=NULL;
- removeClient(mProfileClient);
- }
-
- if(mIsConnected)
- {
- for(uint32_t i = 0; i < mPvdClients.size(); i++)
- mPvdClients[i]->onPvdDisconnected();
-
- if(mMemClient)
- {
- removeClient(mMemClient);
- PvdMemClient* tmp = mMemClient; //avoid tracking deallocation itsself
- mMemClient = NULL;
- PVD_DELETE(tmp);
- }
-
- mSharedMetaProvider->release();
- mPvdTransport->disconnect();
- mObjectRegistrar.clear();
- mIsConnected = false;
- }
-}
-
-void PvdImpl::flush()
-{
- for(uint32_t i = 0; i < mPvdClients.size(); i++)
- mPvdClients[i]->flush();
- if ( mProfileZone )
- {
- mProfileZone->flushEventIdNameMap();
- mProfileZone->flushProfileEvents();
- }
-}
-
-bool PvdImpl::isConnected(bool useCachedStatus)
-{
- if(mPvdTransport)
- return useCachedStatus ? mIsConnected : mPvdTransport->isConnected();
- else
- return false;
-}
-
-PxPvdTransport* PvdImpl::getTransport()
-{
- return mPvdTransport;
-}
-
-PxPvdInstrumentationFlags PvdImpl::getInstrumentationFlags()
-{
- return mFlags;
-}
-
-void PvdImpl::sendTransportInitialization()
-{
- StreamInitialization init;
- EventStreamifier<PxPvdTransport> stream(mPvdTransport->lock());
- init.serialize(stream);
- mPvdTransport->unlock();
-}
-
-void PvdImpl::addClient(PvdClient* client)
-{
- PX_ASSERT(client);
- for(uint32_t i = 0; i < mPvdClients.size(); i++)
- {
- if(client == mPvdClients[i])
- return;
- }
- mPvdClients.pushBack(client);
- if(mIsConnected)
- {
- client->onPvdConnected();
- }
-}
-
-void PvdImpl::removeClient(PvdClient* client)
-{
- for(uint32_t i = 0; i < mPvdClients.size(); i++)
- {
- if(client == mPvdClients[i])
- {
- client->onPvdDisconnected();
- mPvdClients.remove(i);
- }
- }
-}
-
-void PvdImpl::onAllocation(size_t inSize, const char* inType, const char* inFile, int inLine, void* inAddr)
-{
- if(mMemClient)
- mMemClient->onAllocation(inSize, inType, inFile, inLine, inAddr);
-}
-
-void PvdImpl::onDeallocation(void* inAddr)
-{
- if(mMemClient)
- mMemClient->onDeallocation(inAddr);
-}
-
-PvdOMMetaDataProvider& PvdImpl::getMetaDataProvider()
-{
- return *mSharedMetaProvider;
-}
-
-bool PvdImpl::registerObject(const void* inItem)
-{
- return mObjectRegistrar.addItem(inItem);
-}
-
-
-bool PvdImpl::unRegisterObject(const void* inItem)
-{
- return mObjectRegistrar.decItem(inItem);
-}
-
-uint64_t PvdImpl::getNextStreamId()
-{
- uint64_t retval = ++mNextStreamId;
- return retval;
-}
-
-bool PvdImpl::initialize()
-{
- if(0 == sRefCount)
- {
- sInstance = PVD_NEW(PvdImpl)();
- }
- ++sRefCount;
- return !!sInstance;
-}
-
-void PvdImpl::release()
-{
- if(sRefCount > 0)
- {
- if(--sRefCount)
- return;
-
- PVD_DELETE(sInstance);
- sInstance = NULL;
- }
-}
-
-PvdImpl* PvdImpl::getInstance()
-{
- return sInstance;
-}
-
-
-/**************************************************************************************************************************
-Instrumented profiling events
-***************************************************************************************************************************/
-
-static const uint32_t CrossThreadId = 99999789;
-
-void* PvdImpl::zoneStart(const char* eventName, bool detached, uint64_t contextId)
-{
- if(mProfileZone)
- {
- const uint16_t id = mProfileZone->getEventIdForName(eventName);
- if(detached)
- mProfileZone->startEvent(id, contextId, CrossThreadId);
- else
- mProfileZone->startEvent(id, contextId);
- }
-#if PX_NVTX
- if(mIsNVTXSupportEnabled)
- {
- if(detached)
- {
- // TODO : Need to use the nvtxRangeStart API for cross thread events
- nvtxEventAttributes_t eventAttrib;
- memset(&eventAttrib, 0, sizeof(eventAttrib));
- eventAttrib.version = NVTX_VERSION;
- eventAttrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE;
- eventAttrib.colorType = NVTX_COLOR_ARGB;
- eventAttrib.color = 0xFF00FF00;
- eventAttrib.messageType = NVTX_MESSAGE_TYPE_ASCII;
- eventAttrib.message.ascii = eventName;
- nvtxMarkEx(&eventAttrib);
- }
- else
- {
- nvtxRangePush(eventName);
- }
- }
-#endif
- return NULL;
-}
-
-void PvdImpl::zoneEnd(void* /*profilerData*/, const char* eventName, bool detached, uint64_t contextId)
-{
- if(mProfileZone)
- {
- const uint16_t id = mProfileZone->getEventIdForName(eventName);
- if(detached)
- mProfileZone->stopEvent(id, contextId, CrossThreadId);
- else
- mProfileZone->stopEvent(id, contextId);
- }
-#if PX_NVTX
- if(mIsNVTXSupportEnabled)
- {
- if(detached)
- {
- nvtxEventAttributes_t eventAttrib;
- memset(&eventAttrib, 0, sizeof(eventAttrib));
- eventAttrib.version = NVTX_VERSION;
- eventAttrib.size = NVTX_EVENT_ATTRIB_STRUCT_SIZE;
- eventAttrib.colorType = NVTX_COLOR_ARGB;
- eventAttrib.color = 0xFFFF0000;
- eventAttrib.messageType = NVTX_MESSAGE_TYPE_ASCII;
- eventAttrib.message.ascii = eventName;
- nvtxMarkEx(&eventAttrib);
- }
- else
- {
- nvtxRangePop();
- }
- }
-#endif
-}
-} // pvd
-
-} // physx
diff --git a/PxShared/src/pvd/src/PxPvdImpl.h b/PxShared/src/pvd/src/PxPvdImpl.h
deleted file mode 100644
index 64d4e16..0000000
--- a/PxShared/src/pvd/src/PxPvdImpl.h
+++ /dev/null
@@ -1,221 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDIMPL_H
-#define PXPVDSDK_PXPVDIMPL_H
-
-#include "foundation/PxProfiler.h"
-
-#include "PsAllocator.h"
-#include "PsPvd.h"
-#include "PsArray.h"
-#include "PsMutex.h"
-#include "PxPvdCommStreamTypes.h"
-#include "PxPvdFoundation.h"
-#include "PxPvdObjectModelMetaData.h"
-#include "PxPvdObjectRegistrar.h"
-
-namespace physx
-{
-
-namespace profile
-{
- class PxProfileZoneManager;
-}
-
-namespace pvdsdk
-{
-class PvdMemClient;
-class PvdProfileZoneClient;
-
-struct MetaDataProvider : public PvdOMMetaDataProvider, public shdfnd::UserAllocated
-{
- typedef shdfnd::Mutex::ScopedLock TScopedLockType;
- typedef shdfnd::HashMap<const void*, int32_t> TInstTypeMap;
- PvdObjectModelMetaData& mMetaData;
- shdfnd::Mutex mMutex;
- uint32_t mRefCount;
- TInstTypeMap mTypeMap;
-
- MetaDataProvider()
- : mMetaData(PvdObjectModelMetaData::create()), mRefCount(0), mTypeMap("MetaDataProvider::mTypeMap")
- {
- mMetaData.addRef();
- }
- virtual ~MetaDataProvider()
- {
- mMetaData.release();
- }
-
- virtual void addRef()
- {
- TScopedLockType locker(mMutex);
- ++mRefCount;
- }
- virtual void release()
- {
- {
- TScopedLockType locker(mMutex);
- if(mRefCount)
- --mRefCount;
- }
- if(!mRefCount)
- PVD_DELETE(this);
- }
- virtual PvdObjectModelMetaData& lock()
- {
- mMutex.lock();
- return mMetaData;
- }
- virtual void unlock()
- {
- mMutex.unlock();
- }
-
- virtual bool createInstance(const NamespacedName& clsName, const void* instance)
- {
- TScopedLockType locker(mMutex);
- Option<ClassDescription> cls(mMetaData.findClass(clsName));
- if(cls.hasValue() == false)
- return false;
- int32_t instType = cls->mClassId;
- mTypeMap.insert(instance, instType);
- return true;
- }
- virtual bool isInstanceValid(const void* instance)
- {
- TScopedLockType locker(mMutex);
- ClassDescription classDesc;
- bool retval = mTypeMap.find(instance) != NULL;
-#if PX_DEBUG
- if(retval)
- classDesc = mMetaData.getClass(mTypeMap.find(instance)->second);
-#endif
- return retval;
- }
- virtual void destroyInstance(const void* instance)
- {
- {
- TScopedLockType locker(mMutex);
- mTypeMap.erase(instance);
- }
- }
- virtual int32_t getInstanceClassType(const void* instance)
- {
- TScopedLockType locker(mMutex);
- const TInstTypeMap::Entry* entry = mTypeMap.find(instance);
- if(entry)
- return entry->second;
- return -1;
- }
-
- private:
- MetaDataProvider& operator=(const MetaDataProvider&);
- MetaDataProvider(const MetaDataProvider&);
-};
-
-//////////////////////////////////////////////////////////////////////////
-/*!
-PvdImpl is the realization of PxPvd.
-It implements the interface methods and provides richer functionality for advanced users or internal clients (such as
-PhysX or APEX), including handler notification for clients.
-*/
-//////////////////////////////////////////////////////////////////////////
-class PvdImpl : public PsPvd, public shdfnd::UserAllocated
-{
- PX_NOCOPY(PvdImpl)
-
- typedef shdfnd::Mutex::ScopedLock TScopedLockType;
- typedef void (PvdImpl::*TAllocationHandler)(size_t size, const char* typeName, const char* filename, int line,
- void* allocatedMemory);
- typedef void (PvdImpl::*TDeallocationHandler)(void* allocatedMemory);
-
- public:
- PvdImpl();
- virtual ~PvdImpl();
- void release();
-
- bool connect(PxPvdTransport& transport, PxPvdInstrumentationFlags flags);
- void disconnect();
- bool isConnected(bool useCachedStatus = true);
- void flush();
-
- PxPvdTransport* getTransport();
- PxPvdInstrumentationFlags getInstrumentationFlags();
-
- void addClient(PvdClient* client);
- void removeClient(PvdClient* client);
-
- PvdOMMetaDataProvider& getMetaDataProvider();
-
- bool registerObject(const void* inItem);
- bool unRegisterObject(const void* inItem);
-
- //AllocationListener
- void onAllocation(size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory);
- void onDeallocation(void* addr);
-
- uint64_t getNextStreamId();
-
- static bool initialize();
- static PvdImpl* getInstance();
-
- // Profiling
-
- virtual void* zoneStart(const char* eventName, bool detached, uint64_t contextId);
-
- virtual void zoneEnd(void* profilerData, const char *eventName, bool detached, uint64_t contextId);
-
- private:
- void sendTransportInitialization();
-
- PxPvdTransport* mPvdTransport;
- physx::shdfnd::Array<PvdClient*> mPvdClients;
-
- MetaDataProvider* mSharedMetaProvider; // shared between clients
- ObjectRegistrar mObjectRegistrar;
-
- PvdMemClient* mMemClient;
-
- PxPvdInstrumentationFlags mFlags;
- bool mIsConnected;
- bool mIsNVTXSupportEnabled;
- uint32_t mNVTXContext;
- uint64_t mNextStreamId;
- physx::profile::PxProfileZoneManager*mProfileZoneManager;
- PvdProfileZoneClient* mProfileClient;
- physx::profile::PxProfileZone* mProfileZone;
- static PvdImpl* sInstance;
- static uint32_t sRefCount;
-};
-
-} // namespace pvdsdk
-}
-
-#endif // PXPVDSDK_PXPVDIMPL_H
diff --git a/PxShared/src/pvd/src/PxPvdInternalByteStreams.h b/PxShared/src/pvd/src/PxPvdInternalByteStreams.h
deleted file mode 100644
index 1fd5ddd..0000000
--- a/PxShared/src/pvd/src/PxPvdInternalByteStreams.h
+++ /dev/null
@@ -1,147 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDINTERNALBYTESTREAMS_H
-#define PXPVDSDK_PXPVDINTERNALBYTESTREAMS_H
-
-#include "PxPvdByteStreams.h"
-#include "PxPvdFoundation.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-struct MemPvdOutputStream : public PvdOutputStream
-{
- ForwardingMemoryBuffer mBuffer;
- MemPvdOutputStream(const char* memName) : mBuffer(memName)
- {
- }
-
- virtual bool write(const uint8_t* buffer, uint32_t len)
- {
- mBuffer.write(buffer, len);
- return true;
- }
-
- virtual bool directCopy(PvdInputStream& inStream, uint32_t len)
- {
- uint32_t offset = mBuffer.size();
- mBuffer.growBuf(len);
- uint32_t readLen = len;
- inStream.read(mBuffer.begin() + offset, readLen);
- if(readLen != len)
- physx::intrinsics::memZero(mBuffer.begin() + offset, len);
- return readLen == len;
- }
-
- const uint8_t* begin() const
- {
- return mBuffer.begin();
- }
- uint32_t size() const
- {
- return mBuffer.size();
- }
- void clear()
- {
- mBuffer.clear();
- }
- DataRef<const uint8_t> toRef() const
- {
- return DataRef<const uint8_t>(mBuffer.begin(), mBuffer.end());
- }
-};
-
-struct MemPvdInputStream : public PvdInputStream
-{
- const uint8_t* mBegin;
- const uint8_t* mEnd;
- bool mGood;
-
- MemPvdInputStream(const MemPvdOutputStream& stream) : mGood(true)
- {
- mBegin = stream.mBuffer.begin();
- mEnd = stream.mBuffer.end();
- }
-
- MemPvdInputStream(const uint8_t* beg = NULL, const uint8_t* end = NULL)
- {
- mBegin = beg;
- mEnd = end;
- mGood = true;
- }
-
- uint32_t size() const
- {
- return mGood ? static_cast<uint32_t>(mEnd - mBegin) : 0;
- }
- bool isGood() const
- {
- return mGood;
- }
-
- void setup(uint8_t* start, uint8_t* stop)
- {
- mBegin = start;
- mEnd = stop;
- }
-
- void nocopyRead(uint8_t*& buffer, uint32_t& len)
- {
- if(len == 0 || mGood == false)
- {
- len = 0;
- buffer = NULL;
- return;
- }
- uint32_t original = len;
- len = PxMin(len, size());
- if(mGood && len != original)
- mGood = false;
- buffer = const_cast<uint8_t*>(mBegin);
- mBegin += len;
- }
-
- virtual bool read(uint8_t* buffer, uint32_t& len)
- {
- if(len == 0)
- return true;
- uint32_t original = len;
- len = PxMin(len, size());
-
- physx::intrinsics::memCopy(buffer, mBegin, len);
- mBegin += len;
- if(len < original)
- physx::intrinsics::memZero(buffer + len, original - len);
- mGood = mGood && len == original;
- return mGood;
- }
-};
-}
-}
-#endif // PXPVDSDK_PXPVDINTERNALBYTESTREAMS_H
diff --git a/PxShared/src/pvd/src/PxPvdMarshalling.h b/PxShared/src/pvd/src/PxPvdMarshalling.h
deleted file mode 100644
index 0aeaee4..0000000
--- a/PxShared/src/pvd/src/PxPvdMarshalling.h
+++ /dev/null
@@ -1,220 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDMARSHALLING_H
-#define PXPVDSDK_PXPVDMARSHALLING_H
-
-#include "foundation/PxIntrinsics.h"
-
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PxPvdBits.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-// Define marshalling
-
-template <typename TSmallerType, typename TLargerType>
-struct PvdMarshalling
-{
- bool canMarshal;
- PvdMarshalling() : canMarshal(false)
- {
- }
-};
-
-template <typename smtype, typename lgtype>
-static inline void marshalSingleT(const uint8_t* srcData, uint8_t* destData)
-{
- smtype incoming;
-
- physx::intrinsics::memCopy(&incoming, srcData, sizeof(smtype));
- lgtype outgoing = static_cast<lgtype>(incoming);
- physx::intrinsics::memCopy(destData, &outgoing, sizeof(lgtype));
-}
-
-template <typename smtype, typename lgtype>
-static inline void marshalBlockT(const uint8_t* srcData, uint8_t* destData, uint32_t numBytes)
-{
- for(const uint8_t* item = srcData, *end = srcData + numBytes; item < end;
- item += sizeof(smtype), destData += sizeof(lgtype))
- marshalSingleT<smtype, lgtype>(item, destData);
-}
-
-#define PVD_TYPE_MARSHALLER(smtype, lgtype) \
- template <> \
- struct PvdMarshalling<smtype, lgtype> \
- { \
- uint32_t canMarshal; \
- static void marshalSingle(const uint8_t* srcData, uint8_t* destData) \
- { \
- marshalSingleT<smtype, lgtype>(srcData, destData); \
- } \
- static void marshalBlock(const uint8_t* srcData, uint8_t* destData, uint32_t numBytes) \
- { \
- marshalBlockT<smtype, lgtype>(srcData, destData, numBytes); \
- } \
- };
-
-// define marshalling tables.
-PVD_TYPE_MARSHALLER(int8_t, int16_t)
-PVD_TYPE_MARSHALLER(int8_t, uint16_t)
-PVD_TYPE_MARSHALLER(int8_t, int32_t)
-PVD_TYPE_MARSHALLER(int8_t, uint32_t)
-PVD_TYPE_MARSHALLER(int8_t, int64_t)
-PVD_TYPE_MARSHALLER(int8_t, uint64_t)
-PVD_TYPE_MARSHALLER(int8_t, PvdF32)
-PVD_TYPE_MARSHALLER(int8_t, PvdF64)
-
-PVD_TYPE_MARSHALLER(uint8_t, int16_t)
-PVD_TYPE_MARSHALLER(uint8_t, uint16_t)
-PVD_TYPE_MARSHALLER(uint8_t, int32_t)
-PVD_TYPE_MARSHALLER(uint8_t, uint32_t)
-PVD_TYPE_MARSHALLER(uint8_t, int64_t)
-PVD_TYPE_MARSHALLER(uint8_t, uint64_t)
-PVD_TYPE_MARSHALLER(uint8_t, PvdF32)
-PVD_TYPE_MARSHALLER(uint8_t, PvdF64)
-
-PVD_TYPE_MARSHALLER(int16_t, int32_t)
-PVD_TYPE_MARSHALLER(int16_t, uint32_t)
-PVD_TYPE_MARSHALLER(int16_t, int64_t)
-PVD_TYPE_MARSHALLER(int16_t, uint64_t)
-PVD_TYPE_MARSHALLER(int16_t, PvdF32)
-PVD_TYPE_MARSHALLER(int16_t, PvdF64)
-
-PVD_TYPE_MARSHALLER(uint16_t, int32_t)
-PVD_TYPE_MARSHALLER(uint16_t, uint32_t)
-PVD_TYPE_MARSHALLER(uint16_t, int64_t)
-PVD_TYPE_MARSHALLER(uint16_t, uint64_t)
-PVD_TYPE_MARSHALLER(uint16_t, PvdF32)
-PVD_TYPE_MARSHALLER(uint16_t, PvdF64)
-
-PVD_TYPE_MARSHALLER(int32_t, int64_t)
-PVD_TYPE_MARSHALLER(int32_t, uint64_t)
-PVD_TYPE_MARSHALLER(int32_t, PvdF64)
-PVD_TYPE_MARSHALLER(int32_t, PvdF32)
-
-PVD_TYPE_MARSHALLER(uint32_t, int64_t)
-PVD_TYPE_MARSHALLER(uint32_t, uint64_t)
-PVD_TYPE_MARSHALLER(uint32_t, PvdF64)
-PVD_TYPE_MARSHALLER(uint32_t, PvdF32)
-
-PVD_TYPE_MARSHALLER(PvdF32, PvdF64)
-PVD_TYPE_MARSHALLER(PvdF32, uint32_t)
-PVD_TYPE_MARSHALLER(PvdF32, int32_t)
-
-PVD_TYPE_MARSHALLER(uint64_t, PvdF64)
-PVD_TYPE_MARSHALLER(int64_t, PvdF64)
-PVD_TYPE_MARSHALLER(PvdF64, uint64_t)
-PVD_TYPE_MARSHALLER(PvdF64, int64_t)
-
-template <typename TMarshaller>
-static inline bool getMarshalOperators(TSingleMarshaller&, TBlockMarshaller&, TMarshaller&, bool)
-{
- return false;
-}
-
-template <typename TMarshaller>
-static inline bool getMarshalOperators(TSingleMarshaller& single, TBlockMarshaller& block, TMarshaller&, uint32_t)
-{
- single = TMarshaller::marshalSingle;
- block = TMarshaller::marshalBlock;
- return true;
-}
-
-template <typename smtype, typename lgtype>
-static inline bool getMarshalOperators(TSingleMarshaller& single, TBlockMarshaller& block)
-{
- single = NULL;
- block = NULL;
- PvdMarshalling<smtype, lgtype> marshaller = PvdMarshalling<smtype, lgtype>();
- return getMarshalOperators(single, block, marshaller, marshaller.canMarshal);
-}
-
-template <typename smtype>
-static inline bool getMarshalOperators(TSingleMarshaller& single, TBlockMarshaller& block, int32_t lgtypeId)
-{
- switch(lgtypeId)
- {
- case PvdBaseType::PvdI8: // int8_t:
- return getMarshalOperators<smtype, int8_t>(single, block);
- case PvdBaseType::PvdU8: // uint8_t:
- return getMarshalOperators<smtype, uint8_t>(single, block);
- case PvdBaseType::PvdI16: // int16_t:
- return getMarshalOperators<smtype, int16_t>(single, block);
- case PvdBaseType::PvdU16: // uint16_t:
- return getMarshalOperators<smtype, uint16_t>(single, block);
- case PvdBaseType::PvdI32: // int32_t:
- return getMarshalOperators<smtype, int32_t>(single, block);
- case PvdBaseType::PvdU32: // uint32_t:
- return getMarshalOperators<smtype, uint32_t>(single, block);
- case PvdBaseType::PvdI64: // int64_t:
- return getMarshalOperators<smtype, int64_t>(single, block);
- case PvdBaseType::PvdU64: // uint64_t:
- return getMarshalOperators<smtype, uint64_t>(single, block);
- case PvdBaseType::PvdF32:
- return getMarshalOperators<smtype, PvdF32>(single, block);
- case PvdBaseType::PvdF64:
- return getMarshalOperators<smtype, PvdF64>(single, block);
- }
- return false;
-}
-
-static inline bool getMarshalOperators(TSingleMarshaller& single, TBlockMarshaller& block, int32_t smtypeId,
- int32_t lgtypeId)
-{
- switch(smtypeId)
- {
- case PvdBaseType::PvdI8: // int8_t:
- return getMarshalOperators<int8_t>(single, block, lgtypeId);
- case PvdBaseType::PvdU8: // uint8_t:
- return getMarshalOperators<uint8_t>(single, block, lgtypeId);
- case PvdBaseType::PvdI16: // int16_t:
- return getMarshalOperators<int16_t>(single, block, lgtypeId);
- case PvdBaseType::PvdU16: // uint16_t:
- return getMarshalOperators<uint16_t>(single, block, lgtypeId);
- case PvdBaseType::PvdI32: // int32_t:
- return getMarshalOperators<int32_t>(single, block, lgtypeId);
- case PvdBaseType::PvdU32: // uint32_t:
- return getMarshalOperators<uint32_t>(single, block, lgtypeId);
- case PvdBaseType::PvdI64: // int64_t:
- return getMarshalOperators<int64_t>(single, block, lgtypeId);
- case PvdBaseType::PvdU64: // uint64_t:
- return getMarshalOperators<uint64_t>(single, block, lgtypeId);
- case PvdBaseType::PvdF32:
- return getMarshalOperators<PvdF32>(single, block, lgtypeId);
- case PvdBaseType::PvdF64:
- return getMarshalOperators<PvdF64>(single, block, lgtypeId);
- }
- return false;
-}
-}
-}
-
-#endif // PXPVDSDK_PXPVDMARSHALLING_H
diff --git a/PxShared/src/pvd/src/PxPvdMemClient.cpp b/PxShared/src/pvd/src/PxPvdMemClient.cpp
deleted file mode 100644
index 05b7899..0000000
--- a/PxShared/src/pvd/src/PxPvdMemClient.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvdTransport.h"
-#include "foundation/PxProfiler.h"
-
-#include "PxPvdImpl.h"
-#include "PxPvdMemClient.h"
-#include "PxProfileMemory.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-PvdMemClient::PvdMemClient(PvdImpl& pvd)
-: mSDKPvd(pvd)
-, mPvdDataStream(NULL)
-, mIsConnected(false)
-, mMemEventBuffer(profile::PxProfileMemoryEventBuffer::createMemoryEventBuffer(*gPvdAllocatorCallback))
-{
-}
-
-PvdMemClient::~PvdMemClient()
-{
- mSDKPvd.removeClient(this);
- if(mMemEventBuffer.hasClients())
- mPvdDataStream->destroyInstance(&mMemEventBuffer);
- mMemEventBuffer.release();
-}
-
-PvdDataStream* PvdMemClient::getDataStream()
-{
- return mPvdDataStream;
-}
-
-PvdUserRenderer* PvdMemClient::getUserRender()
-{
- PX_ASSERT(0);
- return NULL;
-}
-
-void PvdMemClient::setObjectRegistrar(ObjectRegistrar*)
-{
-}
-
-bool PvdMemClient::isConnected() const
-{
- return mIsConnected;
-}
-
-void PvdMemClient::onPvdConnected()
-{
- if(mIsConnected)
- return;
- mIsConnected = true;
-
- mPvdDataStream = PvdDataStream::create(&mSDKPvd);
- mPvdDataStream->createInstance(&mMemEventBuffer);
- mMemEventBuffer.addClient(*this);
-}
-
-void PvdMemClient::onPvdDisconnected()
-{
- if(!mIsConnected)
- return;
- mIsConnected = false;
-
- flush();
-
- mMemEventBuffer.removeClient(*this);
- mPvdDataStream->release();
- mPvdDataStream = NULL;
-}
-
-void PvdMemClient::onAllocation(size_t inSize, const char* inType, const char* inFile, int inLine, void* inAddr)
-{
- mMutex.lock();
- mMemEventBuffer.onAllocation(inSize, inType, inFile, inLine, inAddr);
- mMutex.unlock();
-}
-
-void PvdMemClient::onDeallocation(void* inAddr)
-{
- mMutex.lock();
- mMemEventBuffer.onDeallocation(inAddr);
- mMutex.unlock();
-}
-
-void PvdMemClient::flush()
-{
- mMutex.lock();
- mMemEventBuffer.flushProfileEvents();
- mMutex.unlock();
-}
-
-void PvdMemClient::handleBufferFlush(const uint8_t* inData, uint32_t inLength)
-{
- if(mPvdDataStream)
- mPvdDataStream->setPropertyValue(&mMemEventBuffer, "events", inData, inLength);
-}
-
-void PvdMemClient::handleClientRemoved()
-{
-}
-
-} // pvd
-} // physx
diff --git a/PxShared/src/pvd/src/PxPvdMemClient.h b/PxShared/src/pvd/src/PxPvdMemClient.h
deleted file mode 100644
index 37ac4ff..0000000
--- a/PxShared/src/pvd/src/PxPvdMemClient.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDMEMCLIENT_H
-#define PXPVDSDK_PXPVDMEMCLIENT_H
-
-#include "PxPvdClient.h"
-#include "PsHashMap.h"
-#include "PsMutex.h"
-#include "PsBroadcast.h"
-#include "PxProfileEventBufferClient.h"
-#include "PxProfileMemory.h"
-
-namespace physx
-{
-class PvdDataStream;
-
-namespace pvdsdk
-{
-class PvdImpl;
-class PvdMemClient : public PvdClient,
- public profile::PxProfileEventBufferClient,
- public shdfnd::UserAllocated
-{
- PX_NOCOPY(PvdMemClient)
- public:
- PvdMemClient(PvdImpl& pvd);
- virtual ~PvdMemClient();
-
- bool isConnected() const;
- void onPvdConnected();
- void onPvdDisconnected();
- void flush();
-
- PvdDataStream* getDataStream();
- PvdUserRenderer* getUserRender();
- void setObjectRegistrar(ObjectRegistrar*);
- void sendMemEvents();
-
- // memory event
- void onAllocation(size_t size, const char* typeName, const char* filename, int line, void* allocatedMemory);
- void onDeallocation(void* addr);
-
- private:
- PvdImpl& mSDKPvd;
- PvdDataStream* mPvdDataStream;
- bool mIsConnected;
-
- // mem profile
- shdfnd::Mutex mMutex; // mem onallocation can called from different threads
- profile::PxProfileMemoryEventBuffer& mMemEventBuffer;
- void handleBufferFlush(const uint8_t* inData, uint32_t inLength);
- void handleClientRemoved();
-};
-
-} // namespace pvdsdk
-} // namespace physx
-
-#endif // PXPVDSDK_PXPVDMEMCLIENT_H
diff --git a/PxShared/src/pvd/src/PxPvdObjectModel.h b/PxShared/src/pvd/src/PxPvdObjectModel.h
deleted file mode 100644
index f4858df..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectModel.h
+++ /dev/null
@@ -1,437 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDOBJECTMODEL_H
-#define PXPVDSDK_PXPVDOBJECTMODEL_H
-
-#include "PsBasicTemplates.h"
-#include "PxPvdObjectModelMetaData.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-#if PX_VC == 11 || PX_VC == 12 || PX_VC == 14
-#pragma warning(push)
-#pragma warning(disable : 4435) // 'class1' : Object layout under /vd2 will change due to virtual base 'class2'
-#endif
-
-class PvdInputStream;
-class PvdOutputStream;
-
-struct InstanceDescription
-{
- int32_t mId;
- int32_t mClassId;
- void* mInstPtr;
- bool mAlive;
-
- InstanceDescription(int32_t id, int32_t classId, void* inst, bool alive)
- : mId(id), mClassId(classId), mInstPtr(inst), mAlive(alive)
- {
- }
- InstanceDescription() : mId(-1), mClassId(-1), mInstPtr(NULL), mAlive(false)
- {
- }
- operator void*()
- {
- PX_ASSERT(mAlive);
- if(mAlive)
- return mInstPtr;
- return NULL;
- }
- operator int32_t()
- {
- return mId;
- }
-};
-
-typedef physx::shdfnd::Pair<int32_t, int32_t> InstancePropertyPair;
-
-class PvdObjectModelBase
-{
- protected:
- virtual ~PvdObjectModelBase()
- {
- }
-
- public:
- virtual void addRef() = 0;
- virtual void release() = 0;
- virtual void* idToPtr(int32_t instId) const = 0;
- virtual int32_t ptrToId(void* instPtr) const = 0;
- virtual InstanceDescription idToDescriptor(int32_t instId) const = 0;
- virtual InstanceDescription ptrToDescriptor(void* instPtr) const = 0;
- virtual Option<ClassDescription> getClassOf(void* instId) const = 0;
- virtual const PvdObjectModelMetaData& getMetaData() const = 0;
-};
-
-class PvdObjectModelMutator : public virtual PvdObjectModelBase
-{
- protected:
- virtual ~PvdObjectModelMutator()
- {
- }
-
- public:
- // if the instance is alive, this destroyes any arrays and sets the instance back to its initial state.
- virtual InstanceDescription createInstance(int32_t clsId, int32_t instId) = 0;
- virtual InstanceDescription createInstance(int32_t clsId) = 0;
- // Instances that are pinned are not removed from the system, ever.
- // This means that createInstance, pinInstance, deleteInstance
- // can be called in this order and you can still call getClassOf, etc. on the instances.
- // The instances will never be removed from memory if they are pinned, so use at your
- // careful discretion.
- virtual void pinInstance(void* instId) = 0;
- virtual void unPinInstance(void* instId) = 0;
- // when doing capture, should update all events in a section at once, otherwis there possible parse data
- // incompltely.
- virtual void recordCompletedInstances() = 0;
-
- virtual void destroyInstance(void* instId) = 0;
- virtual int32_t getNextInstanceHandleValue() const = 0;
- // reserve a set of instance handle values by getting the current, adding an amount to it
- // and setting the value. You can never set the value lower than it already is, it only climbs.
- virtual void setNextInstanceHandleValue(int32_t hdlValue) = 0;
- // If incoming type is provided, then we may be able to marshal simple types
- // This works for arrays, it just completely replaces the entire array.
- // Because if this, it is an error of the property identifier
- virtual bool setPropertyValue(void* instId, int32_t propId, const uint8_t* data, uint32_t dataLen,
- int32_t incomingType) = 0;
- // Set a set of properties defined by a property message
- virtual bool setPropertyMessage(void* instId, int32_t msgId, const uint8_t* data, uint32_t dataLen) = 0;
- // insert an element(s) into array index. If index > numElements, element(s) is(are) appended.
- virtual bool insertArrayElement(void* instId, int32_t propId, int32_t index, const uint8_t* data, uint32_t dataLen,
- int32_t incomingType = -1) = 0;
- virtual bool removeArrayElement(void* instId, int32_t propId, int32_t index) = 0;
- // Add this array element to end end if it doesn't already exist in the array.
- // The option is false if there was an error with the function call.
- // The integer has no value if nothing was added, else it tells you the index
- // where the item was added. Comparison is done using memcmp.
- virtual Option<int32_t> pushBackArrayElementIf(void* instId, int32_t propId, const uint8_t* data, uint32_t dataLen,
- int32_t incomingType = -1) = 0;
- // Remove an array element if it exists in the array.
- // The option is false if there was an error with the function call.
- // the integer has no value if the item wasn't found, else it tells you the index where
- // the item resided. Comparison is memcmp.
- virtual Option<int32_t> removeArrayElementIf(void* instId, int32_t propId, const uint8_t* data, uint32_t dataLen,
- int32_t incomingType = -1) = 0;
- virtual bool setArrayElementValue(void* instId, int32_t propId, int32_t propIdx, const uint8_t* data,
- uint32_t dataLen, int32_t incomingType) = 0;
-
- virtual void originShift(void* instId, PxVec3 shift) = 0;
-
- InstanceDescription createInstance(const NamespacedName& name)
- {
- return createInstance(getMetaData().findClass(name)->mClassId);
- }
- template <typename TDataType>
- bool setPropertyValue(void* instId, const char* propName, const TDataType* dtype, uint32_t count)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return false;
- }
- const PropertyDescription& prop(descOpt);
- Option<ClassDescription> incomingCls(getMetaData().findClass(getPvdNamespacedNameForType<TDataType>()));
- if(incomingCls.hasValue())
- return setPropertyValue(instId, prop.mPropertyId, reinterpret_cast<const uint8_t*>(dtype),
- sizeof(*dtype) * count, incomingCls.getValue().mClassId);
- return false;
- }
-
- // Simplest possible setPropertyValue
- template <typename TDataType>
- bool setPropertyValue(void* instId, const char* propName, const TDataType& dtype)
- {
- return setPropertyValue(instId, propName, &dtype, 1);
- }
-
- template <typename TDataType>
- bool setPropertyMessage(void* instId, const TDataType& msg)
- {
- Option<PropertyMessageDescription> msgId =
- getMetaData().findPropertyMessage(getPvdNamespacedNameForType<TDataType>());
- if(msgId.hasValue() == false)
- return false;
- return setPropertyMessage(instId, msgId.getValue().mMessageId, reinterpret_cast<const uint8_t*>(&msg),
- sizeof(msg));
- }
- template <typename TDataType>
- bool insertArrayElement(void* instId, const char* propName, int32_t idx, const TDataType& dtype)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return false;
- }
- const PropertyDescription& prop(descOpt);
- Option<ClassDescription> incomingCls(getMetaData().findClass(getPvdNamespacedNameForType<TDataType>()));
- if(incomingCls.hasValue())
- {
- return insertArrayElement(instId, prop.mPropertyId, idx, reinterpret_cast<const uint8_t*>(&dtype),
- sizeof(dtype), incomingCls.getValue().mClassId);
- }
- return false;
- }
-
- bool removeArrayElement(void* instId, const char* propName, int32_t idx)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return false;
- }
- const PropertyDescription& prop(descOpt);
- return removeArrayElement(instId, prop.mPropertyId, idx);
- }
- template <typename TDataType>
- Option<int32_t> pushBackArrayElementIf(void* instId, const char* pname, const TDataType& item)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, pname));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return None();
- }
- const PropertyDescription& prop(descOpt);
- Option<ClassDescription> incomingCls(getMetaData().findClass(getPvdNamespacedNameForType<TDataType>()));
- if(incomingCls.hasValue() && (incomingCls.getValue().mClassId == prop.mDatatype))
- {
- return pushBackArrayElementIf(instId, prop.mPropertyId, reinterpret_cast<const uint8_t*>(&item),
- sizeof(item), incomingCls.getValue().mClassId);
- }
- return None();
- }
- template <typename TDataType>
- Option<int32_t> removeArrayElementIf(void* instId, const char* propId, const TDataType& item)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propId));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return None();
- }
- const PropertyDescription& prop(descOpt);
- Option<ClassDescription> incomingCls(getMetaData().findClass(getPvdNamespacedNameForType<TDataType>()));
- if(incomingCls.hasValue() && (incomingCls.getValue().mClassId == prop.mDatatype))
- {
- return removeArrayElementIf(instId, prop.mPropertyId, reinterpret_cast<const uint8_t*>(&item), sizeof(item),
- incomingCls.getValue().mClassId);
- }
- return None();
- }
- template <typename TDataType>
- bool setArrayElementValue(void* instId, const char* propName, int32_t propIdx, TDataType& item)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return false;
- }
- const PropertyDescription& prop(descOpt);
- Option<ClassDescription> incomingCls(getMetaData().findClass(getPvdNamespacedNameForType<TDataType>()));
- if(incomingCls.hasValue() && (incomingCls.getValue().mClassId == prop.mDatatype))
- return setArrayElementValue(instId, prop.mPropertyId, propIdx, reinterpret_cast<const uint8_t*>(&item),
- sizeof(item), incomingCls.getValue().mClassId);
- PX_ASSERT(false);
- return false;
- }
-};
-
-class PvdObjectModelReader : public virtual PvdObjectModelBase
-{
- protected:
- virtual ~PvdObjectModelReader()
- {
- }
-
- public:
- // Return the byte size of a possible nested property
- virtual uint32_t getPropertyByteSize(void* instId, int32_t propId) = 0;
- uint32_t getPropertyByteSize(void* instId, String propName)
- {
- int32_t propId = getMetaData().findProperty(getClassOf(instId)->mClassId, propName)->mPropertyId;
- return getPropertyByteSize(instId, propId);
- }
- // Return the value of a possible nested property
- virtual uint32_t getPropertyValue(void* instId, int32_t propId, uint8_t* outData, uint32_t outDataLen) = 0;
- // Get the actual raw database memory. This is subject to change drastically if the object gets deleted.
- virtual DataRef<uint8_t> getRawPropertyValue(void* instId, int32_t propId) = 0;
-
- DataRef<uint8_t> getRawPropertyValue(void* instId, const char* propName)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return 0;
- }
- return getRawPropertyValue(instId, descOpt->mPropertyId);
- }
-
- template <typename TDataType>
- DataRef<TDataType> getTypedRawPropertyValue(void* instId, int32_t propId)
- {
- DataRef<uint8_t> propVal = getRawPropertyValue(instId, propId);
- return DataRef<TDataType>(reinterpret_cast<const TDataType*>(propVal.begin()),
- propVal.size() / sizeof(TDataType));
- }
-
- template <typename TDataType>
- DataRef<TDataType> getTypedRawPropertyValue(void* instId, const char* propName)
- {
- DataRef<uint8_t> propVal = getRawPropertyValue(instId, propName);
- return DataRef<TDataType>(reinterpret_cast<const TDataType*>(propVal.begin()),
- propVal.size() / sizeof(TDataType));
- }
-
- template <typename TDataType>
- uint32_t getPropertyValue(void* instId, const char* propName, TDataType* outBuffer, uint32_t outNumBufferItems)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return 0;
- }
- const PropertyDescription& prop(descOpt);
- uint32_t desired = outNumBufferItems * sizeof(TDataType);
- return getPropertyValue(instId, prop.mPropertyId, reinterpret_cast<uint8_t*>(outBuffer), desired) /
- sizeof(TDataType);
- }
-
- template <typename TDataType>
- Option<TDataType> getPropertyValue(void* instId, const char* propName)
- {
- TDataType retval;
- if(getPropertyValue(instId, propName, &retval, 1) == 1)
- return retval;
- return None();
- }
-
- // Get this one item out of the array
- // return array[idx]
- virtual uint32_t getPropertyValue(void* instId, int32_t propId, int inArrayIndex, uint8_t* outData,
- uint32_t outDataLen) = 0;
- // Get this sub element of one item out of the array
- // return array[idx].a
- virtual uint32_t getPropertyValue(void* instId, int32_t propId, int inArrayIndex, int nestedProperty,
- uint8_t* outData, uint32_t outDataLen) = 0;
-
- // Get a set of properties defined by a property message
- virtual bool getPropertyMessage(void* instId, int32_t msgId, uint8_t* data, uint32_t dataLen) const = 0;
-
- template <typename TDataType>
- bool getPropertyMessage(void* instId, TDataType& msg)
- {
- Option<PropertyMessageDescription> msgId(
- getMetaData().findPropertyMessage(getPvdNamespacedNameForType<TDataType>()));
- if(msgId.hasValue() == false)
- return false;
- return getPropertyMessage(instId, msgId.getValue().mMessageId, reinterpret_cast<uint8_t*>(&msg), sizeof(msg));
- }
-
- // clearing the array is performed with a set property value call with no data.
- virtual uint32_t getNbArrayElements(void* instId, int32_t propId) = 0;
- uint32_t getNbArrayElements(void* instId, const char* propName)
- {
- ClassDescription cls(getClassOf(instId));
- Option<PropertyDescription> descOpt(getMetaData().findProperty(cls.mClassId, propName));
- if(!descOpt.hasValue())
- {
- PX_ASSERT(false);
- return false;
- }
- const PropertyDescription& prop(descOpt);
- return getNbArrayElements(instId, prop.mPropertyId);
- }
-
- // Write this instance out. Offset is set as the instances last write offset.
- // This offset is cleared if the object is changed.
- // If offset doesn't have a value, then the instance isn't changed.
- virtual void writeInstance(void* instId, PvdOutputStream& stream) = 0;
-
- virtual uint32_t getNbInstances() const = 0;
- virtual uint32_t getInstances(InstanceDescription* outBuffer, uint32_t count, uint32_t startIndex = 0) const = 0;
-
- // Get the list of updated objects since the last time someone cleared the updated instance list.
- virtual uint32_t getNbUpdatedInstances() const = 0;
- virtual uint32_t getUpdatedInstances(InstanceDescription* outBuffer, uint32_t count, uint32_t startIndex = 0) = 0;
- // Must be called for instances to be released. Only instances that aren't live nor are they updated
- // are valid.
- virtual void clearUpdatedInstances() = 0;
-};
-
-class PvdObjectModel : public PvdObjectModelMutator, public PvdObjectModelReader
-{
- protected:
- virtual ~PvdObjectModel()
- {
- }
-
- public:
- virtual void destroyAllInstances() = 0;
- virtual bool setPropertyValueToDefault(void* instId, int32_t propId) = 0;
- // Read an instance data and put a copy of the data in the output stream.
- static bool readInstance(PvdInputStream& inStream, PvdOutputStream& outStream);
- virtual InstanceDescription readInstance(DataRef<const uint8_t> writtenData) = 0;
- // Set just this property from this serialized instance.
- // Expects the instance to be alive, just like setPropertyValue
- virtual bool readInstanceProperty(DataRef<const uint8_t> writtenData, int32_t propId) = 0;
-
- virtual void recordCompletedInstances() = 0;
-
- // OriginShift seekback support
- virtual uint32_t getNbShifted() = 0;
- virtual void getShiftedPair(InstancePropertyPair* outData, uint32_t count) = 0;
- virtual void clearShiftedPair() = 0;
- virtual void shiftObject(void* instId, int32_t propId, PxVec3 shift) = 0;
- static PvdObjectModel& create(physx::PxAllocatorCallback& callback, PvdObjectModelMetaData& metaData,
- bool isCapture = false);
-};
-
-#if PX_VC == 11 || PX_VC == 12 || PX_VC == 14
-#pragma warning(pop)
-#endif
-}
-}
-#endif // PXPVDSDK_PXPVDOBJECTMODEL_H
diff --git a/PxShared/src/pvd/src/PxPvdObjectModelInternalTypeDefs.h b/PxShared/src/pvd/src/PxPvdObjectModelInternalTypeDefs.h
deleted file mode 100644
index eca7858..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectModelInternalTypeDefs.h
+++ /dev/null
@@ -1,32 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#define THERE_IS_NO_INCLUDE_GUARD_HERE_FOR_A_REASON
-
-DECLARE_INTERNAL_PVD_TYPE(ArrayData)
-
-#undef THERE_IS_NO_INCLUDE_GUARD_HERE_FOR_A_REASON
diff --git a/PxShared/src/pvd/src/PxPvdObjectModelInternalTypes.h b/PxShared/src/pvd/src/PxPvdObjectModelInternalTypes.h
deleted file mode 100644
index 3344140..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectModelInternalTypes.h
+++ /dev/null
@@ -1,171 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDOBJECTMODELINTERNALTYPES_H
-#define PXPVDSDK_PXPVDOBJECTMODELINTERNALTYPES_H
-
-#include "foundation/PxMemory.h"
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PsArray.h"
-#include "PxPvdFoundation.h"
-#include "PxPvdObjectModel.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-struct PvdInternalType
-{
- enum Enum
- {
- None = 0,
-#define DECLARE_INTERNAL_PVD_TYPE(type) type,
-#include "PxPvdObjectModelInternalTypeDefs.h"
- Last
-#undef DECLARE_INTERNAL_PVD_TYPE
- };
-};
-
-PX_COMPILE_TIME_ASSERT(uint32_t(PvdInternalType::Last) <= uint32_t(PvdBaseType::InternalStop));
-
-template <typename T>
-struct DataTypeToPvdTypeMap
-{
- bool compile_error;
-};
-template <PvdInternalType::Enum>
-struct PvdTypeToDataTypeMap
-{
- bool compile_error;
-};
-
-#define DECLARE_INTERNAL_PVD_TYPE(type) \
- template <> \
- struct DataTypeToPvdTypeMap<type> \
- { \
- enum Enum \
- { \
- BaseTypeEnum = PvdInternalType::type \
- }; \
- }; \
- template <> \
- struct PvdTypeToDataTypeMap<PvdInternalType::type> \
- { \
- typedef type TDataType; \
- }; \
- template <> \
- struct PvdDataTypeToNamespacedNameMap<type> \
- { \
- NamespacedName Name; \
- PvdDataTypeToNamespacedNameMap<type>() : Name("physx3_debugger_internal", #type) \
- { \
- } \
- };
-#include "PxPvdObjectModelInternalTypeDefs.h"
-#undef DECLARE_INTERNAL_PVD_TYPE
-
-template <typename TDataType, typename TAlloc>
-DataRef<TDataType> toDataRef(const shdfnd::Array<TDataType, TAlloc>& data)
-{
- return DataRef<TDataType>(data.begin(), data.end());
-}
-
-static inline bool safeStrEq(const DataRef<String>& lhs, const DataRef<String>& rhs)
-{
- uint32_t count = lhs.size();
- if(count != rhs.size())
- return false;
- for(uint32_t idx = 0; idx < count; ++idx)
- if(!safeStrEq(lhs[idx], rhs[idx]))
- return false;
- return true;
-}
-
-static inline char* copyStr(const char* str)
-{
- str = nonNull(str);
- uint32_t len = static_cast<uint32_t>(strlen(str));
- char* newData = reinterpret_cast<char*>(PX_ALLOC(len + 1, "string"));
- PxMemCopy(newData, str, len);
- newData[len] = 0;
- return newData;
-}
-
-// Used for predictable bit fields.
-template <typename TDataType, uint8_t TNumBits, uint8_t TOffset, typename TInputType>
-struct BitMaskSetter
-{
- // Create a mask that masks out the orginal value shift into place
- static TDataType createOffsetMask()
- {
- return createMask() << TOffset;
- }
- // Create a mask of TNumBits number of tis
- static TDataType createMask()
- {
- return static_cast<TDataType>((1 << TNumBits) - 1);
- }
- void setValue(TDataType& inCurrent, TInputType inData)
- {
- PX_ASSERT(inData < (1 << TNumBits));
-
- // Create a mask to remove the current value.
- TDataType theMask = ~(createOffsetMask());
- // Clear out current value.
- inCurrent = inCurrent & theMask;
- // Create the new value.
- TDataType theAddition = reinterpret_cast<TDataType>(inData << TOffset);
- // or it into the existing value.
- inCurrent = inCurrent | theAddition;
- }
-
- TInputType getValue(TDataType inCurrent)
- {
- return static_cast<TInputType>((inCurrent >> TOffset) & createMask());
- }
-};
-
-template <typename TObjType>
-DataRef<TObjType> getArray(shdfnd::Array<uint8_t>& dataBuffer, PvdObjectModelReader& reader, InstanceDescription instanceDesc,
- String propName)
-{
- int32_t propId = reader.getMetaData().findProperty(reader.getClassOf(instanceDesc)->mClassId, propName)->mPropertyId;
- uint32_t numBytes = reader.getPropertyByteSize(instanceDesc.mInstPtr, propId);
- uint32_t numItems = reader.getNbArrayElements(instanceDesc.mInstPtr, propId);
- if(numBytes == 0)
- return NULL;
- if(numBytes > dataBuffer.size())
- dataBuffer.resize(numBytes);
-
- TObjType* dataPtr = reinterpret_cast<TObjType*>(dataBuffer.begin());
- reader.getPropertyValue(instanceDesc, propId, dataBuffer.begin(), numBytes);
- return DataRef<TObjType>(dataPtr, numItems);
-}
-}
-}
-#endif // PXPVDSDK_PXPVDOBJECTMODELINTERNALTYPES_H
diff --git a/PxShared/src/pvd/src/PxPvdObjectModelMetaData.cpp b/PxShared/src/pvd/src/PxPvdObjectModelMetaData.cpp
deleted file mode 100644
index 9971d00..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectModelMetaData.cpp
+++ /dev/null
@@ -1,1515 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#include "PxPvdObjectModel.h"
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PxPvdObjectModelInternalTypes.h"
-#include "PxPvdObjectModelMetaData.h"
-#include "PxPvdFoundation.h"
-#include "PsMutex.h"
-#include "PxPvdByteStreams.h"
-#include "PxPvdInternalByteStreams.h"
-#include "PxPvdMarshalling.h"
-
-using namespace physx;
-using namespace pvdsdk;
-using namespace shdfnd;
-
-namespace
-{
-
-struct PropDescImpl : public PropertyDescription, public UserAllocated
-{
- Array<NamedValue> mValueNames;
- PropDescImpl(const PropertyDescription& inBase, StringTable& table)
- : PropertyDescription(inBase), mValueNames("NamedValue")
- {
- mName = table.registerStr(mName);
- }
- PropDescImpl() : mValueNames("NamedValue")
- {
- }
-
- template <typename TSerializer>
- void serialize(TSerializer& serializer)
- {
- serializer.streamify(mOwnerClassName);
- serializer.streamify(mOwnerClassId);
- serializer.streamify(mSemantic);
- serializer.streamify(mDatatype);
- serializer.streamify(mDatatypeName);
- serializer.streamify(mPropertyType);
- serializer.streamify(mPropertyId);
- serializer.streamify(m32BitOffset);
- serializer.streamify(m64BitOffset);
- serializer.streamify(mValueNames);
- serializer.streamify(mName);
- }
-};
-
-struct ClassDescImpl : public ClassDescription, public UserAllocated
-{
- Array<PropDescImpl*> mPropImps;
- Array<PtrOffset> m32OffsetArray;
- Array<PtrOffset> m64OffsetArray;
- ClassDescImpl(const ClassDescription& inBase)
- : ClassDescription(inBase)
- , mPropImps("PropDescImpl*")
- , m32OffsetArray("ClassDescImpl::m32OffsetArray")
- , m64OffsetArray("ClassDescImpl::m64OffsetArray")
- {
- PVD_FOREACH(idx, get32BitSizeInfo().mPtrOffsets.size())
- m32OffsetArray.pushBack(get32BitSizeInfo().mPtrOffsets[idx]);
- PVD_FOREACH(idx, get64BitSizeInfo().mPtrOffsets.size())
- m64OffsetArray.pushBack(get64BitSizeInfo().mPtrOffsets[idx]);
- }
- ClassDescImpl()
- : mPropImps("PropDescImpl*")
- , m32OffsetArray("ClassDescImpl::m32OffsetArray")
- , m64OffsetArray("ClassDescImpl::m64OffsetArray")
- {
- }
- PropDescImpl* findProperty(String name)
- {
- PVD_FOREACH(idx, mPropImps.size())
- {
- if(safeStrEq(mPropImps[idx]->mName, name))
- return mPropImps[idx];
- }
- return NULL;
- }
- void addProperty(PropDescImpl* prop)
- {
- mPropImps.pushBack(prop);
- }
-
- void addPtrOffset(PtrOffsetType::Enum type, uint32_t offset32, uint32_t offset64)
- {
- m32OffsetArray.pushBack(PtrOffset(type, offset32));
- m64OffsetArray.pushBack(PtrOffset(type, offset64));
- get32BitSizeInfo().mPtrOffsets = DataRef<PtrOffset>(m32OffsetArray.begin(), m32OffsetArray.end());
- get64BitSizeInfo().mPtrOffsets = DataRef<PtrOffset>(m64OffsetArray.begin(), m64OffsetArray.end());
- }
-
- template <typename TSerializer>
- void serialize(TSerializer& serializer)
- {
- serializer.streamify(mName);
- serializer.streamify(mClassId);
- serializer.streamify(mBaseClass);
- serializer.streamify(mPackedUniformWidth);
- serializer.streamify(mPackedClassType);
- serializer.streamify(mLocked);
- serializer.streamify(mRequiresDestruction);
- serializer.streamify(get32BitSize());
- serializer.streamify(get32BitSizeInfo().mDataByteSize);
- serializer.streamify(get32BitSizeInfo().mAlignment);
- serializer.streamify(get64BitSize());
- serializer.streamify(get64BitSizeInfo().mDataByteSize);
- serializer.streamify(get64BitSizeInfo().mAlignment);
- serializer.streamifyLinks(mPropImps);
- serializer.streamify(m32OffsetArray);
- serializer.streamify(m64OffsetArray);
- get32BitSizeInfo().mPtrOffsets = DataRef<PtrOffset>(m32OffsetArray.begin(), m32OffsetArray.end());
- get64BitSizeInfo().mPtrOffsets = DataRef<PtrOffset>(m64OffsetArray.begin(), m64OffsetArray.end());
- }
-};
-
-class StringTableImpl : public StringTable, public UserAllocated
-{
- HashMap<const char*, char*> mStrings;
- uint32_t mNextStrHandle;
- HashMap<uint32_t, char*> mHandleToStr;
- HashMap<const char*, uint32_t> mStrToHandle;
-
- public:
- StringTableImpl()
- : mStrings("StringTableImpl::mStrings")
- , mNextStrHandle(1)
- , mHandleToStr("StringTableImpl::mHandleToStr")
- , mStrToHandle("StringTableImpl::mStrToHandle")
- {
- }
- uint32_t nextHandleValue()
- {
- return mNextStrHandle++;
- }
- virtual ~StringTableImpl()
- {
- for(HashMap<const char*, char*>::Iterator iter = mStrings.getIterator(); !iter.done(); ++iter)
- PX_FREE(iter->second);
- mStrings.clear();
- }
- virtual uint32_t getNbStrs()
- {
- return mStrings.size();
- }
- virtual uint32_t getStrs(const char** outStrs, uint32_t bufLen, uint32_t startIdx = 0)
- {
- startIdx = PxMin(getNbStrs(), startIdx);
- uint32_t numStrs(PxMin(getNbStrs() - startIdx, bufLen));
- HashMap<const char*, char*>::Iterator iter(mStrings.getIterator());
- for(uint32_t idx = 0; idx < startIdx; ++idx, ++iter)
- ;
- for(uint32_t idx = 0; idx < numStrs && !iter.done(); ++idx, ++iter)
- outStrs[idx] = iter->second;
- return numStrs;
- }
- void addStringHandle(char* str, uint32_t hdl)
- {
- mHandleToStr.insert(hdl, str);
- mStrToHandle.insert(str, hdl);
- }
-
- uint32_t addStringHandle(char* str)
- {
- uint32_t theNewHandle = nextHandleValue();
- addStringHandle(str, theNewHandle);
- return theNewHandle;
- }
- const char* doRegisterStr(const char* str, bool& outAdded)
- {
- PX_ASSERT(isMeaningful(str));
- const HashMap<const char*, char*>::Entry* entry(mStrings.find(str));
- if(entry == NULL)
- {
- outAdded = true;
- char* retval(copyStr(str));
- mStrings.insert(retval, retval);
- return retval;
- }
- return entry->second;
- }
- virtual const char* registerStr(const char* str, bool& outAdded)
- {
- outAdded = false;
- if(isMeaningful(str) == false)
- return "";
- const char* retval = doRegisterStr(str, outAdded);
- if(outAdded)
- addStringHandle(const_cast<char*>(retval));
- return retval;
- }
-
- NamespacedName registerName(const NamespacedName& nm)
- {
- return NamespacedName(registerStr(nm.mNamespace), registerStr(nm.mName));
- }
- const char* registerStr(const char* str)
- {
- bool ignored;
- return registerStr(str, ignored);
- }
-
- virtual StringHandle strToHandle(const char* str)
- {
- if(isMeaningful(str) == false)
- return 0;
- const HashMap<const char*, uint32_t>::Entry* entry(mStrToHandle.find(str));
- if(entry)
- return entry->second;
- bool added = false;
- const char* registeredStr = doRegisterStr(str, added);
- uint32_t theNewHandle = addStringHandle(const_cast<char*>(registeredStr));
- PX_ASSERT(mStrToHandle.find(str));
- PX_ASSERT(added);
- return theNewHandle;
- }
-
- virtual const char* handleToStr(uint32_t hdl)
- {
- if(hdl == 0)
- return "";
- const HashMap<uint32_t, char*>::Entry* entry(mHandleToStr.find(hdl));
- if(entry)
- return entry->second;
- // unregistered handle...
- return "";
- }
-
- void write(PvdOutputStream& stream)
- {
- uint32_t numStrs = static_cast<uint32_t>(mHandleToStr.size());
- stream << numStrs;
- stream << mNextStrHandle;
- for(HashMap<uint32_t, char*>::Iterator iter = mHandleToStr.getIterator(); !iter.done(); ++iter)
- {
- stream << iter->first;
- uint32_t len = static_cast<uint32_t>(strlen(iter->second) + 1);
- stream << len;
- stream.write(reinterpret_cast<uint8_t*>(iter->second), len);
- }
- }
-
- template <typename TReader>
- void read(TReader& stream)
- {
- mHandleToStr.clear();
- mStrToHandle.clear();
- uint32_t numStrs;
- stream >> numStrs;
- stream >> mNextStrHandle;
- Array<uint8_t> readBuffer("StringTable::read::readBuffer");
- uint32_t bufSize = 0;
- for(uint32_t idx = 0; idx < numStrs; ++idx)
- {
- uint32_t handleValue;
- uint32_t bufLen;
- stream >> handleValue;
- stream >> bufLen;
- if(bufSize < bufLen)
- readBuffer.resize(bufLen);
- bufSize = PxMax(bufSize, bufLen);
- stream.read(readBuffer.begin(), bufLen);
- bool ignored;
- const char* newStr = doRegisterStr(reinterpret_cast<const char*>(readBuffer.begin()), ignored);
- addStringHandle(const_cast<char*>(newStr), handleValue);
- }
- }
-
- virtual void release()
- {
- PVD_DELETE(this);
- }
-
- private:
- StringTableImpl& operator=(const StringTableImpl&);
-};
-
-struct NamespacedNameHasher
-{
- uint32_t operator()(const NamespacedName& nm)
- {
- return Hash<const char*>()(nm.mNamespace) ^ Hash<const char*>()(nm.mName);
- }
- bool equal(const NamespacedName& lhs, const NamespacedName& rhs)
- {
- return safeStrEq(lhs.mNamespace, rhs.mNamespace) && safeStrEq(lhs.mName, rhs.mName);
- }
-};
-
-struct ClassPropertyName
-{
- NamespacedName mName;
- String mPropName;
- ClassPropertyName(const NamespacedName& name = NamespacedName(), String propName = "")
- : mName(name), mPropName(propName)
- {
- }
-};
-
-struct ClassPropertyNameHasher
-{
- uint32_t operator()(const ClassPropertyName& nm)
- {
- return NamespacedNameHasher()(nm.mName) ^ Hash<const char*>()(nm.mPropName);
- }
- bool equal(const ClassPropertyName& lhs, const ClassPropertyName& rhs)
- {
- return NamespacedNameHasher().equal(lhs.mName, rhs.mName) && safeStrEq(lhs.mPropName, rhs.mPropName);
- }
-};
-
-struct PropertyMessageEntryImpl : public PropertyMessageEntry
-{
- PropertyMessageEntryImpl(const PropertyMessageEntry& data) : PropertyMessageEntry(data)
- {
- }
- PropertyMessageEntryImpl()
- {
- }
- template <typename TSerializerType>
- void serialize(TSerializerType& serializer)
- {
- serializer.streamify(mDatatypeName);
- serializer.streamify(mDatatypeId);
- serializer.streamify(mMessageOffset);
- serializer.streamify(mByteSize);
- serializer.streamify(mDestByteSize);
- serializer.streamify(mProperty);
- }
-};
-
-struct PropertyMessageDescriptionImpl : public PropertyMessageDescription, public UserAllocated
-{
- Array<PropertyMessageEntryImpl> mEntryImpls;
- Array<PropertyMessageEntry> mEntries;
- Array<uint32_t> mStringOffsetArray;
- PropertyMessageDescriptionImpl(const PropertyMessageDescription& data)
- : PropertyMessageDescription(data)
- , mEntryImpls("PropertyMessageDescriptionImpl::mEntryImpls")
- , mEntries("PropertyMessageDescriptionImpl::mEntries")
- , mStringOffsetArray("PropertyMessageDescriptionImpl::mStringOffsets")
- {
- }
- PropertyMessageDescriptionImpl()
- : mEntryImpls("PropertyMessageDescriptionImpl::mEntryImpls")
- , mEntries("PropertyMessageDescriptionImpl::mEntries")
- , mStringOffsetArray("PropertyMessageDescriptionImpl::mStringOffsets")
- {
- }
-
- ~PropertyMessageDescriptionImpl()
- {
- }
-
- void addEntry(const PropertyMessageEntryImpl& entry)
- {
- mEntryImpls.pushBack(entry);
- mEntries.pushBack(entry);
- mProperties = DataRef<PropertyMessageEntry>(mEntries.begin(), mEntries.end());
- }
-
- template <typename TSerializerType>
- void serialize(TSerializerType& serializer)
- {
- serializer.streamify(mClassName);
- serializer.streamify(mClassId); // No other class has this id, it is DB-unique
- serializer.streamify(mMessageName);
- serializer.streamify(mMessageId);
- serializer.streamify(mMessageByteSize);
- serializer.streamify(mEntryImpls);
- serializer.streamify(mStringOffsetArray);
- if(mEntries.size() != mEntryImpls.size())
- {
- mEntries.clear();
- uint32_t numEntries = static_cast<uint32_t>(mEntryImpls.size());
- for(uint32_t idx = 0; idx < numEntries; ++idx)
- mEntries.pushBack(mEntryImpls[idx]);
- }
- mProperties = DataRef<PropertyMessageEntry>(mEntries.begin(), mEntries.end());
- mStringOffsets = DataRef<uint32_t>(mStringOffsetArray.begin(), mStringOffsetArray.end());
- }
-
- private:
- PropertyMessageDescriptionImpl& operator=(const PropertyMessageDescriptionImpl&);
-};
-
-struct PvdObjectModelMetaDataImpl : public PvdObjectModelMetaData, public UserAllocated
-{
- typedef HashMap<NamespacedName, ClassDescImpl*, NamespacedNameHasher> TNameToClassMap;
- typedef HashMap<ClassPropertyName, PropDescImpl*, ClassPropertyNameHasher> TNameToPropMap;
- typedef HashMap<NamespacedName, PropertyMessageDescriptionImpl*, NamespacedNameHasher> TNameToPropertyMessageMap;
-
- TNameToClassMap mNameToClasses;
- TNameToPropMap mNameToProperties;
- Array<ClassDescImpl*> mClasses;
- Array<PropDescImpl*> mProperties;
- StringTableImpl* mStringTable;
- TNameToPropertyMessageMap mPropertyMessageMap;
- Array<PropertyMessageDescriptionImpl*> mPropertyMessages;
- int32_t mNextClassId;
- uint32_t mRefCount;
-
- PvdObjectModelMetaDataImpl()
- : mNameToClasses("NamespacedName->ClassDescImpl*")
- , mNameToProperties("ClassPropertyName->PropDescImpl*")
- , mClasses("ClassDescImpl*")
- , mProperties("PropDescImpl*")
- , mStringTable(PVD_NEW(StringTableImpl)())
- , mPropertyMessageMap("PropertyMessageMap")
- , mPropertyMessages("PvdObjectModelMetaDataImpl::mPropertyMessages")
- , mNextClassId(1)
- , mRefCount(0)
- {
- }
-
- private:
- PvdObjectModelMetaDataImpl& operator=(const PvdObjectModelMetaDataImpl&);
-
- public:
- int32_t nextClassId()
- {
- return mNextClassId++;
- }
- void initialize()
- {
- // Create the default classes.
- {
- ClassDescImpl& aryData = getOrCreateClassImpl(getPvdNamespacedNameForType<ArrayData>(),
- DataTypeToPvdTypeMap<ArrayData>::BaseTypeEnum);
- aryData.get32BitSize() = sizeof(ArrayData);
- aryData.get32BitSizeInfo().mAlignment = sizeof(void*);
- aryData.get64BitSize() = sizeof(ArrayData);
- aryData.get64BitSizeInfo().mAlignment = sizeof(void*);
- aryData.mLocked = true;
- }
-#define CREATE_BASIC_PVD_CLASS(type) \
- { \
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<type>(), getPvdTypeForType<type>()); \
- cls.get32BitSize() = sizeof(type); \
- cls.get32BitSizeInfo().mAlignment = sizeof(type); \
- cls.get64BitSize() = sizeof(type); \
- cls.get64BitSizeInfo().mAlignment = sizeof(type); \
- cls.mLocked = true; \
- cls.mPackedUniformWidth = sizeof(type); \
- cls.mPackedClassType = getPvdTypeForType<type>(); \
- }
- CREATE_BASIC_PVD_CLASS(int8_t)
- CREATE_BASIC_PVD_CLASS(uint8_t)
- CREATE_BASIC_PVD_CLASS(bool)
- CREATE_BASIC_PVD_CLASS(int16_t)
- CREATE_BASIC_PVD_CLASS(uint16_t)
- CREATE_BASIC_PVD_CLASS(int32_t)
- CREATE_BASIC_PVD_CLASS(uint32_t)
- // CREATE_BASIC_PVD_CLASS(uint32_t)
- CREATE_BASIC_PVD_CLASS(int64_t)
- CREATE_BASIC_PVD_CLASS(uint64_t)
- CREATE_BASIC_PVD_CLASS(float)
- CREATE_BASIC_PVD_CLASS(double)
-#undef CREATE_BASIC_PVD_CLASS
-
-#define CREATE_PTR_TYPE_PVD_CLASS(type, ptrType) \
- { \
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<type>(), getPvdTypeForType<type>()); \
- cls.get32BitSize() = 4; \
- cls.get32BitSizeInfo().mAlignment = 4; \
- cls.get64BitSize() = 8; \
- cls.get64BitSizeInfo().mAlignment = 8; \
- cls.mLocked = true; \
- cls.addPtrOffset(PtrOffsetType::ptrType, 0, 0); \
- }
-
- CREATE_PTR_TYPE_PVD_CLASS(String, StringOffset)
- CREATE_PTR_TYPE_PVD_CLASS(VoidPtr, VoidPtrOffset)
- CREATE_PTR_TYPE_PVD_CLASS(StringHandle, StringOffset)
- CREATE_PTR_TYPE_PVD_CLASS(ObjectRef, VoidPtrOffset)
-
-#undef CREATE_64BIT_ADJUST_PVD_CLASS
-
- int32_t fltClassType = getPvdTypeForType<float>();
- int32_t u32ClassType = getPvdTypeForType<uint32_t>();
- int32_t v3ClassType = getPvdTypeForType<PxVec3>();
- int32_t v4ClassType = getPvdTypeForType<PxVec4>();
- int32_t qtClassType = getPvdTypeForType<PxQuat>();
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<PvdColor>(), getPvdTypeForType<PvdColor>());
- createProperty(cls.mClassId, "r", "", getPvdTypeForType<uint8_t>(), PropertyType::Scalar);
- createProperty(cls.mClassId, "g", "", getPvdTypeForType<uint8_t>(), PropertyType::Scalar);
- createProperty(cls.mClassId, "b", "", getPvdTypeForType<uint8_t>(), PropertyType::Scalar);
- createProperty(cls.mClassId, "a", "", getPvdTypeForType<uint8_t>(), PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 1);
- PX_ASSERT(cls.get32BitSize() == 4);
- PX_ASSERT(cls.get64BitSizeInfo().mAlignment == 1);
- PX_ASSERT(cls.get64BitSize() == 4);
- PX_ASSERT(cls.mPackedUniformWidth == 1);
- PX_ASSERT(cls.mPackedClassType == getPvdTypeForType<uint8_t>());
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<PxVec2>(), getPvdTypeForType<PxVec2>());
- createProperty(cls.mClassId, "x", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "y", "", fltClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 8);
- PX_ASSERT(cls.get64BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get64BitSize() == 8);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
- {
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<PxVec3>(), getPvdTypeForType<PxVec3>());
- createProperty(cls.mClassId, "x", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "y", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "z", "", fltClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 12);
- PX_ASSERT(cls.get64BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get64BitSize() == 12);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
- {
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<PxVec4>(), getPvdTypeForType<PxVec4>());
- createProperty(cls.mClassId, "x", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "y", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "z", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "w", "", fltClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 16);
- PX_ASSERT(cls.get64BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get64BitSize() == 16);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls = getOrCreateClassImpl(getPvdNamespacedNameForType<PxQuat>(), getPvdTypeForType<PxQuat>());
- createProperty(cls.mClassId, "x", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "y", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "z", "", fltClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "w", "", fltClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 16);
- PX_ASSERT(cls.get64BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get64BitSize() == 16);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<PxBounds3>(), getPvdTypeForType<PxBounds3>());
- createProperty(cls.mClassId, "minimum", "", v3ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "maximum", "", v3ClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 24);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<PxTransform>(), getPvdTypeForType<PxTransform>());
- createProperty(cls.mClassId, "q", "", qtClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "p", "", v3ClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 28);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<PxMat33>(), getPvdTypeForType<PxMat33>());
- createProperty(cls.mClassId, "column0", "", v3ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "column1", "", v3ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "column2", "", v3ClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 36);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<PxMat44>(), getPvdTypeForType<PxMat44>());
- createProperty(cls.mClassId, "column0", "", v4ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "column1", "", v4ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "column2", "", v4ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "column3", "", v4ClassType, PropertyType::Scalar);
- PX_ASSERT(cls.get32BitSizeInfo().mAlignment == 4);
- PX_ASSERT(cls.get32BitSize() == 64);
- PX_ASSERT(cls.mPackedUniformWidth == 4);
- PX_ASSERT(cls.mPackedClassType == fltClassType);
- cls.mLocked = true;
- }
-
- {
- ClassDescImpl& cls =
- getOrCreateClassImpl(getPvdNamespacedNameForType<U32Array4>(), getPvdTypeForType<U32Array4>());
- createProperty(cls.mClassId, "d0", "", u32ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "d1", "", u32ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "d2", "", u32ClassType, PropertyType::Scalar);
- createProperty(cls.mClassId, "d3", "", u32ClassType, PropertyType::Scalar);
- cls.mLocked = true;
- }
- }
- virtual ~PvdObjectModelMetaDataImpl()
- {
- mStringTable->release();
- PVD_FOREACH(idx, mClasses.size())
- {
- if(mClasses[idx] != NULL)
- PVD_DELETE(mClasses[idx]);
- }
- mClasses.clear();
- PVD_FOREACH(idx, mProperties.size()) PVD_DELETE(mProperties[idx]);
- mProperties.clear();
- PVD_FOREACH(idx, mPropertyMessages.size()) PVD_DELETE(mPropertyMessages[idx]);
- mPropertyMessages.clear();
- }
-
- ClassDescImpl& getOrCreateClassImpl(const NamespacedName& nm, int32_t idx)
- {
- ClassDescImpl* impl(getClassImpl(idx));
- if(impl)
- return *impl;
- NamespacedName safeName(mStringTable->registerStr(nm.mNamespace), mStringTable->registerStr(nm.mName));
- while(idx >= int32_t(mClasses.size()))
- mClasses.pushBack(NULL);
- mClasses[uint32_t(idx)] = PVD_NEW(ClassDescImpl)(ClassDescription(safeName, idx));
- mNameToClasses.insert(nm, mClasses[uint32_t(idx)]);
- mNextClassId = PxMax(mNextClassId, idx + 1);
- return *mClasses[uint32_t(idx)];
- }
-
- ClassDescImpl& getOrCreateClassImpl(const NamespacedName& nm)
- {
- ClassDescImpl* retval = findClassImpl(nm);
- if(retval)
- return *retval;
- return getOrCreateClassImpl(nm, nextClassId());
- }
- virtual ClassDescription getOrCreateClass(const NamespacedName& nm)
- {
- return getOrCreateClassImpl(nm);
- }
- // get or create parent, lock parent. deriveFrom getOrCreatechild.
- virtual bool deriveClass(const NamespacedName& parent, const NamespacedName& child)
- {
- ClassDescImpl& p(getOrCreateClassImpl(parent));
- ClassDescImpl& c(getOrCreateClassImpl(child));
-
- if(c.mBaseClass >= 0)
- {
- PX_ASSERT(c.mBaseClass == p.mClassId);
- return false;
- }
- p.mLocked = true;
- c.mBaseClass = p.mClassId;
- c.get32BitSizeInfo() = p.get32BitSizeInfo();
- c.get64BitSizeInfo() = p.get64BitSizeInfo();
- c.mPackedClassType = p.mPackedClassType;
- c.mPackedUniformWidth = p.mPackedUniformWidth;
- c.mRequiresDestruction = p.mRequiresDestruction;
- c.m32OffsetArray = p.m32OffsetArray;
- c.m64OffsetArray = p.m64OffsetArray;
- // Add all the parent propertes to this class in the global name map.
- for(ClassDescImpl* parent0 = &p; parent0 != NULL; parent0 = getClassImpl(parent0->mBaseClass))
- {
- PVD_FOREACH(idx, parent0->mPropImps.size())
- mNameToProperties.insert(ClassPropertyName(c.mName, parent0->mPropImps[idx]->mName), parent0->mPropImps[idx]);
-
- if(parent0->mBaseClass < 0)
- break;
- }
-
- return true;
- }
- ClassDescImpl* findClassImpl(const NamespacedName& nm) const
- {
- const TNameToClassMap::Entry* entry(mNameToClasses.find(nm));
- if(entry)
- return entry->second;
- return NULL;
- }
- virtual Option<ClassDescription> findClass(const NamespacedName& nm) const
- {
- ClassDescImpl* retval = findClassImpl(nm);
- if(retval)
- return *retval;
- return Option<ClassDescription>();
- }
-
- ClassDescImpl* getClassImpl(int32_t classId) const
- {
- if(classId < 0)
- return NULL;
- uint32_t idx = uint32_t(classId);
- if(idx < mClasses.size())
- return mClasses[idx];
- return NULL;
- }
-
- virtual Option<ClassDescription> getClass(int32_t classId) const
- {
- ClassDescImpl* impl(getClassImpl(classId));
- if(impl)
- return *impl;
- return None();
- }
-
- virtual ClassDescription* getClassPtr(int32_t classId) const
- {
- return getClassImpl(classId);
- }
-
- virtual Option<ClassDescription> getParentClass(int32_t classId) const
- {
- ClassDescImpl* impl(getClassImpl(classId));
- if(impl == NULL)
- return None();
- return getClass(impl->mBaseClass);
- }
-
- virtual void lockClass(int32_t classId)
- {
- ClassDescImpl* impl(getClassImpl(classId));
- PX_ASSERT(impl);
- if(impl)
- impl->mLocked = true;
- }
- virtual uint32_t getNbClasses() const
- {
- uint32_t total = 0;
- PVD_FOREACH(idx, mClasses.size()) if(mClasses[idx])++ total;
- return total;
- }
-
- virtual uint32_t getClasses(ClassDescription* outClasses, uint32_t requestCount, uint32_t startIndex = 0) const
- {
- uint32_t classCount(getNbClasses());
- startIndex = PxMin(classCount, startIndex);
- uint32_t retAmount = PxMin(requestCount, classCount - startIndex);
-
- uint32_t idx = 0;
- while(startIndex)
- {
- if(mClasses[idx] != NULL)
- --startIndex;
- ++idx;
- }
-
- uint32_t inserted = 0;
- uint32_t classesSize = static_cast<uint32_t>(mClasses.size());
- while(inserted < retAmount && idx < classesSize)
- {
- if(mClasses[idx] != NULL)
- {
- outClasses[inserted] = *mClasses[idx];
- ++inserted;
- }
- ++idx;
- }
- return inserted;
- }
-
- uint32_t updateByteSizeAndGetPropertyAlignment(ClassDescriptionSizeInfo& dest, const ClassDescriptionSizeInfo& src)
- {
- uint32_t alignment = src.mAlignment;
- dest.mAlignment = PxMax(dest.mAlignment, alignment);
- uint32_t offset = align(dest.mDataByteSize, alignment);
- dest.mDataByteSize = offset + src.mByteSize;
- dest.mByteSize = align(dest.mDataByteSize, dest.mAlignment);
- return offset;
- }
-
- void transferPtrOffsets(ClassDescriptionSizeInfo& destInfo, Array<PtrOffset>& destArray,
- const Array<PtrOffset>& src, uint32_t offset)
- {
- PVD_FOREACH(idx, src.size())
- destArray.pushBack(PtrOffset(src[idx].mOffsetType, src[idx].mOffset + offset));
- destInfo.mPtrOffsets = DataRef<PtrOffset>(destArray.begin(), destArray.end());
- }
-
- virtual Option<PropertyDescription> createProperty(int32_t classId, String name, String semantic, int32_t datatype,
- PropertyType::Enum propertyType)
- {
- ClassDescImpl* cls(getClassImpl(classId));
- PX_ASSERT(cls);
- if(!cls)
- return None();
- if(cls->mLocked)
- {
- PX_ASSERT(false);
- return None();
- }
- PropDescImpl* impl(cls->findProperty(name));
- // duplicate property definition
- if(impl)
- {
- PX_ASSERT(false);
- return None();
- }
- if(datatype == getPvdTypeForType<String>())
- {
- PX_ASSERT(false);
- return None();
- }
- // The datatype for this property has not been declared.
- ClassDescImpl* propDType(getClassImpl(datatype));
- PX_ASSERT(propDType);
- if(!propDType)
- return None();
- NamespacedName propClsName(propDType->mName);
- int32_t propPackedWidth = propDType->mPackedUniformWidth;
- int32_t propPackedType = propDType->mPackedClassType;
- // The implications of properties being complex types aren't major
- //*until* you start trying to undue a property event that set values
- // of those complex types. Then things just get too complex.
- if(propDType->mRequiresDestruction)
- {
- PX_ASSERT(false);
- return None();
- }
- bool requiresDestruction = propDType->mRequiresDestruction || cls->mRequiresDestruction;
-
- if(propertyType == PropertyType::Array)
- {
- int32_t tempId = DataTypeToPvdTypeMap<ArrayData>::BaseTypeEnum;
- propDType = getClassImpl(tempId);
- PX_ASSERT(propDType);
- if(!propDType)
- return None();
- requiresDestruction = true;
- }
- uint32_t offset32 = updateByteSizeAndGetPropertyAlignment(cls->get32BitSizeInfo(), propDType->get32BitSizeInfo());
- uint32_t offset64 = updateByteSizeAndGetPropertyAlignment(cls->get64BitSizeInfo(), propDType->get64BitSizeInfo());
- transferPtrOffsets(cls->get32BitSizeInfo(), cls->m32OffsetArray, propDType->m32OffsetArray, offset32);
- transferPtrOffsets(cls->get64BitSizeInfo(), cls->m64OffsetArray, propDType->m64OffsetArray, offset64);
- propDType->mLocked = true; // Can't add members to the property type.
- cls->mRequiresDestruction = requiresDestruction;
- int32_t propId = int32_t(mProperties.size());
- PropertyDescription newDesc(cls->mName, cls->mClassId, name, semantic, datatype, propClsName, propertyType,
- propId, offset32, offset64);
- mProperties.pushBack(PVD_NEW(PropDescImpl)(newDesc, *mStringTable));
- mNameToProperties.insert(ClassPropertyName(cls->mName, mProperties.back()->mName), mProperties.back());
- cls->addProperty(mProperties.back());
- bool firstProp = cls->mPropImps.size() == 1;
-
- if(firstProp)
- {
- cls->mPackedUniformWidth = propPackedWidth;
- cls->mPackedClassType = propPackedType;
- }
- else
- {
- bool packed = (propPackedWidth > 0) && (cls->get32BitSizeInfo().mDataByteSize % propPackedWidth) == 0;
- if(cls->mPackedClassType >= 0) // maybe uncheck packed class type
- {
- if(propPackedType < 0 || cls->mPackedClassType != propPackedType
- // Object refs require conversion from stream to db id
- ||
- datatype == getPvdTypeForType<ObjectRef>()
- // Strings also require conversion from stream to db id.
- ||
- datatype == getPvdTypeForType<StringHandle>() || packed == false)
- cls->mPackedClassType = -1;
- }
- if(cls->mPackedUniformWidth >= 0) // maybe uncheck packed class width
- {
- if(propPackedWidth < 0 || cls->mPackedUniformWidth != propPackedWidth
- // object refs, because they require special treatment during parsing,
- // cannot be packed
- ||
- datatype == getPvdTypeForType<ObjectRef>()
- // Likewise, string handles are special because the data needs to be sent *after*
- // the
- ||
- datatype == getPvdTypeForType<StringHandle>() || packed == false)
- cls->mPackedUniformWidth = -1; // invalid packed width.
- }
- }
- return *mProperties.back();
- }
-
- PropDescImpl* findPropImpl(const NamespacedName& clsName, String prop) const
- {
- const TNameToPropMap::Entry* entry = mNameToProperties.find(ClassPropertyName(clsName, prop));
- if(entry)
- return entry->second;
- return NULL;
- }
- virtual Option<PropertyDescription> findProperty(const NamespacedName& cls, String propName) const
- {
- PropDescImpl* prop(findPropImpl(cls, propName));
- if(prop)
- return *prop;
- return None();
- }
-
- virtual Option<PropertyDescription> findProperty(int32_t clsId, String propName) const
- {
- ClassDescImpl* cls(getClassImpl(clsId));
- PX_ASSERT(cls);
- if(!cls)
- return None();
- PropDescImpl* prop(findPropImpl(cls->mName, propName));
- if(prop)
- return *prop;
- return None();
- }
-
- PropDescImpl* getPropertyImpl(int32_t propId) const
- {
- PX_ASSERT(propId >= 0);
- if(propId < 0)
- return NULL;
- uint32_t val = uint32_t(propId);
- if(val >= mProperties.size())
- {
- PX_ASSERT(false);
- return NULL;
- }
- return mProperties[val];
- }
-
- virtual Option<PropertyDescription> getProperty(int32_t propId) const
- {
- PropDescImpl* impl(getPropertyImpl(propId));
- if(impl)
- return *impl;
- return None();
- }
-
- virtual void setNamedPropertyValues(DataRef<NamedValue> values, int32_t propId)
- {
- PropDescImpl* impl(getPropertyImpl(propId));
- if(impl)
- {
- impl->mValueNames.resize(values.size());
- PVD_FOREACH(idx, values.size()) impl->mValueNames[idx] = values[idx];
- }
- }
-
- virtual DataRef<NamedValue> getNamedPropertyValues(int32_t propId) const
- {
- PropDescImpl* impl(getPropertyImpl(propId));
- if(impl)
- {
- return toDataRef(impl->mValueNames);
- }
- return DataRef<NamedValue>();
- }
-
- virtual uint32_t getNbProperties(int32_t classId) const
- {
- uint32_t retval = 0;
- for(ClassDescImpl* impl(getClassImpl(classId)); impl; impl = getClassImpl(impl->mBaseClass))
- {
- retval += impl->mPropImps.size();
- if(impl->mBaseClass < 0)
- break;
- }
- return retval;
- }
-
- // Properties need to be returned in base class order, so this requires a recursive function.
- uint32_t getPropertiesImpl(int32_t classId, PropertyDescription*& outBuffer, uint32_t& numItems,
- uint32_t& startIdx) const
- {
- ClassDescImpl* impl = getClassImpl(classId);
- if(impl)
- {
- uint32_t retval = 0;
- if(impl->mBaseClass >= 0)
- retval = getPropertiesImpl(impl->mBaseClass, outBuffer, numItems, startIdx);
-
- uint32_t localStart = PxMin(impl->mPropImps.size(), startIdx);
- uint32_t localNumItems = PxMin(numItems, impl->mPropImps.size() - localStart);
- PVD_FOREACH(idx, localNumItems)
- {
- outBuffer[idx] = *impl->mPropImps[localStart + idx];
- }
-
- startIdx -= localStart;
- numItems -= localNumItems;
- outBuffer += localNumItems;
- return retval + localNumItems;
- }
- return 0;
- }
-
- virtual uint32_t getProperties(int32_t classId, PropertyDescription* outBuffer, uint32_t numItems,
- uint32_t startIdx) const
- {
- return getPropertiesImpl(classId, outBuffer, numItems, startIdx);
- }
-
- virtual MarshalQueryResult checkMarshalling(int32_t srcClsId, int32_t dstClsId) const
- {
- Option<ClassDescription> propTypeOpt(getClass(dstClsId));
- if(propTypeOpt.hasValue() == false)
- {
- PX_ASSERT(false);
- return MarshalQueryResult();
- }
- const ClassDescription& propType(propTypeOpt);
-
- Option<ClassDescription> incomingTypeOpt(getClass(srcClsId));
- if(incomingTypeOpt.hasValue() == false)
- {
- PX_ASSERT(false);
- return MarshalQueryResult();
- }
- const ClassDescription& incomingType(incomingTypeOpt);
- // Can only marshal simple things at this point in time.
- bool needsMarshalling = false;
- bool canMarshal = false;
- TSingleMarshaller single = NULL;
- TBlockMarshaller block = NULL;
- if(incomingType.mClassId != propType.mClassId)
- {
- // Check that marshalling is even possible.
- if((incomingType.mPackedUniformWidth >= 0 && propType.mPackedUniformWidth >= 0) == false)
- {
- PX_ASSERT(false);
- return MarshalQueryResult();
- }
-
- int32_t srcType = incomingType.mPackedClassType;
- int32_t dstType = propType.mPackedClassType;
-
- int32_t srcWidth = incomingType.mPackedUniformWidth;
- int32_t dstWidth = propType.mPackedUniformWidth;
- canMarshal = getMarshalOperators(single, block, srcType, dstType);
- if(srcWidth == dstWidth)
- needsMarshalling = canMarshal; // If the types are the same width, we assume we can convert between some
- // of them seamlessly (uint16_t, int16_t)
- else
- {
- needsMarshalling = true;
- // If we can't marshall and we have to then we can't set the property value.
- // This indicates that the src and dest are different properties and we don't
- // know how to convert between them.
- if(!canMarshal)
- {
- PX_ASSERT(false);
- return MarshalQueryResult();
- }
- }
- }
- return MarshalQueryResult(srcClsId, dstClsId, canMarshal, needsMarshalling, block);
- }
-
- PropertyMessageDescriptionImpl* findPropertyMessageImpl(const NamespacedName& messageName) const
- {
- const TNameToPropertyMessageMap::Entry* entry = mPropertyMessageMap.find(messageName);
- if(entry)
- return entry->second;
- return NULL;
- }
-
- PropertyMessageDescriptionImpl* getPropertyMessageImpl(int32_t msg) const
- {
- int32_t msgCount = int32_t(mPropertyMessages.size());
- if(msg >= 0 && msg < msgCount)
- return mPropertyMessages[uint32_t(msg)];
- return NULL;
- }
-
- virtual Option<PropertyMessageDescription> createPropertyMessage(const NamespacedName& clsName,
- const NamespacedName& messageName,
- DataRef<PropertyMessageArg> entries,
- uint32_t messageSize)
- {
- PropertyMessageDescriptionImpl* existing(findPropertyMessageImpl(messageName));
- if(existing)
- {
- PX_ASSERT(false);
- return None();
- }
- ClassDescImpl* cls = findClassImpl(clsName);
- PX_ASSERT(cls);
- if(!cls)
- return None();
- int32_t msgId = int32_t(mPropertyMessages.size());
- PropertyMessageDescriptionImpl* newMessage = PVD_NEW(PropertyMessageDescriptionImpl)(
- PropertyMessageDescription(mStringTable->registerName(clsName), cls->mClassId,
- mStringTable->registerName(messageName), msgId, messageSize));
- uint32_t calculatedSize = 0;
- PVD_FOREACH(idx, entries.size())
- {
- PropertyMessageArg entry(entries[idx]);
- ClassDescImpl* dtypeCls = findClassImpl(entry.mDatatypeName);
- if(dtypeCls == NULL)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
- ClassDescriptionSizeInfo dtypeInfo(dtypeCls->get32BitSizeInfo());
- uint32_t incomingSize = dtypeInfo.mByteSize;
- if(entry.mByteSize < incomingSize)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
-
- calculatedSize = PxMax(calculatedSize, entry.mMessageOffset + entry.mByteSize);
- if(calculatedSize > messageSize)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
-
- Option<PropertyDescription> propName(findProperty(cls->mClassId, entry.mPropertyName));
- if(propName.hasValue() == false)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
-
- Option<ClassDescription> propCls(getClass(propName.getValue().mDatatype));
- if(propCls.hasValue() == false)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
-
- PropertyMessageEntryImpl newEntry(PropertyMessageEntry(
- propName, dtypeCls->mName, dtypeCls->mClassId, entry.mMessageOffset, incomingSize, dtypeInfo.mByteSize));
- newMessage->addEntry(newEntry);
-
- if(newEntry.mDatatypeId == getPvdTypeForType<String>())
- newMessage->mStringOffsetArray.pushBack(entry.mMessageOffset);
-
- // property messages cannot be marshalled at this time.
- if(newEntry.mDatatypeId != getPvdTypeForType<String>() && newEntry.mDatatypeId != getPvdTypeForType<VoidPtr>())
- {
- MarshalQueryResult marshalInfo = checkMarshalling(newEntry.mDatatypeId, newEntry.mProperty.mDatatype);
- if(marshalInfo.needsMarshalling)
- {
- PX_ASSERT(false);
- goto DestroyNewMessage;
- }
- }
- }
-
- if(newMessage)
- {
- newMessage->mStringOffsets =
- DataRef<uint32_t>(newMessage->mStringOffsetArray.begin(), newMessage->mStringOffsetArray.end());
- mPropertyMessages.pushBack(newMessage);
- mPropertyMessageMap.insert(messageName, newMessage);
- return *newMessage;
- }
-
- DestroyNewMessage:
- if(newMessage)
- PVD_DELETE(newMessage);
-
- return None();
- }
- virtual Option<PropertyMessageDescription> findPropertyMessage(const NamespacedName& msgName) const
- {
- PropertyMessageDescriptionImpl* desc(findPropertyMessageImpl(msgName));
- if(desc)
- return *desc;
- return None();
- }
-
- virtual Option<PropertyMessageDescription> getPropertyMessage(int32_t msgId) const
- {
- PropertyMessageDescriptionImpl* desc(getPropertyMessageImpl(msgId));
- if(desc)
- return *desc;
- return None();
- }
-
- virtual uint32_t getNbPropertyMessages() const
- {
- return mPropertyMessages.size();
- }
-
- virtual uint32_t getPropertyMessages(PropertyMessageDescription* msgBuf, uint32_t bufLen, uint32_t startIdx = 0) const
- {
- startIdx = PxMin(startIdx, getNbPropertyMessages());
- bufLen = PxMin(bufLen, getNbPropertyMessages() - startIdx);
- PVD_FOREACH(idx, bufLen) msgBuf[idx] = *mPropertyMessages[idx + startIdx];
- return bufLen;
- }
-
- struct MetaDataWriter
- {
- const PvdObjectModelMetaDataImpl& mMetaData;
- PvdOutputStream& mStream;
- MetaDataWriter(const PvdObjectModelMetaDataImpl& meta, PvdOutputStream& stream)
- : mMetaData(meta), mStream(stream)
- {
- }
-
- void streamify(NamespacedName& type)
- {
- mStream << mMetaData.mStringTable->strToHandle(type.mNamespace);
- mStream << mMetaData.mStringTable->strToHandle(type.mName);
- }
- void streamify(String& type)
- {
- mStream << mMetaData.mStringTable->strToHandle(type);
- }
- void streamify(int32_t& type)
- {
- mStream << type;
- }
- void streamify(uint32_t& type)
- {
- mStream << type;
- }
- void streamify(uint8_t type)
- {
- mStream << type;
- }
- void streamify(bool type)
- {
- streamify( uint8_t(type));
- }
- void streamify(PropertyType::Enum type)
- {
- uint32_t val = static_cast<uint32_t>(type);
- mStream << val;
- }
- void streamify(NamedValue& type)
- {
- streamify(type.mValue);
- streamify(type.mName);
- }
- void streamifyLinks(PropDescImpl* prop)
- {
- streamify(prop->mPropertyId);
- }
- void streamify(PropertyDescription& prop)
- {
- streamify(prop.mPropertyId);
- }
- void streamify(PropertyMessageEntryImpl& prop)
- {
- prop.serialize(*this);
- }
- void streamify(PtrOffset& off)
- {
- uint32_t type = off.mOffsetType;
- mStream << type;
- mStream << off.mOffset;
- }
- template <typename TDataType>
- void streamify(TDataType* type)
- {
- int32_t existMarker = type ? 1 : 0;
- mStream << existMarker;
- if(type)
- type->serialize(*this);
- }
- template <typename TArrayType>
- void streamify(const Array<TArrayType>& type)
- {
- mStream << static_cast<uint32_t>(type.size());
- PVD_FOREACH(idx, type.size()) streamify(const_cast<TArrayType&>(type[idx]));
- }
- template <typename TArrayType>
- void streamifyLinks(const Array<TArrayType>& type)
- {
- mStream << static_cast<uint32_t>(type.size());
- PVD_FOREACH(idx, type.size()) streamifyLinks(const_cast<TArrayType&>(type[idx]));
- }
-
- private:
- MetaDataWriter& operator=(const MetaDataWriter&);
- };
-
- template <typename TStreamType>
- struct MetaDataReader
- {
- PvdObjectModelMetaDataImpl& mMetaData;
- TStreamType& mStream;
- MetaDataReader(PvdObjectModelMetaDataImpl& meta, TStreamType& stream) : mMetaData(meta), mStream(stream)
- {
- }
-
- void streamify(NamespacedName& type)
- {
- streamify(type.mNamespace);
- streamify(type.mName);
- }
-
- void streamify(String& type)
- {
- uint32_t handle;
- mStream >> handle;
- type = mMetaData.mStringTable->handleToStr(handle);
- }
- void streamify(int32_t& type)
- {
- mStream >> type;
- }
- void streamify(uint32_t& type)
- {
- mStream >> type;
- }
- void streamify(bool& type)
- {
- uint8_t data;
- mStream >> data;
- type = data ? true : false;
- }
-
- void streamify(PropertyType::Enum& type)
- {
- uint32_t val;
- mStream >> val;
- type = static_cast<PropertyType::Enum>(val);
- }
- void streamify(NamedValue& type)
- {
- streamify(type.mValue);
- streamify(type.mName);
- }
- void streamify(PropertyMessageEntryImpl& type)
- {
- type.serialize(*this);
- }
- void streamify(PtrOffset& off)
- {
- uint32_t type;
- mStream >> type;
- mStream >> off.mOffset;
- off.mOffsetType = static_cast<PtrOffsetType::Enum>(type);
- }
- void streamifyLinks(PropDescImpl*& prop)
- {
- int32_t propId;
- streamify(propId);
- prop = mMetaData.getPropertyImpl(propId);
- }
- void streamify(PropertyDescription& prop)
- {
- streamify(prop.mPropertyId);
- prop = mMetaData.getProperty(prop.mPropertyId);
- }
- template <typename TDataType>
- void streamify(TDataType*& type)
- {
- uint32_t existMarker;
- mStream >> existMarker;
- if(existMarker)
- {
- TDataType* newType = PVD_NEW(TDataType)();
- newType->serialize(*this);
- type = newType;
- }
- else
- type = NULL;
- }
- template <typename TArrayType>
- void streamify(Array<TArrayType>& type)
- {
- uint32_t typeSize;
- mStream >> typeSize;
- type.resize(typeSize);
- PVD_FOREACH(idx, type.size()) streamify(type[idx]);
- }
- template <typename TArrayType>
- void streamifyLinks(Array<TArrayType>& type)
- {
- uint32_t typeSize;
- mStream >> typeSize;
- type.resize(typeSize);
- PVD_FOREACH(idx, type.size()) streamifyLinks(type[idx]);
- }
-
- private:
- MetaDataReader& operator=(const MetaDataReader&);
- };
-
- virtual void write(PvdOutputStream& stream) const
- {
- stream << getCurrentPvdObjectModelVersion();
- stream << mNextClassId;
- mStringTable->write(stream);
- MetaDataWriter writer(*this, stream);
- writer.streamify(mProperties);
- writer.streamify(mClasses);
- writer.streamify(mPropertyMessages);
- }
-
- template <typename TReaderType>
- void read(TReaderType& stream)
- {
- uint32_t version;
- stream >> version;
- stream >> mNextClassId;
- mStringTable->read(stream);
- MetaDataReader<TReaderType> reader(*this, stream);
- reader.streamify(mProperties);
- reader.streamify(mClasses);
- reader.streamify(mPropertyMessages);
-
- mNameToClasses.clear();
- mNameToProperties.clear();
- mPropertyMessageMap.clear();
- PVD_FOREACH(i, mClasses.size())
- {
- ClassDescImpl* cls(mClasses[i]);
- if(cls == NULL)
- continue;
- mNameToClasses.insert(cls->mName, mClasses[i]);
- uint32_t propCount = getNbProperties(cls->mClassId);
- PropertyDescription descs[16];
- uint32_t offset = 0;
- for(uint32_t idx = 0; idx < propCount; idx = offset)
- {
- uint32_t numProps = getProperties(cls->mClassId, descs, 16, offset);
- offset += numProps;
- for(uint32_t propIdx = 0; propIdx < numProps; ++propIdx)
- {
- PropDescImpl* prop = getPropertyImpl(descs[propIdx].mPropertyId);
- if(prop)
- mNameToProperties.insert(ClassPropertyName(cls->mName, prop->mName), prop);
- }
- }
- }
- PVD_FOREACH(idx, mPropertyMessages.size())
- mPropertyMessageMap.insert(mPropertyMessages[idx]->mMessageName, mPropertyMessages[idx]);
- }
-
- virtual PvdObjectModelMetaData& clone() const
- {
- MemPvdOutputStream tempStream("PvdObjectModelMetaData::clone");
- write(tempStream);
- MemPvdInputStream inStream(tempStream);
- return create(inStream);
- }
-
- virtual StringTable& getStringTable() const
- {
- return *mStringTable;
- }
- virtual void addRef()
- {
- ++mRefCount;
- }
- virtual void release()
- {
- if(mRefCount)
- --mRefCount;
- if(!mRefCount)
- PVD_DELETE(this);
- }
-};
-}
-
-uint32_t PvdObjectModelMetaData::getCurrentPvdObjectModelVersion()
-{
- return 1;
-}
-
-PvdObjectModelMetaData& PvdObjectModelMetaData::create()
-{
- PvdObjectModelMetaDataImpl& retval(*PVD_NEW(PvdObjectModelMetaDataImpl)());
- retval.initialize();
- return retval;
-}
-
-PvdObjectModelMetaData& PvdObjectModelMetaData::create(PvdInputStream& stream)
-{
- PvdObjectModelMetaDataImpl& retval(*PVD_NEW(PvdObjectModelMetaDataImpl)());
- retval.read(stream);
- return retval;
-}
-
-StringTable& StringTable::create()
-{
- return *PVD_NEW(StringTableImpl)();
-}
diff --git a/PxShared/src/pvd/src/PxPvdObjectModelMetaData.h b/PxShared/src/pvd/src/PxPvdObjectModelMetaData.h
deleted file mode 100644
index 7357708..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectModelMetaData.h
+++ /dev/null
@@ -1,495 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDOBJECTMODELMETADATA_H
-#define PXPVDSDK_PXPVDOBJECTMODELMETADATA_H
-
-#include "foundation/PxAssert.h"
-#include "PxPvdObjectModelBaseTypes.h"
-#include "PxPvdBits.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-class PvdInputStream;
-class PvdOutputStream;
-
-struct PropertyDescription
-{
- NamespacedName mOwnerClassName;
- int32_t mOwnerClassId;
- String mName;
- String mSemantic;
- // The datatype this property corresponds to.
- int32_t mDatatype;
- // The name of the datatype
- NamespacedName mDatatypeName;
- // Scalar or array.
- PropertyType::Enum mPropertyType;
- // No other property under any class has this id, it is DB-unique.
- int32_t mPropertyId;
- // Offset in bytes into the object's data section where this property starts.
- uint32_t m32BitOffset;
- // Offset in bytes into the object's data section where this property starts.
- uint32_t m64BitOffset;
-
- PropertyDescription(const NamespacedName& clsName, int32_t classId, String name, String semantic, int32_t datatype,
- const NamespacedName& datatypeName, PropertyType::Enum propType, int32_t propId,
- uint32_t offset32, uint32_t offset64)
- : mOwnerClassName(clsName)
- , mOwnerClassId(classId)
- , mName(name)
- , mSemantic(semantic)
- , mDatatype(datatype)
- , mDatatypeName(datatypeName)
- , mPropertyType(propType)
- , mPropertyId(propId)
- , m32BitOffset(offset32)
- , m64BitOffset(offset64)
- {
- }
- PropertyDescription()
- : mOwnerClassId(-1)
- , mName("")
- , mSemantic("")
- , mDatatype(-1)
- , mPropertyType(PropertyType::Unknown)
- , mPropertyId(-1)
- , m32BitOffset(0)
- , m64BitOffset(0)
-
- {
- }
-
- virtual ~PropertyDescription()
- {
- }
-};
-
-struct PtrOffsetType
-{
- enum Enum
- {
- UnknownOffset,
- VoidPtrOffset,
- StringOffset
- };
-};
-
-struct PtrOffset
-{
- PtrOffsetType::Enum mOffsetType;
- uint32_t mOffset;
- PtrOffset(PtrOffsetType::Enum type, uint32_t offset) : mOffsetType(type), mOffset(offset)
- {
- }
- PtrOffset() : mOffsetType(PtrOffsetType::UnknownOffset), mOffset(0)
- {
- }
-};
-
-inline uint32_t align(uint32_t offset, uint32_t alignment)
-{
- uint32_t startOffset = offset;
- uint32_t alignmentMask = ~(alignment - 1);
- offset = (offset + alignment - 1) & alignmentMask;
- PX_ASSERT(offset >= startOffset && (offset % alignment) == 0);
- (void)startOffset;
- return offset;
-}
-
-struct ClassDescriptionSizeInfo
-{
- // The size of the data section of this object, padded to alignment.
- uint32_t mByteSize;
- // The last data member goes to here.
- uint32_t mDataByteSize;
- // Alignment in bytes of the data section of this object.
- uint32_t mAlignment;
- // the offsets of string handles in the binary value of this class
- DataRef<PtrOffset> mPtrOffsets;
- ClassDescriptionSizeInfo() : mByteSize(0), mDataByteSize(0), mAlignment(0)
- {
- }
-};
-
-struct ClassDescription
-{
- NamespacedName mName;
- // No other class has this id, it is DB-unique
- int32_t mClassId;
- // Only single derivation supported.
- int32_t mBaseClass;
- // If this class has properties that are of uniform type, then we note that.
- // This means that when deserialization an array of these objects we can just use
- // single function to endian convert the entire mess at once.
- int32_t mPackedUniformWidth;
- // If this class is composed uniformly of members of a given type
- // Or all of its properties are composed uniformly of members of
- // a give ntype, then this class's packed type is that type.
- // PxTransform's packed type would be float.
- int32_t mPackedClassType;
- // 0: 32Bit 1: 64Bit
- ClassDescriptionSizeInfo mSizeInfo[2];
- // No further property additions allowed.
- bool mLocked;
- // True when this datatype has an array on it that needs to be
- // separately deleted.
- bool mRequiresDestruction;
-
- ClassDescription(NamespacedName name, int32_t id)
- : mName(name)
- , mClassId(id)
- , mBaseClass(-1)
- , mPackedUniformWidth(-1)
- , mPackedClassType(-1)
- , mLocked(false)
- , mRequiresDestruction(false)
- {
- }
- ClassDescription()
- : mClassId(-1), mBaseClass(-1), mPackedUniformWidth(-1), mPackedClassType(-1), mLocked(false), mRequiresDestruction(false)
- {
- }
- virtual ~ClassDescription()
- {
- }
-
- ClassDescriptionSizeInfo& get32BitSizeInfo()
- {
- return mSizeInfo[0];
- }
- ClassDescriptionSizeInfo& get64BitSizeInfo()
- {
- return mSizeInfo[1];
- }
- uint32_t& get32BitSize()
- {
- return get32BitSizeInfo().mByteSize;
- }
- uint32_t& get64BitSize()
- {
- return get64BitSizeInfo().mByteSize;
- }
-
- uint32_t get32BitSize() const
- {
- return mSizeInfo[0].mByteSize;
- }
- const ClassDescriptionSizeInfo& getNativeSizeInfo() const
- {
- return mSizeInfo[(sizeof(void*) >> 2) - 1];
- }
- uint32_t getNativeSize() const
- {
- return getNativeSizeInfo().mByteSize;
- }
-};
-
-struct MarshalQueryResult
-{
- int32_t srcType;
- int32_t dstType;
- // If canMarshal != needsMarshalling we have a problem.
- bool canMarshal;
- bool needsMarshalling;
- // Non null if marshalling is possible.
- TBlockMarshaller marshaller;
- MarshalQueryResult(int32_t _srcType = -1, int32_t _dstType = -1, bool _canMarshal = false, bool _needs = false,
- TBlockMarshaller _m = NULL)
- : srcType(_srcType), dstType(_dstType), canMarshal(_canMarshal), needsMarshalling(_needs), marshaller(_m)
- {
- }
-};
-
-struct PropertyMessageEntry
-{
- PropertyDescription mProperty;
- NamespacedName mDatatypeName;
- // datatype of the data in the message.
- int32_t mDatatypeId;
- // where in the message this property starts.
- uint32_t mMessageOffset;
- // size of this entry object
- uint32_t mByteSize;
-
- // If the chain of properties doesn't have any array properties this indicates the
- uint32_t mDestByteSize;
-
- PropertyMessageEntry(PropertyDescription propName, NamespacedName dtypeName, int32_t dtype, uint32_t messageOff,
- uint32_t byteSize, uint32_t destByteSize)
- : mProperty(propName)
- , mDatatypeName(dtypeName)
- , mDatatypeId(dtype)
- , mMessageOffset(messageOff)
- , mByteSize(byteSize)
- , mDestByteSize(destByteSize)
- {
- }
- PropertyMessageEntry() : mDatatypeId(-1), mMessageOffset(0), mByteSize(0), mDestByteSize(0)
- {
- }
-};
-
-// Create a struct that defines a subset of the properties on an object.
-struct PropertyMessageDescription
-{
- NamespacedName mClassName;
- // No other class has this id, it is DB-unique
- int32_t mClassId;
- NamespacedName mMessageName;
- int32_t mMessageId;
- DataRef<PropertyMessageEntry> mProperties;
- uint32_t mMessageByteSize;
- // Offsets into the property message where const char* items are.
- DataRef<uint32_t> mStringOffsets;
- PropertyMessageDescription(const NamespacedName& nm, int32_t clsId, const NamespacedName& msgName, int32_t msgId,
- uint32_t msgSize)
- : mClassName(nm), mClassId(clsId), mMessageName(msgName), mMessageId(msgId), mMessageByteSize(msgSize)
- {
- }
- PropertyMessageDescription() : mClassId(-1), mMessageId(-1), mMessageByteSize(0)
- {
- }
- virtual ~PropertyMessageDescription()
- {
- }
-};
-
-class StringTable
-{
- protected:
- virtual ~StringTable()
- {
- }
-
- public:
- virtual uint32_t getNbStrs() = 0;
- virtual uint32_t getStrs(const char** outStrs, uint32_t bufLen, uint32_t startIdx = 0) = 0;
- virtual const char* registerStr(const char* str, bool& outAdded) = 0;
- const char* registerStr(const char* str)
- {
- bool ignored;
- return registerStr(str, ignored);
- }
- virtual StringHandle strToHandle(const char* str) = 0;
- virtual const char* handleToStr(uint32_t hdl) = 0;
- virtual void release() = 0;
-
- static StringTable& create();
-};
-
-struct None
-{
-};
-
-template <typename T>
-class Option
-{
- T mValue;
- bool mHasValue;
-
- public:
- Option(const T& val) : mValue(val), mHasValue(true)
- {
- }
- Option(None nothing = None()) : mHasValue(false)
- {
- (void)nothing;
- }
- Option(const Option& other) : mValue(other.mValue), mHasValue(other.mHasValue)
- {
- }
- Option& operator=(const Option& other)
- {
- mValue = other.mValue;
- mHasValue = other.mHasValue;
- return *this;
- }
- bool hasValue() const
- {
- return mHasValue;
- }
- const T& getValue() const
- {
- PX_ASSERT(hasValue());
- return mValue;
- }
- T& getValue()
- {
- PX_ASSERT(hasValue());
- return mValue;
- }
- operator const T&() const
- {
- return getValue();
- }
- operator T&()
- {
- return getValue();
- }
- T* operator->()
- {
- return &getValue();
- }
- const T* operator->() const
- {
- return &getValue();
- }
-};
-
-/**
- * Create new classes and add properties to some existing ones.
- * The default classes are created already, the simple types
- * along with the basic math types.
- * (uint8_t, int8_t, etc )
- * (PxVec3, PxQuat, PxTransform, PxMat33, PxMat34, PxMat44)
- */
-class PvdObjectModelMetaData
-{
- protected:
- virtual ~PvdObjectModelMetaData()
- {
- }
-
- public:
- virtual ClassDescription getOrCreateClass(const NamespacedName& nm) = 0;
- // get or create parent, lock parent. deriveFrom getOrCreatechild.
- virtual bool deriveClass(const NamespacedName& parent, const NamespacedName& child) = 0;
- virtual Option<ClassDescription> findClass(const NamespacedName& nm) const = 0;
- template <typename TDataType>
- Option<ClassDescription> findClass()
- {
- return findClass(getPvdNamespacedNameForType<TDataType>());
- }
- virtual Option<ClassDescription> getClass(int32_t classId) const = 0;
- virtual ClassDescription* getClassPtr(int32_t classId) const = 0;
-
- virtual Option<ClassDescription> getParentClass(int32_t classId) const = 0;
- bool isDerivedFrom(int32_t classId, int32_t parentClass) const
- {
- if(classId == parentClass)
- return true;
- ClassDescription* p = getClassPtr(getClassPtr(classId)->mBaseClass);
- while(p != NULL)
- {
- if(p->mClassId == parentClass)
- return true;
- p = getClassPtr(p->mBaseClass);
- }
- return false;
- }
-
- virtual void lockClass(int32_t classId) = 0;
-
- virtual uint32_t getNbClasses() const = 0;
- virtual uint32_t getClasses(ClassDescription* outClasses, uint32_t requestCount, uint32_t startIndex = 0) const = 0;
-
- // Create a nested property.
- // This way you can have obj.p.x without explicity defining the class p.
- virtual Option<PropertyDescription> createProperty(int32_t classId, String name, String semantic, int32_t datatype,
- PropertyType::Enum propertyType = PropertyType::Scalar) = 0;
- Option<PropertyDescription> createProperty(NamespacedName clsId, String name, String semantic, NamespacedName dtype,
- PropertyType::Enum propertyType = PropertyType::Scalar)
- {
- return createProperty(findClass(clsId)->mClassId, name, semantic, findClass(dtype)->mClassId, propertyType);
- }
- Option<PropertyDescription> createProperty(NamespacedName clsId, String name, NamespacedName dtype,
- PropertyType::Enum propertyType = PropertyType::Scalar)
- {
- return createProperty(findClass(clsId)->mClassId, name, "", findClass(dtype)->mClassId, propertyType);
- }
- Option<PropertyDescription> createProperty(int32_t clsId, String name, int32_t dtype,
- PropertyType::Enum propertyType = PropertyType::Scalar)
- {
- return createProperty(clsId, name, "", dtype, propertyType);
- }
- template <typename TDataType>
- Option<PropertyDescription> createProperty(int32_t clsId, String name, String semantic = "",
- PropertyType::Enum propertyType = PropertyType::Scalar)
- {
- return createProperty(clsId, name, semantic, getPvdNamespacedNameForType<TDataType>(), propertyType);
- }
- virtual Option<PropertyDescription> findProperty(const NamespacedName& cls, String prop) const = 0;
- virtual Option<PropertyDescription> findProperty(int32_t clsId, String prop) const = 0;
- virtual Option<PropertyDescription> getProperty(int32_t propId) const = 0;
- virtual void setNamedPropertyValues(DataRef<NamedValue> values, int32_t propId) = 0;
- // for enumerations and flags.
- virtual DataRef<NamedValue> getNamedPropertyValues(int32_t propId) const = 0;
-
- virtual uint32_t getNbProperties(int32_t classId) const = 0;
- virtual uint32_t getProperties(int32_t classId, PropertyDescription* outBuffer, uint32_t bufCount,
- uint32_t startIdx = 0) const = 0;
-
- // Check that a property path, starting at the given class id and first property is value. Return the resolved
- // properties.
- // outbuffer.size *must* equal the propPath.size().
- Option<PropertyDescription> resolvePropertyPath(int32_t clsId, const int32_t propId) const
- {
- Option<PropertyDescription> prop(getProperty(propId));
- if(prop.hasValue() == false)
- return prop;
- if(isDerivedFrom(clsId, prop.getValue().mOwnerClassId) == false)
- return None();
- return prop;
- }
- // Does one cls id differ marshalling to another and if so return the functions to do it.
- virtual MarshalQueryResult checkMarshalling(int32_t srcClsId, int32_t dstClsId) const = 0;
-
- // messages and classes are stored in separate maps, so a property message can have the same name as a class.
- virtual Option<PropertyMessageDescription> createPropertyMessage(const NamespacedName& cls,
- const NamespacedName& msgName,
- DataRef<PropertyMessageArg> entries,
- uint32_t messageSize) = 0;
- virtual Option<PropertyMessageDescription> findPropertyMessage(const NamespacedName& msgName) const = 0;
- virtual Option<PropertyMessageDescription> getPropertyMessage(int32_t msgId) const = 0;
-
- virtual uint32_t getNbPropertyMessages() const = 0;
- virtual uint32_t getPropertyMessages(PropertyMessageDescription* msgBuf, uint32_t bufLen,
- uint32_t startIdx = 0) const = 0;
-
- virtual StringTable& getStringTable() const = 0;
-
- virtual void write(PvdOutputStream& stream) const = 0;
- void save(PvdOutputStream& stream) const
- {
- write(stream);
- }
-
- virtual PvdObjectModelMetaData& clone() const = 0;
-
- virtual void addRef() = 0;
- virtual void release() = 0;
-
- static uint32_t getCurrentPvdObjectModelVersion();
- static PvdObjectModelMetaData& create();
- static PvdObjectModelMetaData& create(PvdInputStream& stream);
-};
-}
-}
-#endif // PXPVDSDK_PXPVDOBJECTMODELMETADATA_H
diff --git a/PxShared/src/pvd/src/PxPvdObjectRegistrar.cpp b/PxShared/src/pvd/src/PxPvdObjectRegistrar.cpp
deleted file mode 100644
index 67667f9..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectRegistrar.cpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "PxPvdObjectRegistrar.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-bool ObjectRegistrar::addItem(const void* inItem)
-{
- physx::shdfnd::Mutex::ScopedLock lock(mRefCountMapLock);
-
- if(mRefCountMap.find(inItem))
- {
- uint32_t& counter = mRefCountMap[inItem];
- counter++;
- return false;
- }
- else
- {
- mRefCountMap.insert(inItem, 1);
- return true;
- }
-}
-
-bool ObjectRegistrar::decItem(const void* inItem)
-{
- physx::shdfnd::Mutex::ScopedLock lock(mRefCountMapLock);
- const physx::shdfnd::HashMap<const void*, uint32_t>::Entry* entry = mRefCountMap.find(inItem);
- if(entry)
- {
- uint32_t& retval(const_cast<uint32_t&>(entry->second));
- if(retval)
- --retval;
- uint32_t theValue = retval;
- if(theValue == 0)
- {
- mRefCountMap.erase(inItem);
- return true;
- }
- }
- return false;
-}
-
-void ObjectRegistrar::clear()
-{
- physx::shdfnd::Mutex::ScopedLock lock(mRefCountMapLock);
- mRefCountMap.clear();
-}
-
-} // pvdsdk
-} // physx
diff --git a/PxShared/src/pvd/src/PxPvdObjectRegistrar.h b/PxShared/src/pvd/src/PxPvdObjectRegistrar.h
deleted file mode 100644
index dbd9ebc..0000000
--- a/PxShared/src/pvd/src/PxPvdObjectRegistrar.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDOBJECTREGISTRAR_H
-#define PXPVDSDK_PXPVDOBJECTREGISTRAR_H
-
-/** \addtogroup pvd
-@{
-*/
-
-#include "PsHashMap.h"
-#include "PsMutex.h"
-
-#if !PX_DOXYGEN
-namespace physx
-{
-namespace pvdsdk
-{
-#endif
-class ObjectRegistrar
-{
- PX_NOCOPY(ObjectRegistrar)
- public:
- ObjectRegistrar()
- {
- }
- virtual ~ObjectRegistrar()
- {
- }
-
- bool addItem(const void* inItem);
- bool decItem(const void* inItem);
- void clear();
-
- private:
- physx::shdfnd::HashMap<const void*, uint32_t> mRefCountMap;
- physx::shdfnd::Mutex mRefCountMapLock;
-};
-#if !PX_DOXYGEN
-} // pvdsdk
-} // physx
-#endif
-
-/** @} */
-#endif // PXPVDSDK_PXPVDOBJECTREGISTRAR_H
diff --git a/PxShared/src/pvd/src/PxPvdProfileZoneClient.cpp b/PxShared/src/pvd/src/PxPvdProfileZoneClient.cpp
deleted file mode 100644
index 8d8582c..0000000
--- a/PxShared/src/pvd/src/PxPvdProfileZoneClient.cpp
+++ /dev/null
@@ -1,173 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#include "pvd/PxPvdTransport.h"
-
-#include "PxPvdImpl.h"
-#include "PxPvdProfileZoneClient.h"
-#include "PxProfileZone.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-struct ProfileZoneClient : public profile::PxProfileZoneClient, public shdfnd::UserAllocated
-{
- profile::PxProfileZone& mZone;
- PvdDataStream& mStream;
-
- ProfileZoneClient(profile::PxProfileZone& zone, PvdDataStream& stream) : mZone(zone), mStream(stream)
- {
- }
-
- ~ProfileZoneClient()
- {
- mZone.removeClient(*this);
- }
-
- virtual void createInstance()
- {
- mStream.addProfileZone(&mZone, mZone.getName());
- mStream.createInstance(&mZone);
- mZone.addClient(*this);
- profile::PxProfileNames names(mZone.getProfileNames());
- PVD_FOREACH(idx, names.eventCount)
- {
- handleEventAdded(names.events[idx]);
- }
- }
-
- virtual void handleEventAdded(const profile::PxProfileEventName& inName)
- {
- mStream.addProfileZoneEvent(&mZone, inName.name, inName.eventId.eventId, inName.eventId.compileTimeEnabled);
- }
-
- virtual void handleBufferFlush(const uint8_t* inData, uint32_t inLength)
- {
- mStream.setPropertyValue(&mZone, "events", inData, inLength);
- }
-
- virtual void handleClientRemoved()
- {
- mStream.destroyInstance(&mZone);
- }
-
- private:
- ProfileZoneClient& operator=(const ProfileZoneClient&);
-};
-}
-}
-
-using namespace physx;
-using namespace pvdsdk;
-
-PvdProfileZoneClient::PvdProfileZoneClient(PvdImpl& pvd) : mSDKPvd(pvd), mPvdDataStream(NULL), mIsConnected(false)
-{
-}
-
-PvdProfileZoneClient::~PvdProfileZoneClient()
-{
- mSDKPvd.removeClient(this);
- // all zones should removed
- PX_ASSERT(mProfileZoneClients.size() == 0);
-}
-
-PvdDataStream* PvdProfileZoneClient::getDataStream()
-{
- return mPvdDataStream;
-}
-
-PvdUserRenderer* PvdProfileZoneClient::getUserRender()
-{
- PX_ASSERT(0);
- return NULL;
-}
-
-void PvdProfileZoneClient::setObjectRegistrar(ObjectRegistrar*)
-{
-}
-
-bool PvdProfileZoneClient::isConnected() const
-{
- return mIsConnected;
-}
-
-void PvdProfileZoneClient::onPvdConnected()
-{
- if(mIsConnected)
- return;
- mIsConnected = true;
-
- mPvdDataStream = PvdDataStream::create(&mSDKPvd);
-
-}
-
-void PvdProfileZoneClient::onPvdDisconnected()
-{
- if(!mIsConnected)
- return;
-
- mIsConnected = false;
- flush();
-
- mPvdDataStream->release();
- mPvdDataStream = NULL;
-}
-
-void PvdProfileZoneClient::flush()
-{
- PVD_FOREACH(idx, mProfileZoneClients.size())
- mProfileZoneClients[idx]->mZone.flushProfileEvents();
-}
-
-void PvdProfileZoneClient::onZoneAdded(profile::PxProfileZone& zone)
-{
- PX_ASSERT(mIsConnected);
- ProfileZoneClient* client = PVD_NEW(ProfileZoneClient)(zone, *mPvdDataStream);
- mMutex.lock();
- client->createInstance();
- mProfileZoneClients.pushBack(client);
- mMutex.unlock();
-}
-
-void PvdProfileZoneClient::onZoneRemoved(profile::PxProfileZone& zone)
-{
- for(uint32_t i = 0; i < mProfileZoneClients.size(); i++)
- {
- if(&zone == &mProfileZoneClients[i]->mZone)
- {
- mMutex.lock();
- ProfileZoneClient* client = mProfileZoneClients[i];
- mProfileZoneClients.replaceWithLast(i);
- PVD_DELETE(client);
- mMutex.unlock();
- return;
- }
- }
-}
diff --git a/PxShared/src/pvd/src/PxPvdProfileZoneClient.h b/PxShared/src/pvd/src/PxPvdProfileZoneClient.h
deleted file mode 100644
index 4484997..0000000
--- a/PxShared/src/pvd/src/PxPvdProfileZoneClient.h
+++ /dev/null
@@ -1,77 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-#ifndef PXPVDSDK_PXPVDPROFILEZONECLIENT_H
-#define PXPVDSDK_PXPVDPROFILEZONECLIENT_H
-#include "PxPvdClient.h"
-#include "PsHashMap.h"
-#include "PsMutex.h"
-#include "PxProfileZoneManager.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-class PvdImpl;
-class PvdDataStream;
-
-struct ProfileZoneClient;
-
-class PvdProfileZoneClient : public PvdClient, public profile::PxProfileZoneHandler, public shdfnd::UserAllocated
-{
- PX_NOCOPY(PvdProfileZoneClient)
- public:
- PvdProfileZoneClient(PvdImpl& pvd);
- virtual ~PvdProfileZoneClient();
-
- bool isConnected() const;
- void onPvdConnected();
- void onPvdDisconnected();
- void flush();
-
- PvdDataStream* getDataStream();
- PvdUserRenderer* getUserRender();
- void setObjectRegistrar(ObjectRegistrar*);
-
- // PxProfileZoneHandler
- void onZoneAdded(profile::PxProfileZone& inSDK);
- void onZoneRemoved(profile::PxProfileZone& inSDK);
-
- private:
- shdfnd::Mutex mMutex; // zoneAdded can called from different threads
- PvdImpl& mSDKPvd;
- PvdDataStream* mPvdDataStream;
- physx::shdfnd::Array<ProfileZoneClient*> mProfileZoneClients;
- bool mIsConnected;
-};
-
-} // namespace pvdsdk
-} // namespace physx
-
-#endif // PXPVDSDK_PXPVDPROFILEZONECLIENT_H
diff --git a/PxShared/src/pvd/src/PxPvdUserRenderImpl.h b/PxShared/src/pvd/src/PxPvdUserRenderImpl.h
deleted file mode 100644
index 04574e9..0000000
--- a/PxShared/src/pvd/src/PxPvdUserRenderImpl.h
+++ /dev/null
@@ -1,411 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#ifndef PXPVDSDK_PXPVDUSERRENDERIMPL_H
-#define PXPVDSDK_PXPVDUSERRENDERIMPL_H
-
-#include "PxPvdUserRenderer.h"
-
-namespace physx
-{
-namespace pvdsdk
-{
-
-struct PvdUserRenderTypes
-{
- enum Enum
- {
- Unknown = 0,
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE(type) type,
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA(type) type
-#include "PxPvdUserRenderTypes.h"
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE
- };
-};
-
-class RenderSerializer
-{
- protected:
- virtual ~RenderSerializer()
- {
- }
-
- public:
- virtual void streamify(uint64_t& val) = 0;
- virtual void streamify(float& val) = 0;
- virtual void streamify(uint32_t& val) = 0;
- virtual void streamify(uint8_t& val) = 0;
- virtual void streamify(DataRef<uint8_t>& val) = 0;
- virtual void streamify(DataRef<PvdDebugPoint>& val) = 0;
- virtual void streamify(DataRef<PvdDebugLine>& val) = 0;
- virtual void streamify(DataRef<PvdDebugTriangle>& val) = 0;
- virtual void streamify(PvdDebugText& val) = 0;
- virtual bool isGood() = 0;
- virtual uint32_t hasData() = 0;
-
- void streamify(PvdUserRenderTypes::Enum& val)
- {
- uint8_t data = static_cast<uint8_t>(val);
- streamify(data);
- val = static_cast<PvdUserRenderTypes::Enum>(data);
- }
- void streamify(PxVec3& val)
- {
- streamify(val[0]);
- streamify(val[1]);
- streamify(val[2]);
- }
-
- void streamify(PvdColor& val)
- {
- streamify(val.r);
- streamify(val.g);
- streamify(val.b);
- streamify(val.a);
- }
- void streamify(PxTransform& val)
- {
- streamify(val.q.x);
- streamify(val.q.y);
- streamify(val.q.z);
- streamify(val.q.w);
- streamify(val.p.x);
- streamify(val.p.y);
- streamify(val.p.z);
- }
- void streamify(bool& val)
- {
- uint8_t tempVal = uint8_t(val ? 1 : 0);
- streamify(tempVal);
- val = tempVal ? true : false;
- }
-};
-
-template <typename TBulkRenderType>
-struct BulkRenderEvent
-{
- DataRef<TBulkRenderType> mData;
- BulkRenderEvent(const TBulkRenderType* data, uint32_t count) : mData(data, count)
- {
- }
- BulkRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(mData);
- }
-};
-struct SetInstanceIdRenderEvent
-{
- uint64_t mInstanceId;
- SetInstanceIdRenderEvent(uint64_t iid) : mInstanceId(iid)
- {
- }
- SetInstanceIdRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(mInstanceId);
- }
-};
-struct PointsRenderEvent : BulkRenderEvent<PvdDebugPoint>
-{
- PointsRenderEvent(const PvdDebugPoint* data, uint32_t count) : BulkRenderEvent<PvdDebugPoint>(data, count)
- {
- }
- PointsRenderEvent()
- {
- }
-};
-struct LinesRenderEvent : BulkRenderEvent<PvdDebugLine>
-{
- LinesRenderEvent(const PvdDebugLine* data, uint32_t count) : BulkRenderEvent<PvdDebugLine>(data, count)
- {
- }
- LinesRenderEvent()
- {
- }
-};
-struct TrianglesRenderEvent : BulkRenderEvent<PvdDebugTriangle>
-{
- TrianglesRenderEvent(const PvdDebugTriangle* data, uint32_t count) : BulkRenderEvent<PvdDebugTriangle>(data, count)
- {
- }
- TrianglesRenderEvent()
- {
- }
-};
-struct DebugRenderEvent
-{
- DataRef<PvdDebugPoint> mPointData;
- DataRef<PvdDebugLine> mLineData;
- DataRef<PvdDebugTriangle> mTriangleData;
- DebugRenderEvent(const PvdDebugPoint* pointData, uint32_t pointCount, const PvdDebugLine* lineData,
- uint32_t lineCount, const PvdDebugTriangle* triangleData, uint32_t triangleCount)
- : mPointData(pointData, pointCount), mLineData(lineData, lineCount), mTriangleData(triangleData, triangleCount)
- {
- }
-
- DebugRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(mPointData);
- serializer.streamify(mLineData);
- serializer.streamify(mTriangleData);
- }
-};
-
-struct TextRenderEvent
-{
- PvdDebugText mText;
- TextRenderEvent(const PvdDebugText& text)
- {
- mText.color = text.color;
- mText.position = text.position;
- mText.size = text.size;
- mText.string = text.string;
- }
- TextRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(mText);
- }
-};
-
-struct JointFramesRenderEvent
-{
- PxTransform parent;
- PxTransform child;
- JointFramesRenderEvent(const PxTransform& p, const PxTransform& c) : parent(p), child(c)
- {
- }
- JointFramesRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(parent);
- serializer.streamify(child);
- }
-};
-struct LinearLimitRenderEvent
-{
- PxTransform t0;
- PxTransform t1;
- float value;
- bool active;
- LinearLimitRenderEvent(const PxTransform& _t0, const PxTransform& _t1, float _value, bool _active)
- : t0(_t0), t1(_t1), value(_value), active(_active)
- {
- }
- LinearLimitRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(t0);
- serializer.streamify(t1);
- serializer.streamify(value);
- serializer.streamify(active);
- }
-};
-struct AngularLimitRenderEvent
-{
- PxTransform t0;
- float lower;
- float upper;
- bool active;
- AngularLimitRenderEvent(const PxTransform& _t0, float _lower, float _upper, bool _active)
- : t0(_t0), lower(_lower), upper(_upper), active(_active)
- {
- }
- AngularLimitRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(t0);
- serializer.streamify(lower);
- serializer.streamify(upper);
- serializer.streamify(active);
- }
-};
-struct LimitConeRenderEvent
-{
- PxTransform t;
- float ySwing;
- float zSwing;
- bool active;
- LimitConeRenderEvent(const PxTransform& _t, float _ySwing, float _zSwing, bool _active)
- : t(_t), ySwing(_ySwing), zSwing(_zSwing), active(_active)
- {
- }
- LimitConeRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(t);
- serializer.streamify(ySwing);
- serializer.streamify(zSwing);
- serializer.streamify(active);
- }
-};
-struct DoubleConeRenderEvent
-{
- PxTransform t;
- float angle;
- bool active;
- DoubleConeRenderEvent(const PxTransform& _t, float _angle, bool _active) : t(_t), angle(_angle), active(_active)
- {
- }
- DoubleConeRenderEvent()
- {
- }
- void serialize(RenderSerializer& serializer)
- {
- serializer.streamify(t);
- serializer.streamify(angle);
- serializer.streamify(active);
- }
-};
-
-template <typename TDataType>
-struct RenderSerializerMap
-{
- void serialize(RenderSerializer& s, TDataType& d)
- {
- d.serialize(s);
- }
-};
-template <>
-struct RenderSerializerMap<uint8_t>
-{
- void serialize(RenderSerializer& s, uint8_t& d)
- {
- s.streamify(d);
- }
-};
-
-template <>
-struct RenderSerializerMap<PvdDebugPoint>
-{
- void serialize(RenderSerializer& s, PvdDebugPoint& d)
- {
- s.streamify(d.pos);
- s.streamify(d.color);
- }
-};
-
-template <>
-struct RenderSerializerMap<PvdDebugLine>
-{
- void serialize(RenderSerializer& s, PvdDebugLine& d)
- {
- s.streamify(d.pos0);
- s.streamify(d.color0);
- s.streamify(d.pos1);
- s.streamify(d.color1);
- }
-};
-
-template <>
-struct RenderSerializerMap<PvdDebugTriangle>
-{
- void serialize(RenderSerializer& s, PvdDebugTriangle& d)
- {
- s.streamify(d.pos0);
- s.streamify(d.color0);
- s.streamify(d.pos1);
- s.streamify(d.color1);
- s.streamify(d.pos2);
- s.streamify(d.color2);
- }
-};
-
-template <typename TDataType>
-struct PvdTypeToRenderType
-{
- bool compile_error;
-};
-
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE(type) \
- template <> \
- struct PvdTypeToRenderType<type##RenderEvent> \
- { \
- enum Enum \
- { \
- EnumVal = PvdUserRenderTypes::type \
- }; \
- };
-
-#include "PxPvdUserRenderTypes.h"
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE
-
-template <typename TDataType>
-PvdUserRenderTypes::Enum getPvdRenderTypeFromType()
-{
- return static_cast<PvdUserRenderTypes::Enum>(PvdTypeToRenderType<TDataType>::EnumVal);
-}
-
-class PvdUserRenderHandler
-{
- protected:
- virtual ~PvdUserRenderHandler()
- {
- }
-
- public:
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE(type) virtual void handleRenderEvent(const type##RenderEvent& evt) = 0;
-
-#include "PxPvdUserRenderTypes.h"
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE
-};
-
-class PvdUserRenderParser
-{
- protected:
- virtual ~PvdUserRenderParser()
- {
- }
-
- public:
- virtual void release() = 0;
- virtual void parseData(DataRef<const uint8_t> data, PvdUserRenderHandler& handler) = 0;
-
- static PvdUserRenderParser& create(bool swapBytes);
-};
-}
-}
-
-#endif // PXPVDSDK_PXPVDUSERRENDERIMPL_H
diff --git a/PxShared/src/pvd/src/PxPvdUserRenderTypes.h b/PxShared/src/pvd/src/PxPvdUserRenderTypes.h
deleted file mode 100644
index 6a47abb..0000000
--- a/PxShared/src/pvd/src/PxPvdUserRenderTypes.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#define THERE_IS_NO_INCLUDE_GUARD_HERE_FOR_A_REASON
-
-#ifndef DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA DECLARE_PVD_IMMEDIATE_RENDER_TYPE
-#endif
-
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(SetInstanceId)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(Points)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(Lines)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(Triangles)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(JointFrames)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(LinearLimit)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(AngularLimit)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(LimitCone)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(DoubleCone)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE(Text)
-DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA(Debug)
-
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE_NO_COMMA
-#undef THERE_IS_NO_INCLUDE_GUARD_HERE_FOR_A_REASON
diff --git a/PxShared/src/pvd/src/PxPvdUserRenderer.cpp b/PxShared/src/pvd/src/PxPvdUserRenderer.cpp
deleted file mode 100644
index 784d115..0000000
--- a/PxShared/src/pvd/src/PxPvdUserRenderer.cpp
+++ /dev/null
@@ -1,460 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-#include "PxPvdUserRenderer.h"
-#include "PxPvdUserRenderImpl.h"
-#include "PxPvdFoundation.h"
-#include "PxPvdInternalByteStreams.h"
-#include "PxPvdBits.h"
-#include "PxPvdCommStreamTypes.h"
-#include <stdarg.h>
-
-using namespace physx;
-using namespace physx::pvdsdk;
-
-namespace
-{
-
-template <typename TStreamType>
-struct RenderWriter : public RenderSerializer
-{
- TStreamType& mStream;
- RenderWriter(TStreamType& stream) : mStream(stream)
- {
- }
- template <typename TDataType>
- void write(const TDataType* val, uint32_t count)
- {
- uint32_t numBytes = count * sizeof(TDataType);
- mStream.write(reinterpret_cast<const uint8_t*>(val), numBytes);
- }
- template <typename TDataType>
- void write(const TDataType& val)
- {
- write(&val, 1);
- }
-
- template <typename TDataType>
- void writeRef(DataRef<TDataType>& val)
- {
- uint32_t amount = val.size();
- write(amount);
- if(amount)
- write(val.begin(), amount);
- }
-
- virtual void streamify(uint64_t& val)
- {
- write(val);
- }
- virtual void streamify(uint32_t& val)
- {
- write(val);
- }
- virtual void streamify(float& val)
- {
- write(val);
- }
- virtual void streamify(uint8_t& val)
- {
- write(val);
- }
- virtual void streamify(DataRef<uint8_t>& val)
- {
- writeRef(val);
- }
-
- virtual void streamify(PvdDebugText& val)
- {
- write(val.color);
- write(val.position);
- write(val.size);
-
- uint32_t amount = static_cast<uint32_t>(strlen(val.string)) + 1;
- write(amount);
- if(amount)
- write(val.string, amount);
- }
-
- virtual void streamify(DataRef<PvdDebugPoint>& val)
- {
- writeRef(val);
- }
- virtual void streamify(DataRef<PvdDebugLine>& val)
- {
- writeRef(val);
- }
- virtual void streamify(DataRef<PvdDebugTriangle>& val)
- {
- writeRef(val);
- }
-
- virtual uint32_t hasData()
- {
- return false;
- }
- virtual bool isGood()
- {
- return true;
- }
-
- private:
- RenderWriter& operator=(const RenderWriter&);
-};
-
-struct UserRenderer : public PvdUserRenderer
-{
- ForwardingMemoryBuffer mBuffer;
- uint32_t mBufferCapacity;
- RendererEventClient* mClient;
-
- UserRenderer(uint32_t bufferFullAmount)
- : mBuffer("UserRenderBuffer"), mBufferCapacity(bufferFullAmount), mClient(NULL)
- {
- }
- virtual ~UserRenderer()
- {
- }
- virtual void release()
- {
- PVD_DELETE(this);
- }
-
- template <typename TEventType>
- void handleEvent(TEventType evt)
- {
- RenderWriter<ForwardingMemoryBuffer> _writer(mBuffer);
- RenderSerializer& writer(_writer);
-
- PvdUserRenderTypes::Enum evtType(getPvdRenderTypeFromType<TEventType>());
- writer.streamify(evtType);
- evt.serialize(writer);
- if(mBuffer.size() >= mBufferCapacity)
- flushRenderEvents();
- }
- virtual void setInstanceId(const void* iid)
- {
- handleEvent(SetInstanceIdRenderEvent(PVD_POINTER_TO_U64(iid)));
- }
- // Draw these points associated with this instance
- virtual void drawPoints(const PvdDebugPoint* points, uint32_t count)
- {
- handleEvent(PointsRenderEvent(points, count));
- }
- // Draw these lines associated with this instance
- virtual void drawLines(const PvdDebugLine* lines, uint32_t count)
- {
- handleEvent(LinesRenderEvent(lines, count));
- }
- // Draw these triangles associated with this instance
- virtual void drawTriangles(const PvdDebugTriangle* triangles, uint32_t count)
- {
- handleEvent(TrianglesRenderEvent(triangles, count));
- }
-
- virtual void drawText(const PvdDebugText& text)
- {
- handleEvent(TextRenderEvent(text));
- }
-
- virtual void drawRenderbuffer(const PvdDebugPoint* pointData, uint32_t pointCount, const PvdDebugLine* lineData,
- uint32_t lineCount, const PvdDebugTriangle* triangleData, uint32_t triangleCount)
- {
- handleEvent(DebugRenderEvent(pointData, pointCount, lineData, lineCount, triangleData, triangleCount));
- }
-
- // Constraint visualization routines
- virtual void visualizeJointFrames(const PxTransform& parent, const PxTransform& child)
- {
- handleEvent(JointFramesRenderEvent(parent, child));
- }
- virtual void visualizeLinearLimit(const PxTransform& t0, const PxTransform& t1, float value, bool active)
- {
- handleEvent(LinearLimitRenderEvent(t0, t1, value, active));
- }
- virtual void visualizeAngularLimit(const PxTransform& t0, float lower, float upper, bool active)
- {
- handleEvent(AngularLimitRenderEvent(t0, lower, upper, active));
- }
- virtual void visualizeLimitCone(const PxTransform& t, float ySwing, float zSwing, bool active)
- {
- handleEvent(LimitConeRenderEvent(t, ySwing, zSwing, active));
- }
- virtual void visualizeDoubleCone(const PxTransform& t, float angle, bool active)
- {
- handleEvent(DoubleConeRenderEvent(t, angle, active));
- }
- // Clear the immedate buffer.
- virtual void flushRenderEvents()
- {
- if(mClient)
- mClient->handleBufferFlush(mBuffer.begin(), mBuffer.size());
- mBuffer.clear();
- }
-
- virtual void setClient(RendererEventClient* client)
- {
- mClient = client;
- }
-
- private:
- UserRenderer& operator=(const UserRenderer&);
-};
-
-template <bool swapBytes>
-struct RenderReader : public RenderSerializer
-{
- MemPvdInputStream mStream;
- ForwardingMemoryBuffer& mBuffer;
-
- RenderReader(ForwardingMemoryBuffer& buf) : mBuffer(buf)
- {
- }
- void setData(DataRef<const uint8_t> data)
- {
- mStream.setup(const_cast<uint8_t*>(data.begin()), const_cast<uint8_t*>(data.end()));
- }
- virtual void streamify(uint32_t& val)
- {
- mStream >> val;
- }
- virtual void streamify(uint64_t& val)
- {
- mStream >> val;
- }
- virtual void streamify(float& val)
- {
- mStream >> val;
- }
- virtual void streamify(uint8_t& val)
- {
- mStream >> val;
- }
- template <typename TDataType>
- void readRef(DataRef<TDataType>& val)
- {
- uint32_t count;
- mStream >> count;
- uint32_t numBytes = sizeof(TDataType) * count;
-
- TDataType* dataPtr = reinterpret_cast<TDataType*>(mBuffer.growBuf(numBytes));
- mStream.read(reinterpret_cast<uint8_t*>(dataPtr), numBytes);
- val = DataRef<TDataType>(dataPtr, count);
- }
-
- virtual void streamify(DataRef<PvdDebugPoint>& val)
- {
- readRef(val);
- }
- virtual void streamify(DataRef<PvdDebugLine>& val)
- {
- readRef(val);
- }
- virtual void streamify(DataRef<PvdDebugTriangle>& val)
- {
- readRef(val);
- }
- virtual void streamify(PvdDebugText& val)
- {
- mStream >> val.color;
- mStream >> val.position;
- mStream >> val.size;
-
- uint32_t len = 0;
- mStream >> len;
-
- uint8_t* dataPtr = mBuffer.growBuf(len);
- mStream.read(dataPtr, len);
- val.string = reinterpret_cast<const char*>(dataPtr);
- }
- virtual void streamify(DataRef<uint8_t>& val)
- {
- readRef(val);
- }
- virtual bool isGood()
- {
- return mStream.isGood();
- }
- virtual uint32_t hasData()
- {
- return uint32_t(mStream.size() > 0);
- }
-
- private:
- RenderReader& operator=(const RenderReader&);
-};
-
-template <>
-struct RenderReader<true> : public RenderSerializer
-{
- MemPvdInputStream mStream;
- ForwardingMemoryBuffer& mBuffer;
- RenderReader(ForwardingMemoryBuffer& buf) : mBuffer(buf)
- {
- }
- void setData(DataRef<const uint8_t> data)
- {
- mStream.setup(const_cast<uint8_t*>(data.begin()), const_cast<uint8_t*>(data.end()));
- }
-
- template <typename TDataType>
- void read(TDataType& val)
- {
- mStream >> val;
- swapBytes(val);
- }
- virtual void streamify(uint64_t& val)
- {
- read(val);
- }
- virtual void streamify(uint32_t& val)
- {
- read(val);
- }
- virtual void streamify(float& val)
- {
- read(val);
- }
- virtual void streamify(uint8_t& val)
- {
- read(val);
- }
- template <typename TDataType>
- void readRef(DataRef<TDataType>& val)
- {
- uint32_t count;
- mStream >> count;
- swapBytes(count);
- uint32_t numBytes = sizeof(TDataType) * count;
-
- TDataType* dataPtr = reinterpret_cast<TDataType*>(mBuffer.growBuf(numBytes));
- PVD_FOREACH(idx, count)
- RenderSerializerMap<TDataType>().serialize(*this, dataPtr[idx]);
- val = DataRef<TDataType>(dataPtr, count);
- }
-
- virtual void streamify(DataRef<PvdDebugPoint>& val)
- {
- readRef(val);
- }
- virtual void streamify(DataRef<PvdDebugLine>& val)
- {
- readRef(val);
- }
- virtual void streamify(DataRef<PvdDebugTriangle>& val)
- {
- readRef(val);
- }
- virtual void streamify(PvdDebugText& val)
- {
- mStream >> val.color;
- mStream >> val.position;
- mStream >> val.size;
-
- uint32_t len = 0;
- mStream >> len;
-
- uint8_t* dataPtr = mBuffer.growBuf(len);
- mStream.read(dataPtr, len);
- val.string = reinterpret_cast<const char*>(dataPtr);
- }
- virtual void streamify(DataRef<uint8_t>& val)
- {
- readRef(val);
- }
- virtual bool isGood()
- {
- return mStream.isGood();
- }
- virtual uint32_t hasData()
- {
- return uint32_t(mStream.size() > 0);
- }
-
- private:
- RenderReader& operator=(const RenderReader&);
-};
-
-template <bool swapBytes>
-struct Parser : public PvdUserRenderParser
-{
- ForwardingMemoryBuffer mBuffer;
- RenderReader<swapBytes> mReader;
- Parser() : mBuffer("PvdUserRenderParser::mBuffer"), mReader(mBuffer)
- {
- }
-
- void release()
- {
- PVD_DELETE(this);
- }
- void parseData(DataRef<const uint8_t> data, PvdUserRenderHandler& handler)
- {
- mReader.setData(data);
- RenderSerializer& serializer(mReader);
- while(serializer.isGood() && serializer.hasData())
- {
- mReader.mBuffer.clear();
- PvdUserRenderTypes::Enum evtType = PvdUserRenderTypes::Unknown;
- serializer.streamify(evtType);
- switch(evtType)
- {
-#define DECLARE_PVD_IMMEDIATE_RENDER_TYPE(type) \
- case PvdUserRenderTypes::type: \
- { \
- type##RenderEvent evt; \
- evt.serialize(serializer); \
- handler.handleRenderEvent(evt); \
- } \
- break;
-#include "PxPvdUserRenderTypes.h"
-#undef DECLARE_PVD_IMMEDIATE_RENDER_TYPE
- case PvdUserRenderTypes::Unknown:
- PX_ASSERT(false);
- return;
- }
- }
- PX_ASSERT(serializer.isGood());
- return;
- }
-
- PX_NOCOPY(Parser<swapBytes>)
-};
-}
-
-PvdUserRenderParser& PvdUserRenderParser::create(bool swapBytes)
-{
- if(swapBytes)
- return *PVD_NEW(Parser<true>);
- else
- return *PVD_NEW(Parser<false>);
-}
-
-PvdUserRenderer* PvdUserRenderer::create(uint32_t bufferSize)
-{
- return PVD_NEW(UserRenderer)(bufferSize);
-}
-
diff --git a/PxShared/src/pvd/src/windows/PxWindowsPvdDelayLoadHook.cpp b/PxShared/src/pvd/src/windows/PxWindowsPvdDelayLoadHook.cpp
deleted file mode 100644
index a8c6df0..0000000
--- a/PxShared/src/pvd/src/windows/PxWindowsPvdDelayLoadHook.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// This code contains NVIDIA Confidential Information and is disclosed to you
-// under a form of NVIDIA software license agreement provided separately to you.
-//
-// Notice
-// NVIDIA Corporation and its licensors retain all intellectual property and
-// proprietary rights in and to this software and 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.
-//
-// ALL NVIDIA DESIGN SPECIFICATIONS, CODE ARE PROVIDED "AS IS.". NVIDIA MAKES
-// NO WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
-// THE MATERIALS, AND EXPRESSLY DISCLAIMS ALL IMPLIED WARRANTIES OF NONINFRINGEMENT,
-// MERCHANTABILITY, AND FITNESS FOR A PARTICULAR PURPOSE.
-//
-// Information and code furnished is believed to be accurate and reliable.
-// However, NVIDIA Corporation assumes no responsibility for the consequences of use of such
-// information or for any infringement of patents or other rights of third parties that may
-// result from its use. No license is granted by implication or otherwise under any patent
-// or patent rights of NVIDIA Corporation. Details are subject to change without notice.
-// This code supersedes and replaces all information previously supplied.
-// NVIDIA Corporation products are not authorized for use as critical
-// components in life support devices or systems without express written approval of
-// NVIDIA Corporation.
-//
-// Copyright (c) 2008-2017 NVIDIA Corporation. All rights reserved.
-// Copyright (c) 2004-2008 AGEIA Technologies, Inc. All rights reserved.
-// Copyright (c) 2001-2004 NovodeX AG. All rights reserved.
-
-
-#include "pvd/windows/PxWindowsPvdDelayLoadHook.h"
-#include "windows/PsWindowsInclude.h"
-#include "windows/PsWindowsLoadLibrary.h"
-
-// Prior to Visual Studio 2015 Update 3, these hooks were non-const.
-#define DELAYIMP_INSECURE_WRITABLE_HOOKS
-#include <delayimp.h>
-
-static const physx::PxFoundationDelayLoadHook* gDelayLoadHook = NULL;
-
-void physx::PxPvdSetFoundationDelayLoadHook(const physx::PxFoundationDelayLoadHook* hook)
-{
- gDelayLoadHook = hook;
-}
-
-using namespace physx;
-
-#pragma comment(lib, "delayimp")
-
-FARPROC WINAPI delayHook(unsigned dliNotify, PDelayLoadInfo pdli)
-{
- switch (dliNotify) {
- case dliStartProcessing :
- break;
-
- case dliNotePreLoadLibrary :
- {
- return physx::shdfnd::foundationDliNotePreLoadLibrary(pdli->szDll, gDelayLoadHook);
- }
- break;
-
- case dliNotePreGetProcAddress :
- break;
-
- case dliFailLoadLib :
- break;
-
- case dliFailGetProc :
- break;
-
- case dliNoteEndProcessing :
- break;
-
- default :
-
- return NULL;
- }
-
- return NULL;
-}
-
-PfnDliHook __pfnDliNotifyHook2 = delayHook;