SceDisplay: Difference between revisions
CelesteBlue (talk | contribs) No edit summary |
CelesteBlue (talk | contribs) No edit summary |
||
Line 42: | Line 42: | ||
SCE_DISPLAY_PIXELFORMAT_UNK3 = 0x60000000 | SCE_DISPLAY_PIXELFORMAT_UNK3 = 0x60000000 | ||
} SceDisplayPixelFormat; | } SceDisplayPixelFormat; | ||
typedef struct SceDisplayViewportConf { // size is 0x14 on FW 3.60 | |||
SceSize size; | |||
unsigned int x; | |||
unsigned int y; | |||
unsigned int width; | |||
unsigned int height; | |||
} SceDisplayViewportConf; | |||
/* Update frame buffer base address and pixel format */ | /* Update frame buffer base address and pixel format */ | ||
Line 47: | Line 55: | ||
#define SCE_DISPLAY_UPDATETIMING_NEXTVSYNC 1 | #define SCE_DISPLAY_UPDATETIMING_NEXTVSYNC 1 | ||
typedef struct SceDisplayFrameBuf { // | typedef struct SceDisplayFrameBuf { // size is ?0x18? or 0x1C on FW 3.60 | ||
SceSize size; | SceSize size; | ||
void *base; | void *base; | ||
Line 54: | Line 62: | ||
SceUInt32 width; | SceUInt32 width; | ||
SceUInt32 height; | SceUInt32 height; | ||
SceUInt32 resolution; | |||
} SceDisplayFrameBuf; | } SceDisplayFrameBuf; | ||
typedef struct SceDisplayProcFrameBuf { // size is 0x2C on FW 3.60 | |||
SceSize size; //!< sizeof(SceDisplayProcFrameBuf) | |||
SceUID pid; | |||
unsigned int vblankcount; | |||
uintptr_t paddr; | |||
SceSize fbsize; | |||
void *base; | |||
unsigned int pitch; | |||
SceDisplayPixelFormat pixelformat; | |||
unsigned int width; | |||
unsigned int height; | |||
unsigned int resolution; | |||
} SceDisplayProcFrameBuf; | |||
typedef struct SceDisplayCaptureFrameBuf { // size is 0x18 on FW 3.60 | |||
SceSize size; //!< sizeof(SceDisplayCaptureFrameBuf) | |||
void *base; //!< Pointer to frame buffer | |||
unsigned int pitch; //!< pitch pixels | |||
SceDisplayPixelFormat pixelformat; //!< pixel format (one of ::SceDisplayPixelFormat) | |||
unsigned int width; //!< frame buffer width | |||
unsigned int height; //!< frame buffer height | |||
} SceDisplayCaptureFrameBuf; | |||
typedef enum SceDisplayScreenModeFlag { | typedef enum SceDisplayScreenModeFlag { | ||
Line 77: | Line 109: | ||
} SceDisplayScanMode; | } SceDisplayScanMode; | ||
typedef struct SceDisplayResolutionInfo { | typedef struct SceDisplayResolutionInfo { // size is 0x1C on FW 3.60 | ||
SceSize size; | SceSize size; | ||
SceDisplayScreenMode screenMode; | SceDisplayScreenMode screenMode; | ||
Line 86: | Line 118: | ||
float fps; | float fps; | ||
} SceDisplayResolutionInfo; | } SceDisplayResolutionInfo; | ||
/* SceDisplay internal structures */ | |||
typedef struct SceDisplayPlsFbInfo { // size is 0x44 on FW 3.60 | |||
SceDisplayFrameBuf fb_info; | |||
unsigned int resolution; | |||
uintptr_t paddr; | |||
unsigned int pixelformat; | |||
unsigned int resolution2; | |||
unsigned int vblankcount; | |||
unsigned int fb_set_vblankcount; | |||
unsigned int unk30; | |||
unsigned short src_w; // 0x34, counter | |||
unsigned short src_h; // 0x36, counter | |||
unsigned short dst_x; // 0x38 | |||
unsigned short dst_y; // 0x3A | |||
unsigned int unk3C; | |||
unsigned int unk40; | |||
} SceDisplayPlsFbInfo; | |||
typedef struct SceDisplayPls { // size is 0x1D8 on FW 3.60 | |||
SceDisplayPlsFbInfo fbs[2][2]; | |||
unsigned int unk110; | |||
unsigned int unk114; | |||
unsigned int unk118; | |||
unsigned int unk11C; | |||
unsigned int unk120; | |||
unsigned int unk124; | |||
unsigned int unk128; | |||
unsigned int unk12C; | |||
unsigned int unk130; | |||
unsigned int unk134; | |||
unsigned int unk138; | |||
unsigned int unk13C; | |||
unsigned int unk140; | |||
unsigned int unk144; | |||
unsigned int unk148; | |||
unsigned int unk14C; | |||
unsigned int unk150; | |||
unsigned int unk154; | |||
unsigned int unk158; | |||
unsigned int unk15C; | |||
unsigned int unk160; | |||
unsigned int unk164; | |||
unsigned int unk168; | |||
unsigned int unk16C; | |||
unsigned int unk170; | |||
unsigned int unk174; | |||
unsigned int unk178; | |||
unsigned int unk17C; | |||
unsigned int unk180; | |||
unsigned int unk184; | |||
unsigned int unk188; | |||
unsigned int unk18C; | |||
unsigned int unk190; | |||
unsigned int unk194; | |||
unsigned int vblankcount[2]; | |||
unsigned int unk1A0; | |||
unsigned int unk1A4; | |||
unsigned int unk1A8; | |||
unsigned int unk1AC; | |||
SceUID event; // 0x1B0 | |||
unsigned int fb_dimensions_value; | |||
unsigned int unk1B8; | |||
unsigned int unk1BC; | |||
unsigned int unk1C0; | |||
unsigned int unk1C4; | |||
unsigned int unk1C8; | |||
unsigned int unk1CC; | |||
unsigned int unk1D0; | |||
unsigned int unk1D4; | |||
} SceDisplayPls; | |||
typedef struct SceDisplayFbUnk { // size is 0x20 on FW 3.60 | |||
unsigned int idx; //? | |||
unsigned int bpp; | |||
unsigned int unk08; | |||
unsigned int width; | |||
unsigned int height; | |||
unsigned int unk14; | |||
unsigned int height2; | |||
unsigned int width2; | |||
} SceDisplayFbUnk; | |||
typedef struct SceDisplayFbUnk2 { | |||
unsigned int height; | |||
unsigned int width; | |||
} SceDisplayFbUnk2; | |||
typedef struct SceDisplayFbDataCurFbInfo { // size is 0x20 on FW 3.60 | |||
SceUID pid; // +0x50, +0x70 | |||
void *paddr; // +0x54, +0x74 | |||
unsigned int scaling; // +0x58, +0x78 | |||
float scale; // +0x5C, +0x7C | |||
unsigned int vp_x; // +0x60, +0x80 16.16 | |||
unsigned int vp_y; // +0x64, +0x84 16.16 | |||
unsigned int vp_width; // +0x68, +0x88 16.16 | |||
unsigned int vp_height; // +0x6C, +0x8C 16.16 | |||
} SceDisplayFbDataCurFbInfo; | |||
typedef struct SceDisplayFbData { // size is 0x98 on FW 3.60 | |||
int lock; | |||
unsigned int enabled; | |||
int initialized; | |||
unsigned int vblankcount; | |||
unsigned int cb_event_uid; | |||
unsigned int unk14; | |||
unsigned int pulse_event_value; | |||
unsigned int dsi_bus; | |||
unsigned int plane_idx0; | |||
unsigned int plane_idx1; | |||
unsigned int vic; // VIC or screenMode? | |||
unsigned int dst_width; | |||
unsigned int dst_height; | |||
unsigned int conv_flags; // enable conv? | |||
unsigned int dst_pixelformat; // ex: 0x00002000 (see IFTU Registers) | |||
unsigned int pixelsize; | |||
float refresh_rate; | |||
unsigned int unk44; | |||
unsigned int brightness; // 0x10000 = max | |||
unsigned int invert_colors; | |||
SceDisplayFbDataCurFbInfo fb_set_info[2]; // +0x50 | |||
unsigned int cb_uid; | |||
unsigned int brightness_control_value; | |||
} SceDisplayFbData; | |||
/* | |||
v2 == 0 | |||
LOAD:00C01724 ; SceIftuCscParams stru_C01724 | |||
LOAD:00C01724 stru_C01724 DCD 0 ; unk00 | |||
LOAD:00C01724 DCD 0 ; unk04 | |||
LOAD:00C01724 DCD 0x3FF ; unk08 | |||
LOAD:00C01724 DCD 0 ; unk0C | |||
LOAD:00C01724 DCD 0x3FF ; unk10 | |||
LOAD:00C01724 DCD 0 ; unk14 | |||
LOAD:00C01724 DCD 0x200 ; csc_rr | |||
LOAD:00C01724 DCD 0 ; csc_rg | |||
LOAD:00C01724 DCD 0 ; csc_rb | |||
LOAD:00C01724 DCD 0 ; csc_gr | |||
LOAD:00C01724 DCD 0x200 ; csc_gg | |||
LOAD:00C01724 DCD 0 ; csc_gb | |||
LOAD:00C01724 DCD 0 ; csc_br | |||
LOAD:00C01724 DCD 0 ; csc_bg | |||
LOAD:00C01724 DCD 0x200 ; csc_bb | |||
v2 & 1 | |||
LOAD:00C0180C YCbCr_to_RGB_HDTV_C0180C | |||
LOAD:00C0180C DCD 0x40 ; unk00 | |||
LOAD:00C0180C DCD 0x202 ; unk04 | |||
LOAD:00C0180C DCD 0x3FF ; unk08 | |||
LOAD:00C0180C DCD 0 ; unk0C | |||
LOAD:00C0180C DCD 0 ; unk10 | |||
LOAD:00C0180C DCD 0 ; unk14 | |||
LOAD:00C0180C DCD 0x254 ; csc_rr | |||
LOAD:00C0180C DCD 0 ; csc_rg | |||
LOAD:00C0180C DCD 0x395 ; csc_rb | |||
LOAD:00C0180C DCD 0x254 ; csc_gr | |||
LOAD:00C0180C DCD 0xF93 ; csc_gg | |||
LOAD:00C0180C DCD 0xEF0 ; csc_gb | |||
LOAD:00C0180C DCD 0x254 ; csc_br | |||
LOAD:00C0180C DCD 0x439 ; csc_bg | |||
LOAD:00C0180C DCD 0 ; csc_bb | |||
*/ | |||
</source> | </source> | ||
Line 156: | Line 354: | ||
<source lang="C">int sceDisplayGetFrameBufInternalForDriver(SceDisplayHead head, SceUInt32 fb_idx, SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);</source> | <source lang="C">int sceDisplayGetFrameBufInternalForDriver(SceDisplayHead head, SceUInt32 fb_idx, SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);</source> | ||
=== sceDisplayGetProcFrameBufInternalForDriver === | === sceDisplayGetProcFrameBufInternalForDriver === | ||
Line 185: | Line 363: | ||
|} | |} | ||
Temp name was sceDisplayGetFrameBufInfoForPidForDriver. | |||
<source lang="C"> | <source lang="C"> | ||
Line 192: | Line 370: | ||
* | * | ||
* @param[in] pid - PID of the process to get the framebuffer information from. | * @param[in] pid - PID of the process to get the framebuffer information from. | ||
* It can either be a | * It can either be a valid PID, -1 to use the current configured | ||
* framebuffer for the head and fb_idx, or 0 to use the PID of the caller. | * framebuffer for the head and fb_idx, or 0 to use the PID of the caller. | ||
* @param[in] head - One of SceDisplayHead values | * @param[in] head - One of SceDisplayHead values | ||
Line 203: | Line 381: | ||
int sceDisplayGetProcFrameBufInternalForDriver(SceUID pid, SceDisplayHead head, SceUInt32 fb_idx, SceDisplayProcFrameBuf *pProcFrameBuf); | int sceDisplayGetProcFrameBufInternalForDriver(SceUID pid, SceDisplayHead head, SceUInt32 fb_idx, SceDisplayProcFrameBuf *pProcFrameBuf); | ||
</source> | </source> | ||
=== sceDisplaySetFrameBufForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x289D82FE | |||
|} | |||
<source lang="C">int sceDisplaySetFrameBufForDriver(const SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);</source> | |||
=== sceDisplaySetFrameBufInternalForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x16466675 | |||
|} | |||
<source lang="C">int sceDisplaySetFrameBufInternalForDriver(SceDisplayHead head, SceUInt32 fb_idx, const SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);</source> | |||
=== sceDisplayGetMaximumFrameBufResolutionForDriver === | === sceDisplayGetMaximumFrameBufResolutionForDriver === | ||
Line 368: | Line 566: | ||
| 3.60 || 0xFA7CE579 | | 3.60 || 0xFA7CE579 | ||
|} | |} | ||
=== sceDisplayRegisterVblankStartCallbackForDriver === | === sceDisplayRegisterVblankStartCallbackForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 392: | Line 590: | ||
| 3.60 || 0x4B27191F | | 3.60 || 0x4B27191F | ||
|} | |} | ||
=== sceDisplayUnregisterVblankStartCallbackInternalForDriver === | === sceDisplayUnregisterVblankStartCallbackInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 401: | Line 599: | ||
|} | |} | ||
=== sceDisplayWaitSetFrameBufForDriver === | === sceDisplayWaitSetFrameBufForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 424: | Line 606: | ||
| 3.60 || 0x1C0C9C4A | | 3.60 || 0x1C0C9C4A | ||
|} | |} | ||
<source lang="C">SceInt32 sceDisplayWaitSetFrameBufForDriver(void);</source> | |||
=== sceDisplayWaitSetFrameBufInternalForDriver === | === sceDisplayWaitSetFrameBufInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 433: | Line 617: | ||
|} | |} | ||
=== | === sceDisplayWaitSetFrameBufCBForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x9D7F203C | ||
|} | |} | ||
=== | === sceDisplayWaitSetFrameBufCBInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x35466D63 | ||
|} | |} | ||
=== sceDisplayWaitSetFrameBufMultiForDriver === | === sceDisplayWaitSetFrameBufMultiForDriver === | ||
Line 455: | Line 639: | ||
|- | |- | ||
| 3.60 || 0xE6D27E0A | | 3.60 || 0xE6D27E0A | ||
|} | |} | ||
=== sceDisplayWaitSetFrameBufMultiInternalForDriver === | === sceDisplayWaitSetFrameBufMultiInternalForDriver === | ||
Line 463: | Line 647: | ||
|- | |- | ||
| 3.60 || 0xF83C95B1 | | 3.60 || 0xF83C95B1 | ||
|} | |} | ||
=== | === sceDisplayWaitSetFrameBufMultiCBForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x863EACBE | ||
|} | |} | ||
=== | === sceDisplayWaitSetFrameBufMultiCBInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x6DC8F0F5 | ||
|} | |} | ||
Line 497: | Line 681: | ||
|} | |} | ||
=== | === sceDisplayWaitVblankStartCBForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x46F186C3 | ||
|} | |} | ||
=== | === sceDisplayWaitVblankStartCBInternalForDriver === | ||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
! Version !! NID | ! Version !! NID | ||
|- | |- | ||
| 3.60 || | | 3.60 || 0x8F3C0E19 | ||
|} | |} | ||
Line 527: | Line 711: | ||
|- | |- | ||
| 3.60 || 0x32287576 | | 3.60 || 0x32287576 | ||
|} | |||
=== sceDisplayWaitVblankStartMultiCBForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x77ED8B3A | |||
|} | |||
=== sceDisplayWaitVblankStartMultiCBInternalForDriver === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 3.60 || 0x61421AAF | |||
|} | |} | ||
Line 834: | Line 1,034: | ||
*/ | */ | ||
SceInt32 sceDisplayUnregisterVblankStartCallback(SceUID uid); | SceInt32 sceDisplayUnregisterVblankStartCallback(SceUID uid); | ||
</source> | |||
=== sceDisplayWaitSetFrameBuf === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0x9423560C | |||
|} | |||
<source lang="C"> | |||
/* | |||
Wait for start of VBLANK interval from the last update of frame buffer. | |||
This function places the thread in WAIT state until the start of the next VBLANK interval taking the last update of the display frame buffer performed with sceDisplaySetFrameBuf() function as the starting point. | |||
Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval taking the thread on which the display frame buffer was updated with the sceDisplaySetFrameBuf() function as the starting point. | |||
In the state in which the frame buffer update has been registered with the sceDisplaySetFrameBuf() function, if sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() is called after the start timing of the next VBLANK has elapsed, the thread will not enter WAIT state and will return because the frame buffer has been already updated. In this case, the phase in which the thread returns from this function is undefined in the VSYNC cycles. | |||
The sceDisplayWaitSetFrameBuf() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufCB() function. | |||
*/ | |||
SceInt32 sceDisplayWaitSetFrameBuf(void); | |||
</source> | |||
=== sceDisplayWaitSetFrameBufCB === | |||
{| class="wikitable" | |||
|- | |||
! Version !! NID | |||
|- | |||
| 1.69-3.60 || 0x814C90AF | |||
|} | |||
<source lang="C"> | |||
/* | |||
Wait for start of VBLANK interval from the last update of frame buffer. | |||
This function places the thread in WAIT state until the start of the next VBLANK interval taking the last update of the display frame buffer performed with sceDisplaySetFrameBuf() function as the starting point. | |||
Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval taking the thread on which the display frame buffer was updated with the sceDisplaySetFrameBuf() function as the starting point. | |||
In the state in which the frame buffer update has been registered with the sceDisplaySetFrameBuf() function, if sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() is called after the start timing of the next VBLANK has elapsed, the thread will not enter WAIT state and will return because the frame buffer has been already updated. In this case, the phase in which the thread returns from this function is undefined in the VSYNC cycles. | |||
The sceDisplayWaitSetFrameBuf() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufCB() function. | |||
*/ | |||
SceInt32 sceDisplayWaitSetFrameBufCB(void); | |||
</source> | </source> | ||
Line 894: | Line 1,132: | ||
*/ | */ | ||
SceInt32 sceDisplayWaitSetFrameBufMultiCB(SceUInt32 uiVcount); | SceInt32 sceDisplayWaitSetFrameBufMultiCB(SceUInt32 uiVcount); | ||
</source> | </source> | ||
Revision as of 08:19, 10 April 2020
This module handles management of the framebuffers. It uses various display drivers (OLED, HDMI, LCD) as well as drivers to control DMA and other low level details. Embedded in this module is also the boot logo (the PS logo seen on boot) which is gzipped. On module_start, after setting up the drivers, it gunzips the logo into the SceCamera SRAM (which is unused at this time since camera is not enabled yet). Then it sets the framebuffer to the camera SRAM and turns the brightness up in incremental levels.
Module
Known NIDs
Version | Name | World | Privilege | NID |
---|---|---|---|---|
1.69 | SceDisplay | Non-secure | Kernel | 0xA7D4F77A |
3.60 | SceDisplay | Non-secure | Kernel | 0x3F05296F |
Libraries
Known NIDs
Version | Name | World | Visibility | NID |
---|---|---|---|---|
1.69-3.60 | SceDisplayForDriver | Non-secure | Kernel | 0x9FED47AC |
1.69-3.60 | SceDisplay | Non-secure | User | 0x5ED8F994 |
Types
typedef enum SceDisplayHead { SCE_DISPLAY_HEAD_MAIN_LCD_OLED = 0, SCE_DISPLAY_HEAD_HDMI = 1, SCE_DISPLAY_HEAD_SUB_LCD = 2 } SceDisplayHead; typedef enum SceDisplayPixelFormat { SCE_DISPLAY_PIXELFORMAT_A8B8G8R8 = 0x00000000, SCE_DISPLAY_PIXELFORMAT_UNK0 = 0x00008000, SCE_DISPLAY_PIXELFORMAT_UNK1 = 0x00100000, SCE_DISPLAY_PIXELFORMAT_UNK2 = 0x00800000, SCE_DISPLAY_PIXELFORMAT_UNK3 = 0x60000000 } SceDisplayPixelFormat; typedef struct SceDisplayViewportConf { // size is 0x14 on FW 3.60 SceSize size; unsigned int x; unsigned int y; unsigned int width; unsigned int height; } SceDisplayViewportConf; /* Update frame buffer base address and pixel format */ #define SCE_DISPLAY_UPDATETIMING_NEXTHSYNC 0 #define SCE_DISPLAY_UPDATETIMING_NEXTVSYNC 1 typedef struct SceDisplayFrameBuf { // size is ?0x18? or 0x1C on FW 3.60 SceSize size; void *base; SceUInt32 pitch; SceDisplayPixelFormat pixelformat; SceUInt32 width; SceUInt32 height; SceUInt32 resolution; } SceDisplayFrameBuf; typedef struct SceDisplayProcFrameBuf { // size is 0x2C on FW 3.60 SceSize size; //!< sizeof(SceDisplayProcFrameBuf) SceUID pid; unsigned int vblankcount; uintptr_t paddr; SceSize fbsize; void *base; unsigned int pitch; SceDisplayPixelFormat pixelformat; unsigned int width; unsigned int height; unsigned int resolution; } SceDisplayProcFrameBuf; typedef struct SceDisplayCaptureFrameBuf { // size is 0x18 on FW 3.60 SceSize size; //!< sizeof(SceDisplayCaptureFrameBuf) void *base; //!< Pointer to frame buffer unsigned int pitch; //!< pitch pixels SceDisplayPixelFormat pixelformat; //!< pixel format (one of ::SceDisplayPixelFormat) unsigned int width; //!< frame buffer width unsigned int height; //!< frame buffer height } SceDisplayCaptureFrameBuf; typedef enum SceDisplayScreenModeFlag { SCE_DISPLAY_SCREENMODE_FLAG_60_HTZ = 0x0000, SCE_DISPLAY_SCREENMODE_FLAG_UNK_10 = 0x0010, SCE_DISPLAY_SCREENMODE_FLAG_24_HTZ = 0x0020, SCE_DISPLAY_SCREENMODE_FLAG_UNK_40 = 0x0040, SCE_DISPLAY_SCREENMODE_FLAG_50_HTZ = 0x0080, SCE_DISPLAY_SCREENMODE_FLAG_480P = 0x0300, SCE_DISPLAY_SCREENMODE_FLAG_576P = 0x0400, SCE_DISPLAY_SCREENMODE_FLAG_1080I = 0x0500, SCE_DISPLAY_SCREENMODE_FLAG_720P = 0x0600, SCE_DISPLAY_SCREENMODE_FLAG_1080P = 0x0700, SCE_DISPLAY_SCREENMODE_FLAG_UNK_8000 = 0x8000 // Maybe standard mode. Custom PSVita oled sizes don't have this flag. } SceDisplayScreenModeFlag; typedef SceUInt32 SceDisplayScreenMode; typedef enum SceDisplayScanMode { SCE_DISPLAY_SCANMODE_PROGRESSIVE = 0, SCE_DISPLAY_SCANMODE_INTERLACED = 1 } SceDisplayScanMode; typedef struct SceDisplayResolutionInfo { // size is 0x1C on FW 3.60 SceSize size; SceDisplayScreenMode screenMode; SceUInt32 width; SceUInt32 height; SceDisplayPixelFormat pixelformat; SceDisplayScanMode scanMode; float fps; } SceDisplayResolutionInfo; /* SceDisplay internal structures */ typedef struct SceDisplayPlsFbInfo { // size is 0x44 on FW 3.60 SceDisplayFrameBuf fb_info; unsigned int resolution; uintptr_t paddr; unsigned int pixelformat; unsigned int resolution2; unsigned int vblankcount; unsigned int fb_set_vblankcount; unsigned int unk30; unsigned short src_w; // 0x34, counter unsigned short src_h; // 0x36, counter unsigned short dst_x; // 0x38 unsigned short dst_y; // 0x3A unsigned int unk3C; unsigned int unk40; } SceDisplayPlsFbInfo; typedef struct SceDisplayPls { // size is 0x1D8 on FW 3.60 SceDisplayPlsFbInfo fbs[2][2]; unsigned int unk110; unsigned int unk114; unsigned int unk118; unsigned int unk11C; unsigned int unk120; unsigned int unk124; unsigned int unk128; unsigned int unk12C; unsigned int unk130; unsigned int unk134; unsigned int unk138; unsigned int unk13C; unsigned int unk140; unsigned int unk144; unsigned int unk148; unsigned int unk14C; unsigned int unk150; unsigned int unk154; unsigned int unk158; unsigned int unk15C; unsigned int unk160; unsigned int unk164; unsigned int unk168; unsigned int unk16C; unsigned int unk170; unsigned int unk174; unsigned int unk178; unsigned int unk17C; unsigned int unk180; unsigned int unk184; unsigned int unk188; unsigned int unk18C; unsigned int unk190; unsigned int unk194; unsigned int vblankcount[2]; unsigned int unk1A0; unsigned int unk1A4; unsigned int unk1A8; unsigned int unk1AC; SceUID event; // 0x1B0 unsigned int fb_dimensions_value; unsigned int unk1B8; unsigned int unk1BC; unsigned int unk1C0; unsigned int unk1C4; unsigned int unk1C8; unsigned int unk1CC; unsigned int unk1D0; unsigned int unk1D4; } SceDisplayPls; typedef struct SceDisplayFbUnk { // size is 0x20 on FW 3.60 unsigned int idx; //? unsigned int bpp; unsigned int unk08; unsigned int width; unsigned int height; unsigned int unk14; unsigned int height2; unsigned int width2; } SceDisplayFbUnk; typedef struct SceDisplayFbUnk2 { unsigned int height; unsigned int width; } SceDisplayFbUnk2; typedef struct SceDisplayFbDataCurFbInfo { // size is 0x20 on FW 3.60 SceUID pid; // +0x50, +0x70 void *paddr; // +0x54, +0x74 unsigned int scaling; // +0x58, +0x78 float scale; // +0x5C, +0x7C unsigned int vp_x; // +0x60, +0x80 16.16 unsigned int vp_y; // +0x64, +0x84 16.16 unsigned int vp_width; // +0x68, +0x88 16.16 unsigned int vp_height; // +0x6C, +0x8C 16.16 } SceDisplayFbDataCurFbInfo; typedef struct SceDisplayFbData { // size is 0x98 on FW 3.60 int lock; unsigned int enabled; int initialized; unsigned int vblankcount; unsigned int cb_event_uid; unsigned int unk14; unsigned int pulse_event_value; unsigned int dsi_bus; unsigned int plane_idx0; unsigned int plane_idx1; unsigned int vic; // VIC or screenMode? unsigned int dst_width; unsigned int dst_height; unsigned int conv_flags; // enable conv? unsigned int dst_pixelformat; // ex: 0x00002000 (see IFTU Registers) unsigned int pixelsize; float refresh_rate; unsigned int unk44; unsigned int brightness; // 0x10000 = max unsigned int invert_colors; SceDisplayFbDataCurFbInfo fb_set_info[2]; // +0x50 unsigned int cb_uid; unsigned int brightness_control_value; } SceDisplayFbData; /* v2 == 0 LOAD:00C01724 ; SceIftuCscParams stru_C01724 LOAD:00C01724 stru_C01724 DCD 0 ; unk00 LOAD:00C01724 DCD 0 ; unk04 LOAD:00C01724 DCD 0x3FF ; unk08 LOAD:00C01724 DCD 0 ; unk0C LOAD:00C01724 DCD 0x3FF ; unk10 LOAD:00C01724 DCD 0 ; unk14 LOAD:00C01724 DCD 0x200 ; csc_rr LOAD:00C01724 DCD 0 ; csc_rg LOAD:00C01724 DCD 0 ; csc_rb LOAD:00C01724 DCD 0 ; csc_gr LOAD:00C01724 DCD 0x200 ; csc_gg LOAD:00C01724 DCD 0 ; csc_gb LOAD:00C01724 DCD 0 ; csc_br LOAD:00C01724 DCD 0 ; csc_bg LOAD:00C01724 DCD 0x200 ; csc_bb v2 & 1 LOAD:00C0180C YCbCr_to_RGB_HDTV_C0180C LOAD:00C0180C DCD 0x40 ; unk00 LOAD:00C0180C DCD 0x202 ; unk04 LOAD:00C0180C DCD 0x3FF ; unk08 LOAD:00C0180C DCD 0 ; unk0C LOAD:00C0180C DCD 0 ; unk10 LOAD:00C0180C DCD 0 ; unk14 LOAD:00C0180C DCD 0x254 ; csc_rr LOAD:00C0180C DCD 0 ; csc_rg LOAD:00C0180C DCD 0x395 ; csc_rb LOAD:00C0180C DCD 0x254 ; csc_gr LOAD:00C0180C DCD 0xF93 ; csc_gg LOAD:00C0180C DCD 0xEF0 ; csc_gb LOAD:00C0180C DCD 0x254 ; csc_br LOAD:00C0180C DCD 0x439 ; csc_bg LOAD:00C0180C DCD 0 ; csc_bb */
SceDisplayForDriver
NIDs in this library are calculated as SHA1 so they can be bruteforced.
sceDisplayGetPrimaryHeadForDriver
Version | NID |
---|---|
0.940 | not present |
3.60 | 0xC8E554C5 |
SceDisplayHead sceDisplayGetPrimaryHeadForDriver(void);
sceDisplayEnableHeadForDriver
Version | NID |
---|---|
0.940-3.60 | 0x496032D6 |
int sceDisplayEnableHeadForDriver(SceDisplayHead head);
sceDisplayDisableHeadForDriver
Version | NID |
---|---|
0.940-3.60 | 0x43347565 |
int sceDisplayDisableHeadForDriver(SceDisplayHead head);
sceDisplayGetFrameBufForDriver
Version | NID |
---|---|
3.60 | 0xEEDA2E54 |
/** * Get current framebuffer parameters * * @param[inout] pFrameBuf - Pointer of the frame buffer * * @param[in] fb_idx - Index of frame buffer * * @param[in] iUpdateTimingMode - Specification of frame buffer start address update timing * * @return 0 on success, < 0 on error. */ int sceDisplayGetFrameBufForDriver(SceDisplayFrameBuf *pFrameBuf, SceUInt32 fb_idx, SceInt32 iUpdateTimingMode);
sceDisplayGetFrameBufInternalForDriver
Version | NID |
---|---|
3.60 | 0x19F94C63 |
int sceDisplayGetFrameBufInternalForDriver(SceDisplayHead head, SceUInt32 fb_idx, SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);
sceDisplayGetProcFrameBufInternalForDriver
Version | NID |
---|---|
3.60 | 0x3BC165EF |
Temp name was sceDisplayGetFrameBufInfoForPidForDriver.
/** * Get the configured framebuffer information of a head and its framebuffer index for a PID * * @param[in] pid - PID of the process to get the framebuffer information from. * It can either be a valid PID, -1 to use the current configured * framebuffer for the head and fb_idx, or 0 to use the PID of the caller. * @param[in] head - One of SceDisplayHead values * @param[in] fb_idx - Can be 0 or 1 * @param[inout] pProcFrameBuf - Pointer to a ::SceDisplayProcFrameBuf structure * which will receive the framebuffer information. * * @return 0 on success, < 0 on error. */ int sceDisplayGetProcFrameBufInternalForDriver(SceUID pid, SceDisplayHead head, SceUInt32 fb_idx, SceDisplayProcFrameBuf *pProcFrameBuf);
sceDisplaySetFrameBufForDriver
Version | NID |
---|---|
3.60 | 0x289D82FE |
int sceDisplaySetFrameBufForDriver(const SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);
sceDisplaySetFrameBufInternalForDriver
Version | NID |
---|---|
3.60 | 0x16466675 |
int sceDisplaySetFrameBufInternalForDriver(SceDisplayHead head, SceUInt32 fb_idx, const SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode);
sceDisplayGetMaximumFrameBufResolutionForDriver
Version | NID |
---|---|
3.60 | 0x5AFE6CD3 |
int sceDisplayGetMaximumFrameBufResolutionForDriver(SceUInt32 *pWidth, SceUInt32 *pHeight);
sceDisplayGetRefreshRateInternalForDriver
Version | NID |
---|---|
3.60 | 0x7911958E |
/* Get number of frames per second and scanMode. This function obtains the theoretical number of frames per second in the current screen mode. The number of frames per second on the screen (touchscreen) is NTSC-compatible 59.94005994... Hz. Note that sceDisplayGetRefreshRateInternalForDriver() function returns a theoretical value, and that some error may be present relative to the actual time. head The target head pFps Pointer of type float * to obtain the number of frames per second pScanMode Pointer of type SceDisplayScanMode * to obtain the scan mode If an error occurs, a negative value is returned. */ SceInt32 sceDisplayGetRefreshRateInternalForDriver(SceDisplayHead head, float *pFps, SceDisplayScanMode *pScanMode);
sceDisplayGetResolutionInfoInternalForDriver
Version | NID |
---|---|
3.60 | 0xB3C6D647 |
int sceDisplayGetResolutionInfoInternalForDriver(SceDisplayHead head, SceDisplayResolutionInfo *pInfo);
sceDisplayGetVcountInternalForDriver
Version | NID |
---|---|
3.60 | 0x8B5DA27B |
/* Get number of VSYNCs for a head. This function returns the value in which each VSYNC during free running is counted. It increases by 1 at every frame. A wrap-around occurs at 16 bits. */ SceUInt32 sceDisplayGetVcountInternalForDriver(SceDisplayHead head);
sceDisplaySetInvertColorsForDriver
Version | NID |
---|---|
3.60 | 0x19140ACD |
sceDisplayGetOutputModeForDriver
Version | NID |
---|---|
0.940-3.60 | 0xD2CED235 |
int sceDisplayGetOutputModeForDriver(SceDisplayHead head, SceDisplayScreenMode *pScreenMode, SceDisplayPixelFormat *pPixelformat);
sceDisplaySetOutputModeForDriver
Version | NID |
---|---|
0.940-3.60 | 0xAF5EE5BE |
int sceDisplaySetOutputModeForDriver(SceDisplayHead head, SceDisplayScreenMode screenMode, SceDisplayPixelFormat pixelformat);
sceDisplaySetScaleConfForDriver
Version | NID |
---|---|
3.60 | 0xEB390A76 |
// scale must be between 0.80000001 and 1.20000005 int sceDisplaySetScaleConfForDriver(float scale, SceDisplayHead head, SceUInt32 fb_idx, int a4);
sceDisplaySetMergeConfForDriver
Version | NID |
---|---|
3.60 | 0x6B198052 |
sceDisplayGetActualViewportConfForDriver
Version | NID |
---|---|
3.60 | 0x40ACFE51 |
sceDisplaySetViewportConfForDriver
Version | NID |
---|---|
3.60 | 0xEE5EB52D |
sceDisplayGetDeviceTypeForDriver
Version | NID |
---|---|
3.60 | 0x8D9A1CCE |
sceDisplaySetBrightnessForDriver
Version | NID |
---|---|
3.60 | 0x9E3C6DC6 |
sceDisplaySetColorSpaceModeForDriver
Version | NID |
---|---|
3.60 | 0x8D79D187 |
sceDisplayRegisterFrameBufCallbackForDriver
Version | NID |
---|---|
3.60 | 0x6E22990E |
sceDisplayRegisterFrameBufCallbackInternalForDriver
Version | NID |
---|---|
3.60 | 0xFA7CE579 |
sceDisplayRegisterVblankStartCallbackForDriver
Version | NID |
---|---|
3.60 | 0x7FB0BD28 |
sceDisplayRegisterVblankStartCallbackInternalForDriver
Version | NID |
---|---|
3.60 | 0x4AE2A2B1 |
sceDisplayUnregisterVblankStartCallbackForDriver
Version | NID |
---|---|
3.60 | 0x4B27191F |
sceDisplayUnregisterVblankStartCallbackInternalForDriver
Version | NID |
---|---|
3.60 | 0xB027433E |
sceDisplayWaitSetFrameBufForDriver
Version | NID |
---|---|
3.60 | 0x1C0C9C4A |
SceInt32 sceDisplayWaitSetFrameBufForDriver(void);
sceDisplayWaitSetFrameBufInternalForDriver
Version | NID |
---|---|
0.940-3.60 | 0x12A77662 |
sceDisplayWaitSetFrameBufCBForDriver
Version | NID |
---|---|
3.60 | 0x9D7F203C |
sceDisplayWaitSetFrameBufCBInternalForDriver
Version | NID |
---|---|
3.60 | 0x35466D63 |
sceDisplayWaitSetFrameBufMultiForDriver
Version | NID |
---|---|
3.60 | 0xE6D27E0A |
sceDisplayWaitSetFrameBufMultiInternalForDriver
Version | NID |
---|---|
3.60 | 0xF83C95B1 |
sceDisplayWaitSetFrameBufMultiCBForDriver
Version | NID |
---|---|
3.60 | 0x863EACBE |
sceDisplayWaitSetFrameBufMultiCBInternalForDriver
Version | NID |
---|---|
3.60 | 0x6DC8F0F5 |
sceDisplayWaitVblankStartForDriver
Version | NID |
---|---|
3.60 | 0x984C27E7 |
sceDisplayWaitVblankStartInternalForDriver
Version | NID |
---|---|
3.60 | 0xB80CA224 |
sceDisplayWaitVblankStartCBForDriver
Version | NID |
---|---|
3.60 | 0x46F186C3 |
sceDisplayWaitVblankStartCBInternalForDriver
Version | NID |
---|---|
3.60 | 0x8F3C0E19 |
sceDisplayWaitVblankStartMultiForDriver
Version | NID |
---|---|
3.60 | 0x40F1469C |
sceDisplayWaitVblankStartMultiInternalForDriver
Version | NID |
---|---|
3.60 | 0x32287576 |
sceDisplayWaitVblankStartMultiCBForDriver
Version | NID |
---|---|
3.60 | 0x77ED8B3A |
sceDisplayWaitVblankStartMultiCBInternalForDriver
Version | NID |
---|---|
3.60 | 0x61421AAF |
SceDisplayForDriver_unk_086DEFB6
Version | NID |
---|---|
3.60 | 0x086DEFB6 |
used in SceGpuEs4
SceDisplayForDriver_unk_332C5410
Version | NID |
---|---|
3.60 | 0x332C5410 |
used in SceCompat
in SceCompatLcdc
interrupt handler
SceDisplayForDriver_unk_3D95D478
Version | NID |
---|---|
3.60 | 0x3D95D478 |
sceDisplayCaptureFrameBufDMACForDriver
Version | NID |
---|---|
3.60 | 0xF116D0B4 |
sceDisplayCaptureFrameBufIFTUForDriver
Version | NID |
---|---|
3.60 | 0xB0CED8BC |
sceDisplayCaptureFrameBufDMACInternalForDriver
Version | NID |
---|---|
3.60 | 0x707EEE2E |
used in SceAppMgr
used in sceAppMgrCaptureFrameBufDMACByAppId
together with sceDisplayGetPrimaryHeadForDriver
sceDisplayCaptureFrameBufIFTUInternalForDriver
Version | NID |
---|---|
3.60 | 0xD4C812E5 |
used in SceAppMgr
used in sceAppMgrCaptureFrameBufIFTUByAppId
together with sceDisplayGetPrimaryHeadForDriver
sceDisplaySetOwnerForDriver
Version | NID |
---|---|
3.60 | 0xB54962A1 |
used in SceAppMgr
SceDisplayForDriver_unk_BC76296A
Version | NID |
---|---|
3.60 | 0xBC76296A |
used in SceAppMgr
SceDisplayForDriver_311BF561
Version | NID |
---|---|
0.940 | 0x311BF561 |
3.60 | not present |
Wrapper for SceIftuForDriver_0FCBF457.
SceDisplay
sceDisplayGetPrimaryHead
Version | NID |
---|---|
3.60 | 0x7178FADA |
SceDisplayHead sceDisplayGetPrimaryHead(void);
_sceDisplayGetFrameBuf
Version | NID |
---|---|
1.69-3.60 | 0xA753B0CA |
// Structure to check typedef struct SceDisplayGetFrameBufOpt { SceInt32 iUpdateTimingMode; SceSize frameBufSize; } SceDisplayGetFrameBufOpt; int _sceDisplayGetFrameBuf(SceDisplayFrameBuf *pFrameBuf, SceUInt32 fb_idx, SceDisplayGetFrameBufOpt *pOpt);
_sceDisplayGetFrameBufInternal
Version | NID |
---|---|
1.69-3.60 | 0x86A8E436 |
typedef struct SceDisplayGetFrameBufInternalOpt { SceInt32 iUpdateTimingMode; SceSize frameBufSize; } SceDisplayGetFrameBufInternalOpt; int _sceDisplayGetFrameBuf(SceDisplayHead head, SceUInt32 fb_idx, SceDisplayFrameBuf *pFrameBuf, SceDisplayGetFrameBufInternalOpt *pOpt);
_sceDisplaySetFrameBuf
Version | NID |
---|---|
1.69-3.60 | 0xF51523CB |
typedef struct SceDisplaySetFrameBufOpt { SceSize frameBufSize; } SceDisplaySetFrameBufOpt; int _sceDisplaySetFrameBuf(const SceDisplayFrameBuf *pFrameBuf, SceInt32 iUpdateTimingMode, SceDisplaySetFrameBufInternalOpt *pOpt);
_sceDisplaySetFrameBufInternal
Version | NID |
---|---|
1.69-3.60 | 0x7A8CB78E |
typedef struct SceDisplaySetFrameBufInternalOpt { SceInt32 iUpdateTimingMode; SceSize frameBufSize; } SceDisplaySetFrameBufInternalOpt; // fb_idx: 0 for game/apps and 1 for LiveArea (including HOME and PS overlays) int _sceDisplaySetFrameBufInternal(SceDisplayHead head, SceUInt32 fb_idx, const SceDisplayFrameBuf *pFrameBuf, SceDisplaySetFrameBufInternalOpt *pOpt);
_sceDisplaySetFrameBufForCompat
Version | NID |
---|---|
3.60 | 0x45BCB941 |
_sceDisplayGetMaximumFrameBufResolution
Version | NID |
---|---|
3.60 | 0x2EBFC7CB |
int _sceDisplayGetMaximumFrameBufResolution(SceUInt32 *width, SceUInt32 *height);
_sceDisplayGetResolutionInfoInternal
Version | NID |
---|---|
3.60 | 0xFEFEB240 |
int _sceDisplayGetResolutionInfoInternal(SceDisplayHead head, SceDisplayResolutionInfo *pInfo, SceSize infoSize);
sceDisplayGetRefreshRate
Version | NID |
---|---|
0.940-3.60 | 0xA08CA60D |
Old SDK name was sceDisplayGetFramePerSec.
/* Get number of frames per second. This function obtains the theoretical number of frames per second in the current screen mode. The number of frames per second on the screen (touchscreen) is NTSC-compatible 59.94005994... Hz. Note that sceDisplayGetRefreshRate() function returns a theoretical value, and that some error may be present relative to the actual time. pFps Pointer of type float * to obtain the number of frames per second If an error occurs, a negative value is returned. */ SceInt32 sceDisplayGetRefreshRate(float *pFps);
sceDisplayGetVcountInternal
Version | NID |
---|---|
1.69-3.60 | 0x9686859E |
/* Get number of VSYNCs for a head. This function returns the value in which each VSYNC during free running is counted. It increases by 1 at every frame. A wrap-around occurs at 16 bits. */ SceUInt32 sceDisplayGetVcountInternal(SceDisplayHead head);
sceDisplayGetVcount
Version | NID |
---|---|
1.69-3.60 | 0xB6FDE0BA |
/* Get number of VSYNCs. This function returns the value in which each VSYNC during free running is counted. It increases by 1 at every frame. A wrap-around occurs at 16 bits. */ SceUInt32 sceDisplayGetVcount(void);
sceDisplayRegisterVblankStartCallback
Version | NID |
---|---|
1.69-3.60 | 0x6BDF4C4D |
SceInt32 vblankcallback(SceUID notifyId, SceInt32 notifyCount, SceInt32 notifyArg, void *pCommon); /* Register VBLANK callback function. This function sets the callback function to be called at the each start of VBLANK. By registering with the sceDisplayRegisterVblankStartCallback() function the SceUID of the callback created with the sceKernelCreateCallback() function, the callback is notified at each VBLANK start. The callback function is actually called when the thread that has created the callback is placed in WAIT state by a wait function with "CB" at the end of the function name. uid Callback SceUID */ SceInt32 sceDisplayRegisterVblankStartCallback(SceUID uid);
sceDisplayUnregisterVblankStartCallback
Version | NID |
---|---|
1.69-3.60 | 0x98436A80 |
/* Unregister VBLANK callback. This function unregisters the callback notified at each start of VBLANK. Please unregister the callback function first if you wish to delete the callback function with sceKernelDeleteCallback(). uid Callback SceUID */ SceInt32 sceDisplayUnregisterVblankStartCallback(SceUID uid);
sceDisplayWaitSetFrameBuf
Version | NID |
---|---|
1.69-3.60 | 0x9423560C |
/* Wait for start of VBLANK interval from the last update of frame buffer. This function places the thread in WAIT state until the start of the next VBLANK interval taking the last update of the display frame buffer performed with sceDisplaySetFrameBuf() function as the starting point. Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval taking the thread on which the display frame buffer was updated with the sceDisplaySetFrameBuf() function as the starting point. In the state in which the frame buffer update has been registered with the sceDisplaySetFrameBuf() function, if sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() is called after the start timing of the next VBLANK has elapsed, the thread will not enter WAIT state and will return because the frame buffer has been already updated. In this case, the phase in which the thread returns from this function is undefined in the VSYNC cycles. The sceDisplayWaitSetFrameBuf() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufCB() function. */ SceInt32 sceDisplayWaitSetFrameBuf(void);
sceDisplayWaitSetFrameBufCB
Version | NID |
---|---|
1.69-3.60 | 0x814C90AF |
/* Wait for start of VBLANK interval from the last update of frame buffer. This function places the thread in WAIT state until the start of the next VBLANK interval taking the last update of the display frame buffer performed with sceDisplaySetFrameBuf() function as the starting point. Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval taking the thread on which the display frame buffer was updated with the sceDisplaySetFrameBuf() function as the starting point. In the state in which the frame buffer update has been registered with the sceDisplaySetFrameBuf() function, if sceDisplayWaitSetFrameBuf() or sceDisplayWaitSetFrameBufCB() is called after the start timing of the next VBLANK has elapsed, the thread will not enter WAIT state and will return because the frame buffer has been already updated. In this case, the phase in which the thread returns from this function is undefined in the VSYNC cycles. The sceDisplayWaitSetFrameBuf() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufCB() function. */ SceInt32 sceDisplayWaitSetFrameBufCB(void);
sceDisplayWaitSetFrameBufMulti
Version | NID |
---|---|
1.69-3.60 | 0x7D9864A8 |
/* Wait for start of multiple VBLANK intervals from the last update of frame buffer. This function places the thread in WAIT state until the start of the next VBLANK, after the specified number of VSYNCs has elapsed, taking the last update of the display frame buffer performed with the sceDisplaySetFrameBuf() function as the starting point. The sceDisplayWaitSetFrameBufMulti() and sceDisplayWaitSetFrameBufMultiCB() functions make the thread wait until the next VBLANK after the specified number of VSYNCs have elapsed as determined from the VSYNC count that the last frame buffer update was performed. For example, if the sceDisplayWaitSetFrameBufMulti() function is called with 2 specified for uiVcount, and no VSYNCs have elapsed since the last update of the frame buffer, the thread will wait until the start of the second VBLANK. If one VSYNC has elapsed since the last update of the frame buffer, the thread will wait until the start of the next VBLANK. If two or more VSYNCs have elapsed since the last update of the frame buffer, the thread will not perform any wait operations. If the function is called with 1 specified for uiVcount, the same operations as sceDisplayWaitSetFrameBuf() and sceDisplayWaitSetFrameBufCB() will be performed. The sceDisplayWaitSetFrameBufMulti() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufMultiCB() function. uiVcount Number of VSYNC cycles to wait for (1 to 65535) */ SceInt32 sceDisplayWaitSetFrameBufMulti(SceUInt32 uiVcount);
sceDisplayWaitSetFrameBufMultiCB
Version | NID |
---|---|
1.69-3.60 | 0x3E796EF5 |
/* Wait for start of multiple VBLANK intervals from the last update of frame buffer. This function places the thread in WAIT state until the start of the next VBLANK, after the specified number of VSYNCs has elapsed, taking the last update of the display frame buffer performed with the sceDisplaySetFrameBuf() function as the starting point. The sceDisplayWaitSetFrameBufMulti() and sceDisplayWaitSetFrameBufMultiCB() functions make the thread wait until the next VBLANK after the specified number of VSYNCs have elapsed as determined from the VSYNC count that the last frame buffer update was performed. For example, if the sceDisplayWaitSetFrameBufMulti() function is called with 2 specified for uiVcount, and no VSYNCs have elapsed since the last update of the frame buffer, the thread will wait until the start of the second VBLANK. If one VSYNC has elapsed since the last update of the frame buffer, the thread will wait until the start of the next VBLANK. If two or more VSYNCs have elapsed since the last update of the frame buffer, the thread will not perform any wait operations. If the function is called with 1 specified for uiVcount, the same operations as sceDisplayWaitSetFrameBuf() and sceDisplayWaitSetFrameBufCB() will be performed. The sceDisplayWaitSetFrameBufMulti() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitSetFrameBufMultiCB() function. uiVcount Number of VSYNC cycles to wait for (1 to 65535) */ SceInt32 sceDisplayWaitSetFrameBufMultiCB(SceUInt32 uiVcount);
sceDisplayWaitVblankStartMulti
Version | NID |
---|---|
1.69-3.60 | 0xDD0A13B8 |
/* Wait for start of multiple VBLANK intervals for each thread. This function places the thread in WAIT state until the start of the next VBLANK, after the specified number of VSYNCs has elapsed since the last time a VBLANK wait function was called. The sceDisplayWaitVblankStartMulti() and sceDisplayWaitVblankStartMultiCB() functions make the respective thread wait until the next VBLANK after the specified number of VSYNCs have elapsed as determined from the VSYNC count that was returned from the last VBLANK wait state, that was recorded for each thread. For example, if the sceDisplayWaitVblankStartMulti() function is called with 2 specified for uiVcount, and no VSYNCs have elapsed since the last call, the thread will wait until the start of the second VBLANK. If one VSYNC has elapsed since the last call, the thread will wait until the start of the next VBLANK. If two or more VSYNCs have elapsed since the last call, the thread will start at the next VBLANK. This enables the system to run at a fixed FPS as long as no processing drop occurs. If the function is called with 1 specified for uiVcount, the same operations as sceDisplayWaitVblankStart() and sceDisplayWaitVblankStartCB() will be performed. The sceDisplayWaitVblankStartMulti() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitVblankStartMultiCB() function. Use of the sceDisplayWaitVblankStartMulti() or sceDisplayWaitVblankStartMultiCB() function is not recommended while a callback function is executing. uiVcount Number of VSYNC cycles to wait for (1 to 65535) */ SceInt32 sceDisplayWaitVblankStartMulti(SceUInt32 uiVcount);
sceDisplayWaitVblankStartMultiCB
Version | NID |
---|---|
1.69-3.60 | 0x05F27764 |
/* Wait for start of multiple VBLANK intervals for each thread. This function places the thread in WAIT state until the start of the next VBLANK, after the specified number of VSYNCs has elapsed since the last time a VBLANK wait function was called. The sceDisplayWaitVblankStartMulti() and sceDisplayWaitVblankStartMultiCB() functions make the respective thread wait until the next VBLANK after the specified number of VSYNCs have elapsed as determined from the VSYNC count that was returned from the last VBLANK wait state, that was recorded for each thread. For example, if the sceDisplayWaitVblankStartMulti() function is called with 2 specified for uiVcount, and no VSYNCs have elapsed since the last call, the thread will wait until the start of the second VBLANK. If one VSYNC has elapsed since the last call, the thread will wait until the start of the next VBLANK. If two or more VSYNCs have elapsed since the last call, the thread will start at the next VBLANK. This enables the system to run at a fixed FPS as long as no processing drop occurs. If the function is called with 1 specified for uiVcount, the same operations as sceDisplayWaitVblankStart() and sceDisplayWaitVblankStartCB() will be performed. The sceDisplayWaitVblankStartMulti() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitVblankStartMultiCB() function. Use of the sceDisplayWaitVblankStartMulti() or sceDisplayWaitVblankStartMultiCB() function is not recommended while a callback function is executing. uiVcount Number of VSYNC cycles to wait for (1 to 65535) */ SceInt32 sceDisplayWaitVblankStartMultiCB(SceUInt32 uiVcount);
sceDisplayWaitVblankStart
Version | NID |
---|---|
1.69-3.60 | 0x5795E898 |
/* Thread wait for start of VBLANK interval. This function places the thread in WAIT state until the start of the next VBLANK interval. Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitVblankStart() or sceDisplayWaitVblankStartCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval. The sceDisplayWaitVblankStart() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitVblankStartCB() function. */ SceInt32 sceDisplayWaitVblankStart(void);
sceDisplayWaitVblankStartCB
Version | NID |
---|---|
1.69-3.60 | 0x78B41B92 |
/* Thread wait for start of VBLANK interval. This function places the thread in WAIT state until the start of the next VBLANK interval. Regardless of whether a VBLANK interval was in progress when the sceDisplayWaitVblankStart() or sceDisplayWaitVblankStartCB() function was called, the thread enters WAIT state until the start of the next VBLANK interval. The sceDisplayWaitVblankStart() function does not execute a thread manager callback during a WAIT state. If you also want to perform callback processing during the WAIT state, use the sceDisplayWaitVblankStartCB() function. */ SceInt32 sceDisplayWaitVblankStartCB(void);