|
|
|
@ -1199,6 +1199,23 @@ private: |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void GetIndirectLayerImageRequiredMemoryInfo(Kernel::HLERequestContext& ctx) { |
|
|
|
IPC::RequestParser rp{ctx}; |
|
|
|
const auto width = rp.Pop<u64>(); |
|
|
|
const auto height = rp.Pop<u64>(); |
|
|
|
LOG_DEBUG(Service_VI, "called width={}, height={}", width, height); |
|
|
|
|
|
|
|
constexpr std::size_t base_size = 0x20000; |
|
|
|
constexpr std::size_t alignment = 0x1000; |
|
|
|
const auto texture_size = width * height * 4; |
|
|
|
const auto out_size = (texture_size + base_size - 1) / base_size * base_size; |
|
|
|
|
|
|
|
IPC::ResponseBuilder rb{ctx, 6}; |
|
|
|
rb.Push(RESULT_SUCCESS); |
|
|
|
rb.Push(out_size); |
|
|
|
rb.Push(alignment); |
|
|
|
} |
|
|
|
|
|
|
|
static ResultVal<ConvertedScaleMode> ConvertScalingModeImpl(NintendoScaleMode mode) { |
|
|
|
switch (mode) { |
|
|
|
case NintendoScaleMode::None: |
|
|
|
@ -1243,7 +1260,8 @@ IApplicationDisplayService::IApplicationDisplayService( |
|
|
|
{2102, &IApplicationDisplayService::ConvertScalingMode, "ConvertScalingMode"}, |
|
|
|
{2450, nullptr, "GetIndirectLayerImageMap"}, |
|
|
|
{2451, nullptr, "GetIndirectLayerImageCropMap"}, |
|
|
|
{2460, nullptr, "GetIndirectLayerImageRequiredMemoryInfo"}, |
|
|
|
{2460, &IApplicationDisplayService::GetIndirectLayerImageRequiredMemoryInfo, |
|
|
|
"GetIndirectLayerImageRequiredMemoryInfo"}, |
|
|
|
{5202, &IApplicationDisplayService::GetDisplayVsyncEvent, "GetDisplayVsyncEvent"}, |
|
|
|
{5203, nullptr, "GetDisplayVsyncEventForDebug"}, |
|
|
|
}; |
|
|
|
|