mirror of
				https://github.com/PabloMK7/citra.git
				synced 2025-11-03 23:28:48 +00:00 
			
		
		
		
	Service/GSP: Implemented ImportDisplayCaptureInfo.
This commit is contained in:
		
							parent
							
								
									33c57361a9
								
							
						
					
					
						commit
						fa397494b0
					
				
					 1 changed files with 47 additions and 1 deletions
				
			
		| 
						 | 
				
			
			@ -496,6 +496,52 @@ static void TriggerCmdReqQueue(Service::Interface* self) {
 | 
			
		|||
    cmd_buff[1] = 0; // No error
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * GSP_GPU::ImportDisplayCaptureInfo service function
 | 
			
		||||
 *
 | 
			
		||||
 * Returns information about the current framebuffer state
 | 
			
		||||
 *
 | 
			
		||||
 *  Inputs:
 | 
			
		||||
 *      0: Header 0x00180000
 | 
			
		||||
 *  Outputs:
 | 
			
		||||
 *      1: Result code
 | 
			
		||||
 *      2: Left framebuffer virtual address for the main screen
 | 
			
		||||
 *      3: Right framebuffer virtual address for the main screen
 | 
			
		||||
 *      4: Main screen framebuffer format
 | 
			
		||||
 *      5: Main screen framebuffer width
 | 
			
		||||
 *      6: Left framebuffer virtual address for the bottom screen
 | 
			
		||||
 *      7: Right framebuffer virtual address for the bottom screen
 | 
			
		||||
 *      8: Bottom screen framebuffer format
 | 
			
		||||
 *      9: Bottom screen framebuffer width
 | 
			
		||||
 */
 | 
			
		||||
static void ImportDisplayCaptureInfo(Service::Interface* self) {
 | 
			
		||||
    u32* cmd_buff = Kernel::GetCommandBuffer();
 | 
			
		||||
    
 | 
			
		||||
    // TODO(Subv): We're always returning the framebuffer structures for thread_id = 0, 
 | 
			
		||||
    // because we only support a single running application at a time.
 | 
			
		||||
    // This should always return the framebuffer data that is currently displayed on the screen.
 | 
			
		||||
 | 
			
		||||
    u32 thread_id = 0;
 | 
			
		||||
 | 
			
		||||
    FrameBufferUpdate* top_screen = GetFrameBufferInfo(thread_id, 0);
 | 
			
		||||
    FrameBufferUpdate* bottom_screen = GetFrameBufferInfo(thread_id, 1);
 | 
			
		||||
 | 
			
		||||
    cmd_buff[2] = top_screen->framebuffer_info[top_screen->index].address_left;
 | 
			
		||||
    cmd_buff[3] = top_screen->framebuffer_info[top_screen->index].address_right;
 | 
			
		||||
    cmd_buff[4] = top_screen->framebuffer_info[top_screen->index].format;
 | 
			
		||||
    cmd_buff[5] = top_screen->framebuffer_info[top_screen->index].stride;
 | 
			
		||||
 | 
			
		||||
    cmd_buff[6] = bottom_screen->framebuffer_info[bottom_screen->index].address_left;
 | 
			
		||||
    cmd_buff[7] = bottom_screen->framebuffer_info[bottom_screen->index].address_right;
 | 
			
		||||
    cmd_buff[8] = bottom_screen->framebuffer_info[bottom_screen->index].format;
 | 
			
		||||
    cmd_buff[9] = bottom_screen->framebuffer_info[bottom_screen->index].stride;
 | 
			
		||||
 | 
			
		||||
    cmd_buff[1] = RESULT_SUCCESS.raw;
 | 
			
		||||
 | 
			
		||||
    LOG_WARNING(Service_GSP, "called");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const Interface::FunctionInfo FunctionTable[] = {
 | 
			
		||||
    {0x00010082, WriteHWRegs,                   "WriteHWRegs"},
 | 
			
		||||
    {0x00020084, WriteHWRegsWithMask,           "WriteHWRegsWithMask"},
 | 
			
		||||
| 
						 | 
				
			
			@ -520,7 +566,7 @@ const Interface::FunctionInfo FunctionTable[] = {
 | 
			
		|||
    {0x00150002, nullptr,                       "TryAcquireRight"},
 | 
			
		||||
    {0x00160042, nullptr,                       "AcquireRight"},
 | 
			
		||||
    {0x00170000, nullptr,                       "ReleaseRight"},
 | 
			
		||||
    {0x00180000, nullptr,                       "ImportDisplayCaptureInfo"},
 | 
			
		||||
    {0x00180000, ImportDisplayCaptureInfo,      "ImportDisplayCaptureInfo"},
 | 
			
		||||
    {0x00190000, nullptr,                       "SaveVramSysArea"},
 | 
			
		||||
    {0x001A0000, nullptr,                       "RestoreVramSysArea"},
 | 
			
		||||
    {0x001B0000, nullptr,                       "ResetGpuCore"},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue