Merge pull request #9778 from behunin/my-box-chevy

gpu_thread: Use bounded queue
This commit is contained in:
bunnei 2023-03-17 22:14:29 -07:00 committed by GitHub
commit 889454f9bf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 3 deletions

View File

@ -32,7 +32,8 @@ static void RunThread(std::stop_token stop_token, Core::System& system,
VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer(); VideoCore::RasterizerInterface* const rasterizer = renderer.ReadRasterizer();
while (!stop_token.stop_requested()) { while (!stop_token.stop_requested()) {
CommandDataContainer next = state.queue.PopWait(stop_token); CommandDataContainer next;
state.queue.Pop(next, stop_token);
if (stop_token.stop_requested()) { if (stop_token.stop_requested()) {
break; break;
} }

View File

@ -10,8 +10,8 @@
#include <thread> #include <thread>
#include <variant> #include <variant>
#include "common/bounded_threadsafe_queue.h"
#include "common/polyfill_thread.h" #include "common/polyfill_thread.h"
#include "common/threadsafe_queue.h"
#include "video_core/framebuffer_config.h" #include "video_core/framebuffer_config.h"
namespace Tegra { namespace Tegra {
@ -97,7 +97,7 @@ struct CommandDataContainer {
/// Struct used to synchronize the GPU thread /// Struct used to synchronize the GPU thread
struct SynchState final { struct SynchState final {
using CommandQueue = Common::MPSCQueue<CommandDataContainer, true>; using CommandQueue = Common::MPSCQueue<CommandDataContainer>;
std::mutex write_lock; std::mutex write_lock;
CommandQueue queue; CommandQueue queue;
u64 last_fence{}; u64 last_fence{};