Browse Source
Merge pull request #8542 from Morph1984/gpu-use-old-q
gpu_thread: Use the previous MPSCQueue implementation
pull/15/merge
liamwhite
3 years ago
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with
3 additions and
4 deletions
-
src/video_core/gpu_thread.cpp
-
src/video_core/gpu_thread.h
|
|
|
@ -31,8 +31,7 @@ static void RunThread(std::stop_token stop_token, Core::System& system, |
|
|
|
VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer(); |
|
|
|
|
|
|
|
while (!stop_token.stop_requested()) { |
|
|
|
CommandDataContainer next; |
|
|
|
state.queue.Pop(next, stop_token); |
|
|
|
CommandDataContainer next = state.queue.PopWait(stop_token); |
|
|
|
if (stop_token.stop_requested()) { |
|
|
|
break; |
|
|
|
} |
|
|
|
|
|
|
|
@ -10,7 +10,7 @@ |
|
|
|
#include <thread> |
|
|
|
#include <variant> |
|
|
|
|
|
|
|
#include "common/bounded_threadsafe_queue.h" |
|
|
|
#include "common/threadsafe_queue.h" |
|
|
|
#include "video_core/framebuffer_config.h" |
|
|
|
|
|
|
|
namespace Tegra { |
|
|
|
@ -96,7 +96,7 @@ struct CommandDataContainer { |
|
|
|
|
|
|
|
/// Struct used to synchronize the GPU thread |
|
|
|
struct SynchState final { |
|
|
|
using CommandQueue = Common::MPSCQueue<CommandDataContainer>; |
|
|
|
using CommandQueue = Common::MPSCQueue<CommandDataContainer, true>; |
|
|
|
std::mutex write_lock; |
|
|
|
CommandQueue queue; |
|
|
|
u64 last_fence{}; |
|
|
|
|