|
|
@ -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;
|
|
|
|
}
|
|
|
|
}
|
|
|
|