|
|
@ -4857,53 +4857,31 @@ void SwapScreenBuffer(void) |
|
|
|
eglSwapBuffers(CORE.Window.device, CORE.Window.surface); |
|
|
|
|
|
|
|
#if defined(PLATFORM_DRM) |
|
|
|
if (!CORE.Window.gbmSurface || (-1 == CORE.Window.fd) || !CORE.Window.connector || !CORE.Window.crtc) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_ERROR, "DISPLAY: DRM initialization failed to swap"); |
|
|
|
abort(); |
|
|
|
} |
|
|
|
|
|
|
|
if (!CORE.Window.gbmSurface || (-1 == CORE.Window.fd) || !CORE.Window.connector || !CORE.Window.crtc) TRACELOG(LOG_ERROR, "DISPLAY: DRM initialization failed to swap"); |
|
|
|
|
|
|
|
struct gbm_bo *bo = gbm_surface_lock_front_buffer(CORE.Window.gbmSurface); |
|
|
|
if (!bo) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_ERROR, "DISPLAY: Failed GBM to lock front buffer"); |
|
|
|
abort(); |
|
|
|
} |
|
|
|
if (!bo) TRACELOG(LOG_ERROR, "DISPLAY: Failed GBM to lock front buffer"); |
|
|
|
|
|
|
|
uint32_t fb = 0; |
|
|
|
int result = drmModeAddFB(CORE.Window.fd, CORE.Window.connector->modes[CORE.Window.modeIndex].hdisplay, |
|
|
|
CORE.Window.connector->modes[CORE.Window.modeIndex].vdisplay, 24, 32, gbm_bo_get_stride(bo), gbm_bo_get_handle(bo).u32, &fb); |
|
|
|
if (0 != result) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_ERROR, "DISPLAY: drmModeAddFB() failed with result: %d", result); |
|
|
|
abort(); |
|
|
|
} |
|
|
|
int result = drmModeAddFB(CORE.Window.fd, CORE.Window.connector->modes[CORE.Window.modeIndex].hdisplay, CORE.Window.connector->modes[CORE.Window.modeIndex].vdisplay, 24, 32, gbm_bo_get_stride(bo), gbm_bo_get_handle(bo).u32, &fb); |
|
|
|
if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeAddFB() failed with result: %d", result); |
|
|
|
|
|
|
|
result = drmModeSetCrtc(CORE.Window.fd, CORE.Window.crtc->crtc_id, fb, 0, 0, |
|
|
|
&CORE.Window.connector->connector_id, 1, &CORE.Window.connector->modes[CORE.Window.modeIndex]); |
|
|
|
if (0 != result) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_ERROR, "DISPLAY: drmModeSetCrtc() failed with result: %d", result); |
|
|
|
abort(); |
|
|
|
} |
|
|
|
result = drmModeSetCrtc(CORE.Window.fd, CORE.Window.crtc->crtc_id, fb, 0, 0, &CORE.Window.connector->connector_id, 1, &CORE.Window.connector->modes[CORE.Window.modeIndex]); |
|
|
|
if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeSetCrtc() failed with result: %d", result); |
|
|
|
|
|
|
|
if (CORE.Window.prevFB) |
|
|
|
{ |
|
|
|
result = drmModeRmFB(CORE.Window.fd, CORE.Window.prevFB); |
|
|
|
if (0 != result) |
|
|
|
{ |
|
|
|
TRACELOG(LOG_ERROR, "DISPLAY: drmModeRmFB() failed with result: %d", result); |
|
|
|
abort(); |
|
|
|
} |
|
|
|
if (result != 0) TRACELOG(LOG_ERROR, "DISPLAY: drmModeRmFB() failed with result: %d", result); |
|
|
|
} |
|
|
|
|
|
|
|
CORE.Window.prevFB = fb; |
|
|
|
|
|
|
|
if (CORE.Window.prevBO) |
|
|
|
{ |
|
|
|
gbm_surface_release_buffer(CORE.Window.gbmSurface, CORE.Window.prevBO); |
|
|
|
} |
|
|
|
if (CORE.Window.prevBO) gbm_surface_release_buffer(CORE.Window.gbmSurface, CORE.Window.prevBO); |
|
|
|
|
|
|
|
CORE.Window.prevBO = bo; |
|
|
|
|
|
|
|
#endif // PLATFORM_DRM |
|
|
|
#endif // PLATFORM_ANDROID || PLATFORM_RPI || PLATFORM_DRM |
|
|
|
} |
|
|
|