backend/drm: move legacy-specific checks to legacy.c

Now that we have a test_only arg in crtc_commit, we can move the
legacy checks to legacy.c.
This commit is contained in:
Simon Ser 2021-07-08 16:23:22 +02:00 committed by Simon Zeni
parent 017555651b
commit fde56c20b4
2 changed files with 15 additions and 8 deletions

View File

@ -419,14 +419,6 @@ static bool drm_connector_set_pending_fb(struct wlr_drm_connector *conn,
} }
break; break;
case WLR_OUTPUT_STATE_BUFFER_SCANOUT:; case WLR_OUTPUT_STATE_BUFFER_SCANOUT:;
/* Legacy never gets to have nice things. But I doubt this would ever work,
* and there is no reliable way to try, without risking messing up the
* modesetting state. */
if (drm->iface == &legacy_iface) {
wlr_drm_conn_log(conn, WLR_DEBUG,
"Cannot use direct scan-out with legacy KMS API");
return false;
}
if (!drm_fb_import(&plane->pending_fb, drm, state->buffer, if (!drm_fb_import(&plane->pending_fb, drm, state->buffer,
&crtc->primary->formats)) { &crtc->primary->formats)) {
wlr_drm_conn_log(conn, WLR_DEBUG, wlr_drm_conn_log(conn, WLR_DEBUG,

View File

@ -8,9 +8,24 @@
#include "backend/drm/iface.h" #include "backend/drm/iface.h"
#include "backend/drm/util.h" #include "backend/drm/util.h"
static bool legacy_crtc_test(struct wlr_drm_connector *conn,
const struct wlr_output_state *state) {
if ((state->committed & WLR_OUTPUT_STATE_BUFFER) &&
state->buffer_type == WLR_OUTPUT_STATE_BUFFER_SCANOUT) {
wlr_drm_conn_log(conn, WLR_DEBUG,
"Cannot use direct scan-out with legacy KMS API");
return false;
}
return true;
}
static bool legacy_crtc_commit(struct wlr_drm_backend *drm, static bool legacy_crtc_commit(struct wlr_drm_backend *drm,
struct wlr_drm_connector *conn, const struct wlr_output_state *state, struct wlr_drm_connector *conn, const struct wlr_output_state *state,
uint32_t flags, bool test_only) { uint32_t flags, bool test_only) {
if (!legacy_crtc_test(conn, state)) {
return false;
}
if (test_only) { if (test_only) {
return true; return true;
} }