backend-drm: remove unecessary ifdef checks
Since commit 28d26483 ("build: bump libdrm requirement to newer version
(2.4.83)"), all supported libdrm versions provide modifier formats,
atomic API and blob formats. Remove ifdef checks (HAVE_DRM_ADDFB2_MODIFIERS,
HAVE_DRM_ATOMIC, HAVE_DRM_FORMATS_BLOB) to improve the code and make it
simpler.
Signed-off-by: Leandro Ribeiro <leandrohr@riseup.net>
This commit is contained in:
committed by
Daniel Stone
parent
94e4068ba1
commit
6196b201be
@@ -74,17 +74,14 @@ static int
|
|||||||
drm_fb_addfb(struct drm_backend *b, struct drm_fb *fb)
|
drm_fb_addfb(struct drm_backend *b, struct drm_fb *fb)
|
||||||
{
|
{
|
||||||
int ret = -EINVAL;
|
int ret = -EINVAL;
|
||||||
#ifdef HAVE_DRM_ADDFB2_MODIFIERS
|
|
||||||
uint64_t mods[4] = { };
|
uint64_t mods[4] = { };
|
||||||
size_t i;
|
size_t i;
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If we have a modifier set, we must only use the WithModifiers
|
/* If we have a modifier set, we must only use the WithModifiers
|
||||||
* entrypoint; we cannot import it through legacy ioctls. */
|
* entrypoint; we cannot import it through legacy ioctls. */
|
||||||
if (b->fb_modifiers && fb->modifier != DRM_FORMAT_MOD_INVALID) {
|
if (b->fb_modifiers && fb->modifier != DRM_FORMAT_MOD_INVALID) {
|
||||||
/* KMS demands that if a modifier is set, it must be the same
|
/* KMS demands that if a modifier is set, it must be the same
|
||||||
* for all planes. */
|
* for all planes. */
|
||||||
#ifdef HAVE_DRM_ADDFB2_MODIFIERS
|
|
||||||
for (i = 0; i < ARRAY_LENGTH(mods) && fb->handles[i]; i++)
|
for (i = 0; i < ARRAY_LENGTH(mods) && fb->handles[i]; i++)
|
||||||
mods[i] = fb->modifier;
|
mods[i] = fb->modifier;
|
||||||
ret = drmModeAddFB2WithModifiers(fb->fd, fb->width, fb->height,
|
ret = drmModeAddFB2WithModifiers(fb->fd, fb->width, fb->height,
|
||||||
@@ -92,7 +89,6 @@ drm_fb_addfb(struct drm_backend *b, struct drm_fb *fb)
|
|||||||
fb->handles, fb->strides,
|
fb->handles, fb->strides,
|
||||||
fb->offsets, mods, &fb->fb_id,
|
fb->offsets, mods, &fb->fb_id,
|
||||||
DRM_MODE_FB_MODIFIERS);
|
DRM_MODE_FB_MODIFIERS);
|
||||||
#endif
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -403,7 +403,6 @@ drm_property_info_free(struct drm_property_info *info, int num_props)
|
|||||||
memset(info, 0, sizeof(*info) * num_props);
|
memset(info, 0, sizeof(*info) * num_props);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DRM_FORMATS_BLOB
|
|
||||||
static inline uint32_t *
|
static inline uint32_t *
|
||||||
formats_ptr(struct drm_format_modifier_blob *blob)
|
formats_ptr(struct drm_format_modifier_blob *blob)
|
||||||
{
|
{
|
||||||
@@ -416,7 +415,6 @@ modifiers_ptr(struct drm_format_modifier_blob *blob)
|
|||||||
return (struct drm_format_modifier *)
|
return (struct drm_format_modifier *)
|
||||||
(((char *)blob) + blob->modifiers_offset);
|
(((char *)blob) + blob->modifiers_offset);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Populates the plane's formats array, using either the IN_FORMATS blob
|
* Populates the plane's formats array, using either the IN_FORMATS blob
|
||||||
@@ -427,7 +425,6 @@ drm_plane_populate_formats(struct drm_plane *plane, const drmModePlane *kplane,
|
|||||||
const drmModeObjectProperties *props)
|
const drmModeObjectProperties *props)
|
||||||
{
|
{
|
||||||
unsigned i;
|
unsigned i;
|
||||||
#ifdef HAVE_DRM_FORMATS_BLOB
|
|
||||||
drmModePropertyBlobRes *blob;
|
drmModePropertyBlobRes *blob;
|
||||||
struct drm_format_modifier_blob *fmt_mod_blob;
|
struct drm_format_modifier_blob *fmt_mod_blob;
|
||||||
struct drm_format_modifier *blob_modifiers;
|
struct drm_format_modifier *blob_modifiers;
|
||||||
@@ -494,7 +491,6 @@ drm_plane_populate_formats(struct drm_plane *plane, const drmModePlane *kplane,
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
fallback:
|
fallback:
|
||||||
#endif
|
|
||||||
/* No IN_FORMATS blob available, so just use the old. */
|
/* No IN_FORMATS blob available, so just use the old. */
|
||||||
assert(plane->count_formats == kplane->count_formats);
|
assert(plane->count_formats == kplane->count_formats);
|
||||||
for (i = 0; i < kplane->count_formats; i++) {
|
for (i = 0; i < kplane->count_formats; i++) {
|
||||||
@@ -782,7 +778,6 @@ err:
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
static int
|
static int
|
||||||
crtc_add_prop(drmModeAtomicReq *req, struct drm_output *output,
|
crtc_add_prop(drmModeAtomicReq *req, struct drm_output *output,
|
||||||
enum wdrm_crtc_property prop, uint64_t val)
|
enum wdrm_crtc_property prop, uint64_t val)
|
||||||
@@ -1241,7 +1236,6 @@ out:
|
|||||||
drm_pending_state_free(pending_state);
|
drm_pending_state_free(pending_state);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Tests a pending state, to see if the kernel will accept the update as
|
* Tests a pending state, to see if the kernel will accept the update as
|
||||||
@@ -1264,13 +1258,11 @@ out:
|
|||||||
int
|
int
|
||||||
drm_pending_state_test(struct drm_pending_state *pending_state)
|
drm_pending_state_test(struct drm_pending_state *pending_state)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
struct drm_backend *b = pending_state->backend;
|
struct drm_backend *b = pending_state->backend;
|
||||||
|
|
||||||
if (b->atomic_modeset)
|
if (b->atomic_modeset)
|
||||||
return drm_pending_state_apply_atomic(pending_state,
|
return drm_pending_state_apply_atomic(pending_state,
|
||||||
DRM_STATE_TEST_ONLY);
|
DRM_STATE_TEST_ONLY);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* We have no way to test state before application on the legacy
|
/* We have no way to test state before application on the legacy
|
||||||
* modesetting API, so just claim it succeeded. */
|
* modesetting API, so just claim it succeeded. */
|
||||||
@@ -1291,11 +1283,9 @@ drm_pending_state_apply(struct drm_pending_state *pending_state)
|
|||||||
struct drm_output_state *output_state, *tmp;
|
struct drm_output_state *output_state, *tmp;
|
||||||
uint32_t *unused;
|
uint32_t *unused;
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
if (b->atomic_modeset)
|
if (b->atomic_modeset)
|
||||||
return drm_pending_state_apply_atomic(pending_state,
|
return drm_pending_state_apply_atomic(pending_state,
|
||||||
DRM_STATE_APPLY_ASYNC);
|
DRM_STATE_APPLY_ASYNC);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (b->state_invalid) {
|
if (b->state_invalid) {
|
||||||
/* If we need to reset all our state (e.g. because we've
|
/* If we need to reset all our state (e.g. because we've
|
||||||
@@ -1349,11 +1339,9 @@ drm_pending_state_apply_sync(struct drm_pending_state *pending_state)
|
|||||||
struct drm_output_state *output_state, *tmp;
|
struct drm_output_state *output_state, *tmp;
|
||||||
uint32_t *unused;
|
uint32_t *unused;
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
if (b->atomic_modeset)
|
if (b->atomic_modeset)
|
||||||
return drm_pending_state_apply_atomic(pending_state,
|
return drm_pending_state_apply_atomic(pending_state,
|
||||||
DRM_STATE_APPLY_SYNC);
|
DRM_STATE_APPLY_SYNC);
|
||||||
#endif
|
|
||||||
|
|
||||||
if (b->state_invalid) {
|
if (b->state_invalid) {
|
||||||
/* If we need to reset all our state (e.g. because we've
|
/* If we need to reset all our state (e.g. because we've
|
||||||
@@ -1417,7 +1405,6 @@ page_flip_handler(int fd, unsigned int frame,
|
|||||||
drm_output_update_complete(output, flags, sec, usec);
|
drm_output_update_complete(output, flags, sec, usec);
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
static void
|
static void
|
||||||
atomic_flip_handler(int fd, unsigned int frame, unsigned int sec,
|
atomic_flip_handler(int fd, unsigned int frame, unsigned int sec,
|
||||||
unsigned int usec, unsigned int crtc_id, void *data)
|
unsigned int usec, unsigned int crtc_id, void *data)
|
||||||
@@ -1444,25 +1431,18 @@ atomic_flip_handler(int fd, unsigned int frame, unsigned int sec,
|
|||||||
drm_output_update_complete(output, flags, sec, usec);
|
drm_output_update_complete(output, flags, sec, usec);
|
||||||
drm_debug(b, "[atomic][CRTC:%u] flip processing completed\n", crtc_id);
|
drm_debug(b, "[atomic][CRTC:%u] flip processing completed\n", crtc_id);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
int
|
int
|
||||||
on_drm_input(int fd, uint32_t mask, void *data)
|
on_drm_input(int fd, uint32_t mask, void *data)
|
||||||
{
|
{
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
struct drm_backend *b = data;
|
struct drm_backend *b = data;
|
||||||
#endif
|
|
||||||
drmEventContext evctx;
|
drmEventContext evctx;
|
||||||
|
|
||||||
memset(&evctx, 0, sizeof evctx);
|
memset(&evctx, 0, sizeof evctx);
|
||||||
#ifndef HAVE_DRM_ATOMIC
|
|
||||||
evctx.version = 2;
|
|
||||||
#else
|
|
||||||
evctx.version = 3;
|
evctx.version = 3;
|
||||||
if (b->atomic_modeset)
|
if (b->atomic_modeset)
|
||||||
evctx.page_flip_handler2 = atomic_flip_handler;
|
evctx.page_flip_handler2 = atomic_flip_handler;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
evctx.page_flip_handler = page_flip_handler;
|
evctx.page_flip_handler = page_flip_handler;
|
||||||
drmHandleEvent(fd, &evctx);
|
drmHandleEvent(fd, &evctx);
|
||||||
|
|
||||||
@@ -1509,7 +1489,6 @@ init_kms_caps(struct drm_backend *b)
|
|||||||
weston_log("DRM: %s universal planes\n",
|
weston_log("DRM: %s universal planes\n",
|
||||||
b->universal_planes ? "supports" : "does not support");
|
b->universal_planes ? "supports" : "does not support");
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ATOMIC
|
|
||||||
if (b->universal_planes && !getenv("WESTON_DISABLE_ATOMIC")) {
|
if (b->universal_planes && !getenv("WESTON_DISABLE_ATOMIC")) {
|
||||||
ret = drmGetCap(b->drm.fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &cap);
|
ret = drmGetCap(b->drm.fd, DRM_CAP_CRTC_IN_VBLANK_EVENT, &cap);
|
||||||
if (ret != 0)
|
if (ret != 0)
|
||||||
@@ -1517,16 +1496,13 @@ init_kms_caps(struct drm_backend *b)
|
|||||||
ret = drmSetClientCap(b->drm.fd, DRM_CLIENT_CAP_ATOMIC, 1);
|
ret = drmSetClientCap(b->drm.fd, DRM_CLIENT_CAP_ATOMIC, 1);
|
||||||
b->atomic_modeset = ((ret == 0) && (cap == 1));
|
b->atomic_modeset = ((ret == 0) && (cap == 1));
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
weston_log("DRM: %s atomic modesetting\n",
|
weston_log("DRM: %s atomic modesetting\n",
|
||||||
b->atomic_modeset ? "supports" : "does not support");
|
b->atomic_modeset ? "supports" : "does not support");
|
||||||
|
|
||||||
#ifdef HAVE_DRM_ADDFB2_MODIFIERS
|
|
||||||
ret = drmGetCap(b->drm.fd, DRM_CAP_ADDFB2_MODIFIERS, &cap);
|
ret = drmGetCap(b->drm.fd, DRM_CAP_ADDFB2_MODIFIERS, &cap);
|
||||||
if (ret == 0)
|
if (ret == 0)
|
||||||
b->fb_modifiers = cap;
|
b->fb_modifiers = cap;
|
||||||
else
|
else
|
||||||
#endif
|
|
||||||
b->fb_modifiers = 0;
|
b->fb_modifiers = 0;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -79,18 +79,6 @@ if get_option('remoting')
|
|||||||
config_h.set('BUILD_DRM_VIRTUAL', '1')
|
config_h.set('BUILD_DRM_VIRTUAL', '1')
|
||||||
endif
|
endif
|
||||||
|
|
||||||
if dep_libdrm.version().version_compare('>= 2.4.71')
|
|
||||||
config_h.set('HAVE_DRM_ADDFB2_MODIFIERS', '1')
|
|
||||||
endif
|
|
||||||
|
|
||||||
if dep_libdrm.version().version_compare('>= 2.4.78')
|
|
||||||
config_h.set('HAVE_DRM_ATOMIC', '1')
|
|
||||||
endif
|
|
||||||
|
|
||||||
if dep_libdrm.version().version_compare('>= 2.4.83')
|
|
||||||
config_h.set('HAVE_DRM_FORMATS_BLOB', '1')
|
|
||||||
endif
|
|
||||||
|
|
||||||
plugin_drm = shared_library(
|
plugin_drm = shared_library(
|
||||||
'drm-backend',
|
'drm-backend',
|
||||||
srcs_drm,
|
srcs_drm,
|
||||||
|
|||||||
Reference in New Issue
Block a user