aboutsummaryrefslogtreecommitdiff
path: root/backend/drm
diff options
context:
space:
mode:
Diffstat (limited to 'backend/drm')
-rw-r--r--backend/drm/drm.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/backend/drm/drm.c b/backend/drm/drm.c
index caf27d71..b56cf6d5 100644
--- a/backend/drm/drm.c
+++ b/backend/drm/drm.c
@@ -31,6 +31,13 @@
#include "types/wlr_buffer.h"
#include "util/signal.h"
+static const uint32_t SUPPORTED_OUTPUT_STATE =
+ WLR_OUTPUT_STATE_BACKEND_OPTIONAL |
+ WLR_OUTPUT_STATE_BUFFER |
+ WLR_OUTPUT_STATE_MODE |
+ WLR_OUTPUT_STATE_ENABLED |
+ WLR_OUTPUT_STATE_GAMMA_LUT;
+
bool check_drm_features(struct wlr_drm_backend *drm) {
if (drmGetCap(drm->fd, DRM_CAP_CURSOR_WIDTH, &drm->cursor_width)) {
drm->cursor_width = 64;
@@ -435,6 +442,13 @@ static bool drm_connector_test(struct wlr_output *output) {
return false;
}
+ uint32_t unsupported = output->pending.committed & ~SUPPORTED_OUTPUT_STATE;
+ if (unsupported != 0) {
+ wlr_log(WLR_DEBUG, "Unsupported output state fields: 0x%"PRIx32,
+ unsupported);
+ return false;
+ }
+
if ((output->pending.committed & WLR_OUTPUT_STATE_ENABLED) &&
output->pending.enabled) {
if (output->current_mode == NULL &&