vi: Renamed viGetDisplayMinimumZ to viGetZOrderCountMin, and renamed viGetDisplayMaximumZ to viGetZOrderCountMax. Updated param types. Clear IPC in-struct padding + minor other changes.

This commit is contained in:
yellows8 2019-10-24 18:06:33 -04:00
parent 4ab2384449
commit e5c1e35ede
No known key found for this signature in database
GPG Key ID: 0AF90DA3F1E60E43
2 changed files with 51 additions and 42 deletions

View File

@ -78,22 +78,22 @@ static inline Result viOpenDefaultDisplay(ViDisplay *display)
return viOpenDisplay("Default", display); return viOpenDisplay("Default", display);
} }
Result viGetDisplayResolution(ViDisplay *display, u64 *width, u64 *height); Result viGetDisplayResolution(ViDisplay *display, s32 *width, s32 *height);
Result viGetDisplayLogicalResolution(ViDisplay *display, u32 *width, u32 *height); Result viGetDisplayLogicalResolution(ViDisplay *display, s32 *width, s32 *height);
/// Only available on [3.0.0+]. /// Only available on [3.0.0+].
Result viSetDisplayMagnification(ViDisplay *display, u32 x, u32 y, u32 width, u32 height); Result viSetDisplayMagnification(ViDisplay *display, s32 x, s32 y, s32 width, s32 height);
Result viGetDisplayVsyncEvent(ViDisplay *display, Event *event_out); Result viGetDisplayVsyncEvent(ViDisplay *display, Event *event_out);
Result viSetDisplayPowerState(ViDisplay *display, ViPowerState state); Result viSetDisplayPowerState(ViDisplay *display, ViPowerState state);
Result viSetDisplayAlpha(ViDisplay *display, float alpha); Result viSetDisplayAlpha(ViDisplay *display, float alpha);
Result viGetDisplayMinimumZ(ViDisplay *display, u64 *z); Result viGetZOrderCountMin(ViDisplay *display, s32 *z);
Result viGetDisplayMaximumZ(ViDisplay *display, u64 *z); Result viGetZOrderCountMax(ViDisplay *display, s32 *z);
// Layer functions // Layer functions
Result viCreateLayer(const ViDisplay *display, ViLayer *layer); Result viCreateLayer(const ViDisplay *display, ViLayer *layer);
Result viCreateManagedLayer(const ViDisplay *display, ViLayerFlags layer_flags, u64 aruid, u64 *layer_id); Result viCreateManagedLayer(const ViDisplay *display, ViLayerFlags layer_flags, u64 aruid, u64 *layer_id);
Result viSetLayerSize(ViLayer *layer, u64 width, u64 height); Result viSetLayerSize(ViLayer *layer, s32 width, s32 height);
Result viSetLayerZ(ViLayer *layer, u64 z); Result viSetLayerZ(ViLayer *layer, s32 z);
Result viSetLayerPosition(ViLayer *layer, float x, float y); Result viSetLayerPosition(ViLayer *layer, float x, float y);
Result viCloseLayer(ViLayer *layer); Result viCloseLayer(ViLayer *layer);
Result viDestroyManagedLayer(ViLayer *layer); Result viDestroyManagedLayer(ViLayer *layer);

View File

@ -133,14 +133,14 @@ Result viCloseDisplay(ViDisplay *display) {
return rc; return rc;
} }
Result viGetDisplayResolution(ViDisplay *display, u64 *width, u64 *height) { Result viGetDisplayResolution(ViDisplay *display, s32 *width, s32 *height) {
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
struct { struct {
u64 width; s64 width;
u64 height; s64 height;
} out; } out;
Result rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 1102, display->display_id, out); Result rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 1102, display->display_id, out);
@ -153,14 +153,14 @@ Result viGetDisplayResolution(ViDisplay *display, u64 *width, u64 *height) {
return rc; return rc;
} }
Result viGetDisplayLogicalResolution(ViDisplay *display, u32 *width, u32 *height) { Result viGetDisplayLogicalResolution(ViDisplay *display, s32 *width, s32 *height) {
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
struct { struct {
u32 width; s32 width;
u32 height; s32 height;
} out; } out;
Result rc = serviceDispatchInOut(&g_viISystemDisplayService, 1203, display->display_id, out); Result rc = serviceDispatchInOut(&g_viISystemDisplayService, 1203, display->display_id, out);
@ -174,7 +174,7 @@ Result viGetDisplayLogicalResolution(ViDisplay *display, u32 *width, u32 *height
} }
Result viSetDisplayMagnification(ViDisplay *display, u32 x, u32 y, u32 width, u32 height) { Result viSetDisplayMagnification(ViDisplay *display, s32 x, s32 y, s32 width, s32 height) {
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
@ -183,10 +183,10 @@ Result viSetDisplayMagnification(ViDisplay *display, u32 x, u32 y, u32 width, u3
} }
const struct { const struct {
u32 x; s32 x;
u32 y; s32 y;
u32 width; s32 width;
u32 height; s32 height;
u64 display_id; u64 display_id;
} in = { x, y, width, height, display->display_id }; } in = { x, y, width, height, display->display_id };
return serviceDispatchIn(&g_viISystemDisplayService, 1204, in); return serviceDispatchIn(&g_viISystemDisplayService, 1204, in);
@ -234,20 +234,26 @@ Result viSetDisplayAlpha(ViDisplay *display, float alpha) {
return serviceDispatchIn(&g_viIManagerDisplayService, 4201, in); return serviceDispatchIn(&g_viIManagerDisplayService, 4201, in);
} }
Result viGetDisplayMinimumZ(ViDisplay *display, u64 *z) { Result viGetZOrderCountMin(ViDisplay *display, s32 *z) {
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
return serviceDispatchInOut(&g_viISystemDisplayService, 1200, display->display_id, *z); s64 tmp=0;
Result rc = serviceDispatchInOut(&g_viISystemDisplayService, 1200, display->display_id, tmp);
if (R_SUCCEEDED(rc) && z) *z = tmp;
return rc;
} }
Result viGetDisplayMaximumZ(ViDisplay *display, u64 *z) { Result viGetZOrderCountMax(ViDisplay *display, s32 *z) {
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
return serviceDispatchInOut(&g_viISystemDisplayService, 1202, display->display_id, *z); s64 tmp=0;
Result rc = serviceDispatchInOut(&g_viISystemDisplayService, 1202, display->display_id, tmp);
if (R_SUCCEEDED(rc) && z) *z = tmp;
return rc;
} }
Result viCreateManagedLayer(const ViDisplay *display, ViLayerFlags layer_flags, u64 aruid, u64 *layer_id) { Result viCreateManagedLayer(const ViDisplay *display, ViLayerFlags layer_flags, u64 aruid, u64 *layer_id) {
@ -257,9 +263,10 @@ Result viCreateManagedLayer(const ViDisplay *display, ViLayerFlags layer_flags,
const struct { const struct {
u32 layer_flags; u32 layer_flags;
u32 pad;
u64 display_id; u64 display_id;
u64 aruid; u64 aruid;
} in = { layer_flags, display->display_id, aruid }; } in = { layer_flags, 0, display->display_id, aruid };
return serviceDispatchInOut(&g_viIManagerDisplayService, 2010, in, *layer_id); return serviceDispatchInOut(&g_viIManagerDisplayService, 2010, in, *layer_id);
} }
@ -274,11 +281,11 @@ Result viDestroyManagedLayer(ViLayer *layer) {
} }
Result viSetContentVisibility(bool v) { Result viSetContentVisibility(bool v) {
return serviceDispatchIn(&g_viIManagerDisplayService, 7000, v); u8 tmp = v!=0;
return serviceDispatchIn(&g_viIManagerDisplayService, 7000, tmp);
} }
static Result _viOpenLayer(const ViDisplay *display, u64 layer_id, u64 aruid, u8 native_window[0x100], u64 *native_window_size) static Result _viOpenLayer(const ViDisplay *display, u64 layer_id, u64 aruid, u8 native_window[0x100], u64 *native_window_size) {
{
if (!display->initialized) { if (!display->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
@ -322,8 +329,9 @@ static Result _viCreateStrayLayer(const ViDisplay *display, u32 layer_flags, u64
const struct { const struct {
u32 layer_flags; u32 layer_flags;
u32 pad;
u64 display_id; u64 display_id;
} in = { layer_flags, display->display_id }; } in = { layer_flags, 0, display->display_id };
struct { struct {
u64 layer_id; u64 layer_id;
@ -394,27 +402,27 @@ _bad_parcel:
return MAKERESULT(Module_Libnx, LibnxError_BadInput); return MAKERESULT(Module_Libnx, LibnxError_BadInput);
} }
Result viSetLayerSize(ViLayer *layer, u64 width, u64 height) { Result viSetLayerSize(ViLayer *layer, s32 width, s32 height) {
if (!layer->initialized) { if (!layer->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
const struct { const struct {
u64 layer_id; u64 layer_id;
u64 width; s64 width;
u64 height; s64 height;
} in = { layer->layer_id, width, height }; } in = { layer->layer_id, width, height };
return serviceDispatchIn(&g_viISystemDisplayService, 2203, in); return serviceDispatchIn(&g_viISystemDisplayService, 2203, in);
} }
Result viSetLayerZ(ViLayer *layer, u64 z) { Result viSetLayerZ(ViLayer *layer, s32 z) {
if (!layer->initialized) { if (!layer->initialized) {
return MAKERESULT(Module_Libnx, LibnxError_NotInitialized); return MAKERESULT(Module_Libnx, LibnxError_NotInitialized);
} }
const struct { const struct {
u64 layer_id; u64 layer_id;
u64 z; s64 z;
} in = { layer->layer_id, z }; } in = { layer->layer_id, z };
return serviceDispatchIn(&g_viISystemDisplayService, 2205, in); return serviceDispatchIn(&g_viISystemDisplayService, 2205, in);
} }
@ -452,9 +460,10 @@ Result viSetLayerScalingMode(ViLayer *layer, ViScalingMode scaling_mode) {
} }
const struct { const struct {
u64 scaling_mode; u32 scaling_mode;
u32 pad;
u64 layer_id; u64 layer_id;
} in = { scaling_mode, layer->layer_id }; } in = { scaling_mode, 0, layer->layer_id };
return serviceDispatchIn(&g_viIApplicationDisplayService, 2101, in); return serviceDispatchIn(&g_viIApplicationDisplayService, 2101, in);
} }
@ -464,15 +473,15 @@ Result viGetIndirectLayerImageMap(void* buffer, size_t size, s32 width, s32 heig
if (R_FAILED(rc)) return rc; if (R_FAILED(rc)) return rc;
const struct { const struct {
u64 width; s64 width;
u64 height; s64 height;
u64 IndirectLayerConsumerHandle; u64 IndirectLayerConsumerHandle;
u64 aruid; u64 aruid;
} in = { width, height, IndirectLayerConsumerHandle, aruid }; } in = { width, height, IndirectLayerConsumerHandle, aruid };
struct { struct {
u64 size; s64 size;
u64 stride; s64 stride;
} out; } out;
rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 2450, in, out, rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 2450, in, out,
@ -491,13 +500,13 @@ Result viGetIndirectLayerImageMap(void* buffer, size_t size, s32 width, s32 heig
Result viGetIndirectLayerImageRequiredMemoryInfo(s32 width, s32 height, u64 *out_size, u64 *out_alignment) { Result viGetIndirectLayerImageRequiredMemoryInfo(s32 width, s32 height, u64 *out_size, u64 *out_alignment) {
const struct { const struct {
u64 width; s64 width;
u64 height; s64 height;
} in = { width, height }; } in = { width, height };
struct { struct {
u64 size; s64 size;
u64 alignment; s64 alignment;
} out; } out;
Result rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 2460, in, out); Result rc = serviceDispatchInOut(&g_viIApplicationDisplayService, 2460, in, out);