mirror of
https://gitlab.freedesktop.org/wlroots/wlroots.git
synced 2026-02-16 22:05:45 -05:00
types/wlr_buffer: add buffer_get_drm_format helper function
This commit is contained in:
parent
bb78861ca9
commit
ef88246642
4 changed files with 32 additions and 22 deletions
|
|
@ -109,14 +109,11 @@ bool wlr_buffer_get_shm(struct wlr_buffer *buffer,
|
|||
|
||||
bool wlr_buffer_is_opaque(struct wlr_buffer *buffer) {
|
||||
void *data;
|
||||
uint32_t format;
|
||||
uint32_t format = buffer_get_drm_format(buffer);
|
||||
size_t stride;
|
||||
struct wlr_dmabuf_attributes dmabuf;
|
||||
struct wlr_shm_attributes shm;
|
||||
if (wlr_buffer_get_dmabuf(buffer, &dmabuf)) {
|
||||
format = dmabuf.format;
|
||||
} else if (wlr_buffer_get_shm(buffer, &shm)) {
|
||||
format = shm.format;
|
||||
|
||||
if (format != DRM_FORMAT_INVALID) {
|
||||
// pass
|
||||
} else if (wlr_buffer_begin_data_ptr_access(buffer,
|
||||
WLR_BUFFER_DATA_PTR_ACCESS_READ, &data, &format, &stride)) {
|
||||
bool opaque = false;
|
||||
|
|
@ -135,3 +132,15 @@ bool wlr_buffer_is_opaque(struct wlr_buffer *buffer) {
|
|||
|
||||
return !pixel_format_has_alpha(format);
|
||||
}
|
||||
|
||||
uint32_t buffer_get_drm_format(struct wlr_buffer *buffer) {
|
||||
uint32_t format = DRM_FORMAT_INVALID;
|
||||
struct wlr_dmabuf_attributes dmabuf;
|
||||
struct wlr_shm_attributes shm;
|
||||
if (wlr_buffer_get_dmabuf(buffer, &dmabuf)) {
|
||||
format = dmabuf.format;
|
||||
} else if (wlr_buffer_get_shm(buffer, &shm)) {
|
||||
format = shm.format;
|
||||
}
|
||||
return format;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue