diff --git a/src/drm.cpp b/src/drm.cpp index 5af6ba8..aef079f 100644 --- a/src/drm.cpp +++ b/src/drm.cpp @@ -27,6 +27,7 @@ uint32_t g_nDRMFormat; bool g_bRotated; bool g_bUseLayers; +bool g_bDebugLayers; static int s_drm_log = 0; @@ -458,6 +459,10 @@ int init_drm(struct drm_t *drm, const char *device, const char *mode_str, unsign g_nOutputWidth = drm->mode->vdisplay; g_nOutputHeight = drm->mode->hdisplay; } + + if (g_bUseLayers) { + liftoff_log_init(g_bDebugLayers ? LIFTOFF_DEBUG : LIFTOFF_ERROR, NULL); + } drm->lo_device = liftoff_device_create( drm->fd ); drm->lo_output = liftoff_output_create( drm->lo_device, drm->crtc_id ); @@ -701,8 +706,8 @@ bool drm_can_avoid_composite( struct drm_t *drm, struct Composite_t *pComposite, { liftoff_layer_set_property( drm->lo_layers[ i ], "rotation", DRM_MODE_ROTATE_270); } - - if ( pPipeline->layerBindings[ i ].fbid == 0 ) + + if ( pPipeline->layerBindings[ i ].fbid != 0 ) { return false; } diff --git a/src/drm.hpp b/src/drm.hpp index c512f7e..6af5891 100644 --- a/src/drm.hpp +++ b/src/drm.hpp @@ -86,6 +86,7 @@ extern uint32_t g_nDRMFormat; extern bool g_bUseLayers; extern bool g_bRotated; +extern bool g_bDebugLayers; int init_drm(struct drm_t *drm, const char *device, const char *mode_str, unsigned int vrefresh); int drm_atomic_commit(struct drm_t *drm, struct Composite_t *pComposite, struct VulkanPipeline_t *pPipeline ); diff --git a/src/main.cpp b/src/main.cpp index 51320fd..dfb7f77 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -59,7 +59,7 @@ int main(int argc, char **argv) bool bSleepAtStartup = false; - while ((o = getopt (argc, argv, ":R:T:w:h:W:H:r:NSvVecslnb")) != -1) + while ((o = getopt (argc, argv, ":R:T:w:h:W:H:r:NSvVecsdlnb")) != -1) { switch (o) { case 'w': @@ -83,6 +83,9 @@ int main(int argc, char **argv) case 'l': g_bUseLayers = true; break; + case 'd': + g_bDebugLayers = true; + break; case 'n': g_bFilterGameWindow = false; break;