[mutter] renderer/native: Refactor into secondary_gpu_get_next_dumb_buffer
- From: Georges Basile Stavracas Neto <gbsneto src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [mutter] renderer/native: Refactor into secondary_gpu_get_next_dumb_buffer
- Date: Wed, 29 May 2019 15:40:44 +0000 (UTC)
commit 2145333969fa2c6043ca85316a555a4f612230ca
Author: Pekka Paalanen <pekka paalanen collabora com>
Date: Thu Nov 29 13:54:31 2018 +0200
renderer/native: Refactor into secondary_gpu_get_next_dumb_buffer
Extract the next buffer -logic into a new function. This allows to
simplify copy_shared_framebuffer_cpu () making it more readable.
This change is a pure refactoring, no functional changes.
https://gitlab.gnome.org/GNOME/mutter/merge_requests/593
src/backends/native/meta-renderer-native.c | 52 +++++++++++++-----------------
1 file changed, 23 insertions(+), 29 deletions(-)
---
diff --git a/src/backends/native/meta-renderer-native.c b/src/backends/native/meta-renderer-native.c
index 979306aa6..31ba6d22f 100644
--- a/src/backends/native/meta-renderer-native.c
+++ b/src/backends/native/meta-renderer-native.c
@@ -2126,6 +2126,18 @@ copy_shared_framebuffer_gpu (CoglOnscreen *onscreen,
}
}
+static MetaDumbBuffer *
+secondary_gpu_get_next_dumb_buffer (MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state)
+{
+ MetaDumbBuffer *current_dumb_fb;
+
+ current_dumb_fb = secondary_gpu_state->cpu.dumb_fb;
+ if (current_dumb_fb == &secondary_gpu_state->cpu.dumb_fbs[0])
+ return &secondary_gpu_state->cpu.dumb_fbs[1];
+ else
+ return &secondary_gpu_state->cpu.dumb_fbs[0];
+}
+
typedef struct _PixelFormatMap {
uint32_t drm_format;
CoglPixelFormat cogl_format;
@@ -2192,47 +2204,28 @@ copy_shared_framebuffer_cpu (CoglOnscreen *onscreen,
{
CoglFramebuffer *framebuffer = COGL_FRAMEBUFFER (onscreen);
CoglContext *cogl_context = framebuffer->context;
- int width, height;
- uint8_t *target_data;
- int target_stride_bytes;
- uint32_t target_fb_id;
- uint32_t target_drm_format;
- MetaDumbBuffer *next_dumb_fb;
- MetaDumbBuffer *current_dumb_fb;
+ MetaDumbBuffer *dumb_fb;
CoglBitmap *dumb_bitmap;
CoglPixelFormat cogl_format;
gboolean ret;
MetaDrmBufferDumb *buffer_dumb;
- width = cogl_framebuffer_get_width (framebuffer);
- height = cogl_framebuffer_get_height (framebuffer);
-
- current_dumb_fb = secondary_gpu_state->cpu.dumb_fb;
- if (current_dumb_fb == &secondary_gpu_state->cpu.dumb_fbs[0])
- next_dumb_fb = &secondary_gpu_state->cpu.dumb_fbs[1];
- else
- next_dumb_fb = &secondary_gpu_state->cpu.dumb_fbs[0];
- secondary_gpu_state->cpu.dumb_fb = next_dumb_fb;
-
- g_assert (width == secondary_gpu_state->cpu.dumb_fb->width);
- g_assert (height == secondary_gpu_state->cpu.dumb_fb->height);
+ dumb_fb = secondary_gpu_get_next_dumb_buffer (secondary_gpu_state);
- target_data = secondary_gpu_state->cpu.dumb_fb->map;
- target_stride_bytes = secondary_gpu_state->cpu.dumb_fb->stride_bytes;
- target_fb_id = secondary_gpu_state->cpu.dumb_fb->fb_id;
- target_drm_format = secondary_gpu_state->cpu.dumb_fb->drm_format;
+ g_assert (cogl_framebuffer_get_width (framebuffer) == dumb_fb->width);
+ g_assert (cogl_framebuffer_get_height (framebuffer) == dumb_fb->height);
- ret = cogl_pixel_format_from_drm_format (target_drm_format,
+ ret = cogl_pixel_format_from_drm_format (dumb_fb->drm_format,
&cogl_format,
NULL);
g_assert (ret);
dumb_bitmap = cogl_bitmap_new_for_data (cogl_context,
- width,
- height,
+ dumb_fb->width,
+ dumb_fb->height,
cogl_format,
- target_stride_bytes,
- target_data);
+ dumb_fb->stride_bytes,
+ dumb_fb->map);
if (!cogl_framebuffer_read_pixels_into_bitmap (framebuffer,
0 /* x */,
@@ -2244,8 +2237,9 @@ copy_shared_framebuffer_cpu (CoglOnscreen *onscreen,
cogl_object_unref (dumb_bitmap);
g_clear_object (&secondary_gpu_state->gbm.next_fb);
- buffer_dumb = meta_drm_buffer_dumb_new (target_fb_id);
+ buffer_dumb = meta_drm_buffer_dumb_new (dumb_fb->fb_id);
secondary_gpu_state->gbm.next_fb = META_DRM_BUFFER (buffer_dumb);
+ secondary_gpu_state->cpu.dumb_fb = dumb_fb;
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]