2
0

BsCoreThreadAccessor.cpp 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. #include "BsCoreThreadAccessor.h"
  2. #include "BsCommandQueue.h"
  3. #include "BsRenderAPI.h"
  4. #include "BsBlendState.h"
  5. #include "BsRasterizerState.h"
  6. #include "BsDepthStencilState.h"
  7. #include "BsGpuResourceData.h"
  8. #include "BsIndexBuffer.h"
  9. #include "BsVertexBuffer.h"
  10. #include "BsVideoModeInfo.h"
  11. #include "BsGpuParams.h"
  12. #include "BsPass.h"
  13. #include "BsMaterial.h"
  14. #include "BsCoreThread.h"
  15. namespace BansheeEngine
  16. {
  17. CoreThreadAccessorBase::CoreThreadAccessorBase(CommandQueueBase* commandQueue)
  18. :mCommandQueue(commandQueue)
  19. {
  20. }
  21. CoreThreadAccessorBase::~CoreThreadAccessorBase()
  22. {
  23. bs_delete(mCommandQueue);
  24. }
  25. AsyncOp CoreThreadAccessorBase::queueReturnCommand(std::function<void(AsyncOp&)> commandCallback)
  26. {
  27. return mCommandQueue->queueReturn(commandCallback);
  28. }
  29. void CoreThreadAccessorBase::queueCommand(std::function<void()> commandCallback)
  30. {
  31. mCommandQueue->queue(commandCallback);
  32. }
  33. void CoreThreadAccessorBase::submitToCoreThread(bool blockUntilComplete)
  34. {
  35. Queue<QueuedCommand>* commands = mCommandQueue->flush();
  36. gCoreThread().queueCommand(std::bind(&CommandQueueBase::playback, mCommandQueue, commands), blockUntilComplete);
  37. }
  38. void CoreThreadAccessorBase::cancelAll()
  39. {
  40. // Note that this won't free any Frame data allocated for all the canceled commands since
  41. // frame data will only get cleared at frame start
  42. mCommandQueue->cancelAll();
  43. }
  44. }