hkSpuUtil.h
上传用户:yisoukefu
上传日期:2020-08-09
资源大小:39506k
文件大小:3k
源码类别:

其他游戏

开发平台:

Visual C++

  1. /* 
  2.  * 
  3.  * Confidential Information of Telekinesys Research Limited (t/a Havok). Not for disclosure or distribution without Havok's
  4.  * prior written consent. This software contains code, techniques and know-how which is confidential and proprietary to Havok.
  5.  * Level 2 and Level 3 source code contains trade secrets of Havok. Havok Software (C) Copyright 1999-2009 Telekinesys Research Limited t/a Havok. All Rights Reserved. Use of this software is subject to the terms of an end user license agreement.
  6.  * 
  7.  */
  8. #ifndef HK_BASE_SPU_UTIL_H
  9. #define HK_BASE_SPU_UTIL_H
  10. #include <Common/Base/Spu/Spurs/hkSpurs.h>
  11. namespace hkSpuSimulator
  12. {
  13. class Server;
  14. }
  15. struct hkSpuTaskParams
  16. {
  17. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_BASE_CLASS, hkSpuTaskParams );
  18. void* m_param0;
  19. void* m_param1;
  20. void* m_param2;
  21. void* m_param3;
  22. };
  23. struct hkSpursTasksetParams
  24. {
  25. HK_DECLARE_NONVIRTUAL_CLASS_ALLOCATOR( HK_MEMORY_CLASS_BASE_CLASS, hkSpursTasksetParams );
  26. void* m_param0;
  27. void* m_param1;
  28. };
  29. struct hkSpuMemoryBin;
  30. /// Wrapper class for running spus
  31. class hkSpuUtil : public hkReferencedObject
  32. {
  33. public:
  34. HK_DECLARE_CLASS_ALLOCATOR(HK_MEMORY_CLASS_UTILITIES);
  35. /// You must initialize a CellSpurs instance before calling this function.
  36. hkSpuUtil( HK_CELL_SPURS* spurs );
  37. /// This calls quitSpursTaskset
  38. ~hkSpuUtil();
  39. /// Attach the helper thread created by this utility to SPURS
  40. /// The helper thread must be attached when you call startSpursTask()
  41. void attachHelperThreadToSpurs();
  42. /// Detatch the helper thread created by this utility from SPURS
  43. void detachHelperThreadFromSpurs();
  44. /// Use this function to initialize the Havok spurs taskset.
  45. void initSpursTaskset( int numSpus, hkSpursTasksetParams& params, const char* name );
  46. /// You must call initSpursTaskset before calling this function.
  47. /// Use this function to quit the Havok spurs taskset.
  48. void quitSpursTaskset( );
  49. /// Start SPURS task, given params and an elf
  50. void startSpursTask( hkSpuTaskParams& params, const void* elf = HK_NULL );
  51. #if defined(HK_PLATFORM_PS3_PPU)
  52. /// Internal use only
  53. void* getMemoryBins();
  54. #endif
  55. public:
  56. #if defined (HK_PLATFORM_PS3_PPU)
  57. // SPURS
  58. CellSpursTaskset* m_taskset;
  59. CellSpursTaskExitCode* m_taskExitCode;
  60. hkBool m_helperThreadIsAttached;
  61. hkBool m_spursTasksetInitialized;
  62. hkMemory* m_memory;
  63. sys_event_queue_t m_queueToHelperThread;
  64. sys_ppu_thread_t m_helperThreadId;
  65. hkSpuMemoryBin* m_bins;
  66. #elif defined (HK_PLATFORM_SIM)
  67. hkSpuSimulator::Server* m_spuSimulatorServer;
  68. #endif
  69. };
  70. #endif // HK_BASE_SPU_UTIL_H
  71. /*
  72. * Havok SDK - NO SOURCE PC DOWNLOAD, BUILD(#20090216)
  73. * Confidential Information of Havok.  (C) Copyright 1999-2009
  74. * Telekinesys Research Limited t/a Havok. All Rights Reserved. The Havok
  75. * Logo, and the Havok buzzsaw logo are trademarks of Havok.  Title, ownership
  76. * rights, and intellectual property rights in the Havok software remain in
  77. * Havok and/or its suppliers.
  78. * Use of this software for evaluation purposes is subject to and indicates
  79. * acceptance of the End User licence Agreement for this product. A copy of
  80. * the license is included with this software and is also available at www.havok.com/tryhavok.
  81. */