|
|
@ -524,7 +524,7 @@ private:
|
|
|
|
LOG_DEBUG(Service_VI, "called. id=0x{:08X} transaction={:X}, flags=0x{:08X}", id,
|
|
|
|
LOG_DEBUG(Service_VI, "called. id=0x{:08X} transaction={:X}, flags=0x{:08X}", id,
|
|
|
|
static_cast<u32>(transaction), flags);
|
|
|
|
static_cast<u32>(transaction), flags);
|
|
|
|
|
|
|
|
|
|
|
|
auto buffer_queue = nv_flinger->GetBufferQueue(id);
|
|
|
|
auto buffer_queue = nv_flinger->FindBufferQueue(id);
|
|
|
|
|
|
|
|
|
|
|
|
if (transaction == TransactionId::Connect) {
|
|
|
|
if (transaction == TransactionId::Connect) {
|
|
|
|
IGBPConnectRequestParcel request{ctx.ReadBuffer()};
|
|
|
|
IGBPConnectRequestParcel request{ctx.ReadBuffer()};
|
|
|
@ -558,7 +558,7 @@ private:
|
|
|
|
[=](Kernel::SharedPtr<Kernel::Thread> thread, Kernel::HLERequestContext& ctx,
|
|
|
|
[=](Kernel::SharedPtr<Kernel::Thread> thread, Kernel::HLERequestContext& ctx,
|
|
|
|
Kernel::ThreadWakeupReason reason) {
|
|
|
|
Kernel::ThreadWakeupReason reason) {
|
|
|
|
// Repeat TransactParcel DequeueBuffer when a buffer is available
|
|
|
|
// Repeat TransactParcel DequeueBuffer when a buffer is available
|
|
|
|
auto buffer_queue = nv_flinger->GetBufferQueue(id);
|
|
|
|
auto buffer_queue = nv_flinger->FindBufferQueue(id);
|
|
|
|
std::optional<u32> slot = buffer_queue->DequeueBuffer(width, height);
|
|
|
|
std::optional<u32> slot = buffer_queue->DequeueBuffer(width, height);
|
|
|
|
ASSERT_MSG(slot != std::nullopt, "Could not dequeue buffer.");
|
|
|
|
ASSERT_MSG(slot != std::nullopt, "Could not dequeue buffer.");
|
|
|
|
|
|
|
|
|
|
|
@ -628,7 +628,7 @@ private:
|
|
|
|
|
|
|
|
|
|
|
|
LOG_WARNING(Service_VI, "(STUBBED) called id={}, unknown={:08X}", id, unknown);
|
|
|
|
LOG_WARNING(Service_VI, "(STUBBED) called id={}, unknown={:08X}", id, unknown);
|
|
|
|
|
|
|
|
|
|
|
|
const auto buffer_queue = nv_flinger->GetBufferQueue(id);
|
|
|
|
const auto buffer_queue = nv_flinger->FindBufferQueue(id);
|
|
|
|
|
|
|
|
|
|
|
|
// TODO(Subv): Find out what this actually is.
|
|
|
|
// TODO(Subv): Find out what this actually is.
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 2, 1};
|
|
|
@ -1044,7 +1044,7 @@ private:
|
|
|
|
LOG_DEBUG(Service_VI, "called. layer_id=0x{:016X}, aruid=0x{:016X}", layer_id, aruid);
|
|
|
|
LOG_DEBUG(Service_VI, "called. layer_id=0x{:016X}, aruid=0x{:016X}", layer_id, aruid);
|
|
|
|
|
|
|
|
|
|
|
|
const u64 display_id = nv_flinger->OpenDisplay(display_name);
|
|
|
|
const u64 display_id = nv_flinger->OpenDisplay(display_name);
|
|
|
|
const u32 buffer_queue_id = nv_flinger->GetBufferQueueId(display_id, layer_id);
|
|
|
|
const u32 buffer_queue_id = nv_flinger->FindBufferQueueId(display_id, layer_id);
|
|
|
|
|
|
|
|
|
|
|
|
NativeWindow native_window{buffer_queue_id};
|
|
|
|
NativeWindow native_window{buffer_queue_id};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 4};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 4};
|
|
|
@ -1063,7 +1063,7 @@ private:
|
|
|
|
// TODO(Subv): What's the difference between a Stray and a Managed layer?
|
|
|
|
// TODO(Subv): What's the difference between a Stray and a Managed layer?
|
|
|
|
|
|
|
|
|
|
|
|
const u64 layer_id = nv_flinger->CreateLayer(display_id);
|
|
|
|
const u64 layer_id = nv_flinger->CreateLayer(display_id);
|
|
|
|
const u32 buffer_queue_id = nv_flinger->GetBufferQueueId(display_id, layer_id);
|
|
|
|
const u32 buffer_queue_id = nv_flinger->FindBufferQueueId(display_id, layer_id);
|
|
|
|
|
|
|
|
|
|
|
|
NativeWindow native_window{buffer_queue_id};
|
|
|
|
NativeWindow native_window{buffer_queue_id};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 6};
|
|
|
|
IPC::ResponseBuilder rb{ctx, 6};
|
|
|
|