Display services: Difference between revisions

CreateStrayLayer
No edit summary
(25 intermediate revisions by 3 users not shown)
Line 6: Line 6:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
! Cmd || Name
! Cmd || Name || Notes
|-
| 1 || ||
|-
| 2 || ||
|-
| 3 || [5.0.0+] ? || Takes a total of 8-bytes of input, no output.
|-
| 5 || [5.0.0+] ? || Takes a total of 0x10-bytes of input, no output.
|-
| 210 || [6.0.0+] ? || Takes a total of 0x50-bytes of input, a type-0x15 input buffer, and a type-0x45 input buffer, returns a total of 0x20-bytes of output.
|-
| [2.0.0-4.1.0] 1001 || || Takes a total of 0x10-bytes of input, no output.
|-
| [2.0.0-4.1.0] 1002 || || Takes a total of 0x18-bytes of input, no output.
|-
| [3.0.0-4.1.0] 1003 || || Takes a total of 0x58-bytes of input, no output.
|-
| 1004 || [5.0.0+] ? || Takes a total of 0x60-bytes of input, no output. [6.0.0+]: In addition, this also takes a type-0x15 input buffer.
|-
|-
| 1 ||
| 1009 || [5.0.0+] ? || Takes a total of 0x10-bytes of input, no output.
|-
|-
| 2 ||
| 1010 || [5.0.0+] ? || Takes a total of 0x10-bytes of input, no output.
|-
|-
| 1001 ||
| 1011 || || Takes a total of 8-bytes of input, no output.
|-
|-
| 1002 ||
| 1012 || || Takes a total of 8-bytes of input, no output.
|-
|-
| 1003 ||
| 1101 || [4.0.0+] ? ||  
|-
|-
| 1011 ||
| 1106 || [4.0.0+] ? ||  
|-
|-
| 1012 ||
| 1107 || [4.0.0+] ? ||  
|-
|-
| 1201 ||
| 1201 || [3.0.0+] ? || Takes a total of 0x10-bytes of input, returns a total of 0x18-bytes of output.
|-
|-
| 1202 ||
| 1202 || [3.0.0+] ? || No input/output.
|-
|-
| 1203 ||
| 1203 || [3.0.0+] ? || Takes a total of 8-bytes of input and a type-0x6 output buffer, returns a total of 8-bytes of output.
|}
|}
* cmd210: User-processes use hard-coded size 0x88 for the type-0x15 buffer.
* cmd1106/1107: User-processes use hard-coded sizes 0x400 and 0x404 for the first/second type-0x15 buffers.
* cmd1201/1202/1203: These are only usable when the previously loaded value from [[Settings_services|set:sys GetDebugModeFlag]] is set.
The only caps:sc commands used by [[GRC_services|GRC]] are: 1101, 1106, and 1107.
[8.0.0+] Cmd210 and cmd1004 now takes an additional type-0x15 input buffer.


== Cmd1 ==
== Cmd1 ==
Takes a type-0x46 output buffer, an input u32, two input u64s '''width'''/'''height''', an input s64 '''buffer_count''', and an input s64 '''buffer_index'''.
Takes a type-0x46 output buffer, an input u32 '''layer_stack''', two input u64s '''width'''/'''height''', an input s64 '''buffer_count''', and an input s64 '''buffer_index'''.


'''width'''/'''height''' must match 1280/720. '''buffer_index''' must be < '''buffer_count'''. '''buffer_index''' and '''buffer_count''' must not be negative.
'''width'''/'''height''' must match 1280/720. '''buffer_index''' must be < '''buffer_count'''. '''buffer_index''' and '''buffer_count''' must not be negative.
Line 46: Line 72:


Stubbed with [5.0.0+], where it now returns error 0x7FECE.
Stubbed with [5.0.0+], where it now returns error 0x7FECE.
== Cmd1101 ==
Takes two input u64s '''width'''/'''height''', a 0x18-byte input struct, and two type-0x46 output buffers.
For the input struct, [[GRC_services|GRC]] uses the output from [[Capture_services|caps:c]] cmd2101.
'''width'''/'''height''' must be 1280x720. The first buffer address must be 0x400-byte aligned. The size of the first buffer must be at least '''width'''*'''height''', and must be aligned to 0x20000-bytes.
The requirements for the second buffer address/size are the same as the first buffer, except the minimum size is ('''width'''*'''height''')/2.
== Cmd1106 ==
Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and two type-0x46 output buffers, returns 3 output u64s.
'''width'''/'''height''' have same requirements as [[#Cmd1101]]. The size of the type-0x6 buffer must be at least 0x7D000. The requirements for the type-0x46 buffers are the same as [[#Cmd1101]].
[5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30.
== Cmd1107 ==
Takes a 0x40-byte input struct, two input u64s '''width'''/'''height''', a 0x18-byte input struct, two type-0x15 input buffers, a type-0x6 output buffer, and a type-0x45 input buffer, returns 3 output u64s.
'''width'''/'''height''' have same requirements as [[#Cmd1101]]. The size of the type-0x6 buffer must be at least 0x7D000. The size of the type-0x45 buffer must be at least 0x384000.
[5.0.0+] Now takes a total of 0x68-bytes of input instead of 0x30.


= caps:ss =
= caps:ss =
Line 58: Line 107:
| 202 ||
| 202 ||
|-
|-
| 203 ||
| 203 || [3.0.0+]
|-
| 204 || [3.0.0+]
|-
|-
| 204 ||
| 208 || [5.0.0+]
|}
|}


= caps:su =
= caps:su =
This is "nn::capsrv::sf::IScreenShotApplicationService".
This is "nn::capsrv::sf::IScreenShotApplicationService".
This was added with [3.0.0+]. This was moved to [[Applet_Manager_services|AM]] with [6.0.0+].


{| class="wikitable" border="1"
{| class="wikitable" border="1"
Line 73: Line 126:
|-
|-
| 203 || SaveScreenShotEx0
| 203 || SaveScreenShotEx0
|-
| 210 || [6.0.0+] SaveScreenShotEx2
|}
|}


Line 84: Line 135:
! Cmd || Name
! Cmd || Name
|-
|-
| 0 ||
| 0 || Initialize
|-
|-
| 1 ||
| 1 || Finalize
|-
|-
| 2 ||
| 2 ||
|-
|-
| 3 ||
| 3 || PerformOneTouchPlay
|-
|-
| 4 ||
| 4 ||
Line 96: Line 147:
| 5 ||
| 5 ||
|-
|-
| 6 ||
| 6 || [2.0.0+]
|-
| 100 || [4.0.0+] GetHdcpServiceObject
|}
 
GetHdcpServiceObject: No input, returns a [[#CecManagerSubinterface100]].
 
= CecManagerSubinterface100 =
Added with [4.0.0+].
 
{| class="wikitable" border="1"
|-
! Cmd || Name
|-
| 0 ||
|-
| 1 ||
|-
| 2 ||
|-
| 3 ||  
|}
|}


Line 324: Line 395:
| 1203 || GetDisplayLogicalResolution
| 1203 || GetDisplayLogicalResolution
|-
|-
| 1204 || SetDisplayMagnification
| 1204 || [3.0.0+] SetDisplayMagnification
|-
|-
| 2201 || SetLayerPosition
| 2201 || SetLayerPosition
Line 338: Line 409:
| 2209 || SetLayerAlpha
| 2209 || SetLayerAlpha
|-
|-
| [1.0.0-6.2.0] 2312 || CreateStrayLayer
| 2312 || [1.0.0-6.2.0] CreateStrayLayer
|-
|-
| 2400 || OpenIndirectLayer
| 2400 || OpenIndirectLayer
Line 416: Line 487:
| 201 || [4.0.0+] FreeProcessHeapBlock
| 201 || [4.0.0+] FreeProcessHeapBlock
|-
|-
| 1102 || GetDisplayResolution
| 1102 || [3.0.0+] GetDisplayResolution
|-
|-
| 2010 || CreateManagedLayer
| 2010 || CreateManagedLayer
Line 441: Line 512:
|-
|-
| 2302 || GetDisplayHotplugEvent
| 2302 || GetDisplayHotplugEvent
|-
| 2303 || [5.1.0+] GetDisplayModeChangedEvent
|-
|-
| 2402 || GetDisplayHotplugState
| 2402 || GetDisplayHotplugState
Line 477: Line 550:
|-
|-
| 6010 || [5.0.0+] GetLayerPresentationAllFencesExpiredEvent
| 6010 || [5.0.0+] GetLayerPresentationAllFencesExpiredEvent
|-
| 6011 || [7.0.0+] EnableLayerAutoClearTransitionBuffer
|-
| 6012 || [7.0.0+] DisableLayerAutoClearTransitionBuffer
|-
|-
| 7000 || SetContentVisibility
| 7000 || SetContentVisibility
|-
|-
| 8000 || SetConductorLayer
| 8000 || SetConductorLayer
|-
| 8001 || [8.0.0+] SetTimestampTracking
|-
|-
| 8100 || SetIndirectProducerFlipOffset
| 8100 || SetIndirectProducerFlipOffset
Line 544: Line 623:
| 8298 || [5.0.0+] ExpandStartupLogoOnSharedFrameBuffer
| 8298 || [5.0.0+] ExpandStartupLogoOnSharedFrameBuffer
|}
|}
[5.0.0+] SetDetachedSharedFrameBufferImage now takes an additional 0x10-bytes of input. CopyDetachedSharedFrameBufferImage now takes an additional 0x18-bytes of input. SetDetachedSharedFrameBufferSubImage now takes an additional 0x10-bytes of input, and the buffer type was changed from 0x5 to 0x45.


= DisplayInfo =
= DisplayInfo =