drm-buffer: Replace 'use-modifier' boolean with flags

This lets us add more customization to the buffer instance without
adding more boolean arguments.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1854>
This commit is contained in:
Jonas Ådahl
2021-05-05 10:15:18 +02:00
parent 99f51d2866
commit 6ba86366b3
12 changed files with 81 additions and 35 deletions

View File

@ -654,6 +654,7 @@ copy_shared_framebuffer_gpu (CoglOnscreen *onscreen,
GError *error = NULL;
gboolean use_modifiers;
MetaDeviceFile *device_file;
MetaDrmBufferFlags flags;
MetaDrmBufferGbm *buffer_gbm;
struct gbm_bo *bo;
@ -705,10 +706,15 @@ copy_shared_framebuffer_gpu (CoglOnscreen *onscreen,
use_modifiers = meta_renderer_native_use_modifiers (renderer_native);
device_file = secondary_gpu_state->renderer_gpu_data->device_file;
flags = META_DRM_BUFFER_FLAG_NONE;
if (!use_modifiers)
flags |= META_DRM_BUFFER_FLAG_DISABLE_MODIFIERS;
buffer_gbm =
meta_drm_buffer_gbm_new_lock_front (device_file,
secondary_gpu_state->gbm.surface,
use_modifiers,
flags,
&error);
if (!buffer_gbm)
{
@ -1016,9 +1022,9 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
ClutterFrame *frame = user_data;
CoglOnscreenClass *parent_class;
gboolean egl_context_changed = FALSE;
gboolean use_modifiers;
MetaPowerSave power_save_mode;
g_autoptr (GError) error = NULL;
MetaDrmBufferFlags buffer_flags;
MetaDrmBufferGbm *buffer_gbm;
MetaKmsCrtc *kms_crtc;
MetaKmsDevice *kms_device;
@ -1047,11 +1053,14 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
g_warn_if_fail (onscreen_native->gbm.next_fb == NULL);
g_clear_object (&onscreen_native->gbm.next_fb);
use_modifiers = meta_renderer_native_use_modifiers (renderer_native);
buffer_flags = META_DRM_BUFFER_FLAG_NONE;
if (!meta_renderer_native_use_modifiers (renderer_native))
buffer_flags |= META_DRM_BUFFER_FLAG_DISABLE_MODIFIERS;
buffer_gbm =
meta_drm_buffer_gbm_new_lock_front (render_device_file,
onscreen_native->gbm.surface,
use_modifiers,
buffer_flags,
&error);
if (!buffer_gbm)
{