gpu_thread: Use bounded queue
This commit is contained in:
parent
1f98634371
commit
44518b225c
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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{};
|
||||||
|
|
Reference in New Issue