summaryrefslogtreecommitdiff
path: root/src/FFT_Simulation_Manager.h
diff options
context:
space:
mode:
authorJason Maskell <[email protected]>2016-05-09 10:39:54 +0200
committerJason Maskell <[email protected]>2016-05-09 10:39:54 +0200
commit79b3462799c28af8ba586349bd671b1b56e72353 (patch)
tree3b06e36c390254c0dc7f3733a0d32af213d87293 /src/FFT_Simulation_Manager.h
downloadwaveworks_archive-79b3462799c28af8ba586349bd671b1b56e72353.tar.xz
waveworks_archive-79b3462799c28af8ba586349bd671b1b56e72353.zip
Initial commit with PS4 and XBone stuff trimmed.
Diffstat (limited to 'src/FFT_Simulation_Manager.h')
-rw-r--r--src/FFT_Simulation_Manager.h95
1 files changed, 95 insertions, 0 deletions
diff --git a/src/FFT_Simulation_Manager.h b/src/FFT_Simulation_Manager.h
new file mode 100644
index 0000000..d010ea2
--- /dev/null
+++ b/src/FFT_Simulation_Manager.h
@@ -0,0 +1,95 @@
+// This code contains NVIDIA Confidential Information and is disclosed
+// under the Mutual Non-Disclosure Agreement.
+//
+// Notice
+// ALL NVIDIA DESIGN SPECIFICATIONS AND CODE ("MATERIALS") ARE PROVIDED "AS IS" NVIDIA MAKES
+// NO REPRESENTATIONS, WARRANTIES, EXPRESSED, IMPLIED, STATUTORY, OR OTHERWISE WITH RESPECT TO
+// THE MATERIALS, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES OF NONINFRINGEMENT,
+// MERCHANTABILITY, OR FITNESS FOR A PARTICULAR PURPOSE.
+//
+// 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. No third party distribution is allowed unless
+// expressly authorized by NVIDIA. 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 � 2008- 2013 NVIDIA Corporation. All rights reserved.
+//
+// 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.
+//
+
+#ifndef _NVWAVEWORKS_FFT_SIMULATION_MANAGER_H
+#define _NVWAVEWORKS_FFT_SIMULATION_MANAGER_H
+
+#include "Internal.h"
+
+class NVWaveWorks_FFT_Simulation;
+
+struct GFSDK_WaveWorks_Simulation_Manager_Timings
+{
+ // this struct is filled by simulation manager implementation
+ float time_start_to_stop; // time between starting the 1st thread's work and completing the last thread's work
+ float time_total; // sum of all time spent in worker threads doing actual work
+ float time_wait_for_completion; // time spent on waitTasksCompletion
+};
+
+class NVWaveWorks_FFT_Simulation_Manager
+{
+public:
+
+ virtual ~NVWaveWorks_FFT_Simulation_Manager() {};
+
+ virtual HRESULT initD3D9(IDirect3DDevice9* /*pD3DDevice*/) { return S_OK; }
+ virtual HRESULT initD3D10(ID3D10Device* /*pD3DDevice*/) { return S_OK; }
+ virtual HRESULT initD3D11(ID3D11Device* /*pD3DDevice*/) { return S_OK; }
+ virtual HRESULT initGL2(void* /*pGLContext*/) { return S_OK; }
+ virtual HRESULT initNoGraphics() { return S_OK; }
+ virtual HRESULT initGnm() { return S_OK; }
+
+ // Simulation lifetime management
+ virtual NVWaveWorks_FFT_Simulation* createSimulation(const GFSDK_WaveWorks_Detailed_Simulation_Params::Cascade& params) = 0;
+ virtual void releaseSimulation(NVWaveWorks_FFT_Simulation* pSimulation) = 0;
+
+ // Pipeline synchronization
+ virtual HRESULT kick(Graphics_Context* pGC, double dSimTime, gfsdk_U64& kickID) = 0;
+ virtual bool getStagingCursor(gfsdk_U64* pKickID) = 0; // Returns true iff the staging cursor is valid
+ virtual bool getReadbackCursor(gfsdk_U64* pKickID) = 0; // Returns true iff the readback cursor is valid
+
+ enum AdvanceCursorResult
+ {
+ AdvanceCursorResult_Failed = -1, // Something bad happened
+ AdvanceCursorResult_Succeeded = 0, // The cursor was advanced
+ AdvanceCursorResult_None, // The cursor was not advanced because there were no kicks in-flight
+ AdvanceCursorResult_WouldBlock // The cursor was not advanced because although there was a kick in-flight,
+ // the function was called in non-blocking mode and the in-flight kick is not
+ // yet ready
+ };
+
+ virtual AdvanceCursorResult advanceStagingCursor(bool block) = 0;
+ virtual AdvanceCursorResult advanceReadbackCursor(bool block) = 0;
+
+ enum WaitCursorResult
+ {
+ WaitCursorResult_Failed = -1, // Something bad happened
+ WaitCursorResult_Succeeded = 0, // The cursor is ready to advance
+ WaitCursorResult_None // The cursor is not ready to advance because there were no kicks in-flight
+ };
+
+ virtual WaitCursorResult waitStagingCursor() = 0;
+
+ virtual HRESULT archiveDisplacements() = 0;
+
+ // Hooks
+ virtual HRESULT beforeReinit(const GFSDK_WaveWorks_Detailed_Simulation_Params& params, bool reinitOnly) = 0;
+ virtual HRESULT getTimings(GFSDK_WaveWorks_Simulation_Manager_Timings& timings) = 0;
+};
+
+#endif // _NVWAVEWORKS_FFT_SIMULATION_MANAGER_H