onscreen/native: Don't create timestamp query with secondary GPU work
The timestamp query is currently always created for the primary GPU, so it doesn't cover any later secondary GPU work. Closes: https://gitlab.gnome.org/GNOME/mutter/-/issues/3070 Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3689>
This commit is contained in:
parent
09267d0bdd
commit
a834eb5c94
@ -1281,12 +1281,14 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
MetaMonitorManager *monitor_manager =
|
||||
meta_backend_get_monitor_manager (backend);
|
||||
MetaOnscreenNative *onscreen_native = META_ONSCREEN_NATIVE (onscreen);
|
||||
MetaOnscreenNativeSecondaryGpuState *secondary_gpu_state;
|
||||
MetaGpuKms *render_gpu = onscreen_native->render_gpu;
|
||||
MetaDeviceFile *render_device_file;
|
||||
ClutterFrame *frame = user_data;
|
||||
MetaFrameNative *frame_native = meta_frame_native_from_frame (frame);
|
||||
MetaKmsUpdate *kms_update;
|
||||
CoglOnscreenClass *parent_class;
|
||||
gboolean create_timestamp_query = TRUE;
|
||||
gboolean egl_context_changed = FALSE;
|
||||
MetaPowerSave power_save_mode;
|
||||
g_autoptr (GError) error = NULL;
|
||||
@ -1305,7 +1307,21 @@ meta_onscreen_native_swap_buffers_with_damage (CoglOnscreen *onscreen,
|
||||
rectangles,
|
||||
n_rectangles);
|
||||
|
||||
cogl_onscreen_egl_maybe_create_timestamp_query (onscreen, frame_info);
|
||||
secondary_gpu_state = onscreen_native->secondary_gpu_state;
|
||||
if (secondary_gpu_state)
|
||||
{
|
||||
MetaRendererNativeGpuData *secondary_gpu_data;
|
||||
|
||||
secondary_gpu_data =
|
||||
meta_renderer_native_get_gpu_data (renderer_native,
|
||||
secondary_gpu_state->gpu_kms);
|
||||
if (secondary_gpu_data->secondary.copy_mode ==
|
||||
META_SHARED_FRAMEBUFFER_COPY_MODE_SECONDARY_GPU)
|
||||
create_timestamp_query = FALSE;
|
||||
}
|
||||
|
||||
if (create_timestamp_query)
|
||||
cogl_onscreen_egl_maybe_create_timestamp_query (onscreen, frame_info);
|
||||
|
||||
parent_class = COGL_ONSCREEN_CLASS (meta_onscreen_native_parent_class);
|
||||
parent_class->swap_buffers_with_damage (onscreen,
|
||||
|
Loading…
x
Reference in New Issue
Block a user