mtk: Move MetaMonitorTransform to Mtk

This makes it possible to use MtkMonitorTransform in Clutter which will
be used to track the transform in ClutterStageView.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/3930>
This commit is contained in:
Sebastian Wick
2024-08-07 22:02:44 +02:00
committed by Marge Bot
parent 54b2abfe1b
commit 89af55d8aa
70 changed files with 692 additions and 681 deletions

View File

@ -379,8 +379,8 @@ meta_crtc_kms_unset_config (MetaCrtc *crtc)
}
static gboolean
meta_crtc_kms_is_transform_handled (MetaCrtcNative *crtc_native,
MetaMonitorTransform transform)
meta_crtc_kms_is_transform_handled (MetaCrtcNative *crtc_native,
MtkMonitorTransform transform)
{
MetaCrtcKms *crtc_kms = META_CRTC_KMS (crtc_native);

View File

@ -23,8 +23,8 @@ G_DEFINE_ABSTRACT_TYPE (MetaCrtcNative, meta_crtc_native,
META_TYPE_CRTC)
gboolean
meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
MetaMonitorTransform transform)
meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
MtkMonitorTransform transform)
{
MetaCrtcNativeClass *klass = META_CRTC_NATIVE_GET_CLASS (crtc_native);

View File

@ -29,12 +29,12 @@ struct _MetaCrtcNativeClass
{
MetaCrtcClass parent_class;
gboolean (* is_transform_handled) (MetaCrtcNative *crtc_native,
MetaMonitorTransform monitor_transform);
gboolean (* is_transform_handled) (MetaCrtcNative *crtc_native,
MtkMonitorTransform monitor_transform);
gboolean (* is_hw_cursor_supported) (MetaCrtcNative *crtc_native);
};
gboolean meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
MetaMonitorTransform transform);
gboolean meta_crtc_native_is_transform_handled (MetaCrtcNative *crtc_native,
MtkMonitorTransform transform);
gboolean meta_crtc_native_is_hw_cursor_supported (MetaCrtcNative *crtc_native);

View File

@ -58,10 +58,10 @@ meta_crtc_virtual_set_gamma_lut (MetaCrtc *crtc,
}
static gboolean
meta_crtc_virtual_is_transform_handled (MetaCrtcNative *crtc_native,
MetaMonitorTransform transform)
meta_crtc_virtual_is_transform_handled (MetaCrtcNative *crtc_native,
MtkMonitorTransform transform)
{
return transform == META_MONITOR_TRANSFORM_NORMAL;
return transform == MTK_MONITOR_TRANSFORM_NORMAL;
}
static gboolean

View File

@ -107,7 +107,7 @@ typedef struct _MetaCursorNativePrivate
struct {
gboolean can_preprocess;
float current_relative_scale;
MetaMonitorTransform current_relative_transform;
MtkMonitorTransform current_relative_transform;
} preprocess_state;
} MetaCursorNativePrivate;
@ -391,7 +391,7 @@ meta_cursor_renderer_native_update_cursor (MetaCursorRenderer *cursor_renderer,
meta_kms_cursor_manager_update_sprite (kms_cursor_manager,
kms_crtc,
NULL,
META_MONITOR_TRANSFORM_NORMAL,
MTK_MONITOR_TRANSFORM_NORMAL,
NULL);
}
}
@ -578,10 +578,10 @@ create_cursor_drm_buffer (MetaGpuKms *gpu_kms,
}
static void
calculate_crtc_cursor_hotspot (MetaCursorSprite *cursor_sprite,
float scale,
MetaMonitorTransform transform,
graphene_point_t *hotspot)
calculate_crtc_cursor_hotspot (MetaCursorSprite *cursor_sprite,
float scale,
MtkMonitorTransform transform,
graphene_point_t *hotspot)
{
int hot_x, hot_y;
int width, height;
@ -589,9 +589,9 @@ calculate_crtc_cursor_hotspot (MetaCursorSprite *cursor_sprite,
meta_cursor_sprite_get_hotspot (cursor_sprite, &hot_x, &hot_y);
width = meta_cursor_sprite_get_width (cursor_sprite);
height = meta_cursor_sprite_get_height (cursor_sprite);
meta_monitor_transform_transform_point (transform,
&width, &height,
&hot_x, &hot_y);
mtk_monitor_transform_transform_point (transform,
&width, &height,
&hot_x, &hot_y);
*hotspot = GRAPHENE_POINT_INIT (hot_x * scale, hot_y * scale);
}
@ -696,7 +696,7 @@ load_cursor_sprite_gbm_buffer_for_crtc (MetaCursorRendererNative *native,
uint height,
int rowstride,
float scale,
MetaMonitorTransform transform,
MtkMonitorTransform transform,
uint32_t gbm_format)
{
MetaCursorRendererNativePrivate *priv =
@ -762,17 +762,17 @@ load_cursor_sprite_gbm_buffer_for_crtc (MetaCursorRendererNative *native,
}
static CoglTexture *
scale_and_transform_cursor_sprite_cpu (MetaCursorRendererNative *cursor_renderer_native,
ClutterColorState *target_color_state,
MetaCursorSprite *cursor_sprite,
uint8_t *pixels,
CoglPixelFormat pixel_format,
int width,
int height,
int rowstride,
float scale,
MetaMonitorTransform transform,
GError **error)
scale_and_transform_cursor_sprite_cpu (MetaCursorRendererNative *cursor_renderer_native,
ClutterColorState *target_color_state,
MetaCursorSprite *cursor_sprite,
uint8_t *pixels,
CoglPixelFormat pixel_format,
int width,
int height,
int rowstride,
float scale,
MtkMonitorTransform transform,
GError **error)
{
MetaCursorRendererNativePrivate *priv =
meta_cursor_renderer_native_get_instance_private (cursor_renderer_native);
@ -784,7 +784,7 @@ scale_and_transform_cursor_sprite_cpu (MetaCursorRendererNative *cursor_renderer
g_autoptr (CoglOffscreen) offscreen = NULL;
g_autoptr (CoglPipeline) pipeline = NULL;
graphene_matrix_t matrix;
MetaMonitorTransform pipeline_transform;
MtkMonitorTransform pipeline_transform;
ClutterColorState *color_state;
int dst_width;
int dst_height;
@ -812,8 +812,8 @@ scale_and_transform_cursor_sprite_cpu (MetaCursorRendererNative *cursor_renderer
pipeline = cogl_pipeline_new (cogl_context);
graphene_matrix_init_identity (&matrix);
pipeline_transform = meta_monitor_transform_invert (transform);
meta_monitor_transform_transform_matrix (pipeline_transform, &matrix);
pipeline_transform = mtk_monitor_transform_invert (transform);
mtk_monitor_transform_transform_matrix (pipeline_transform, &matrix);
cogl_pipeline_set_layer_texture (pipeline, 0, src_texture);
cogl_pipeline_set_layer_matrix (pipeline, 0, &matrix);
@ -841,7 +841,7 @@ load_scaled_and_transformed_cursor_sprite (MetaCursorRendererNative *native,
ClutterColorState *target_color_state,
MetaCursorSprite *cursor_sprite,
float relative_scale,
MetaMonitorTransform relative_transform,
MtkMonitorTransform relative_transform,
uint8_t *data,
int width,
int height,
@ -854,7 +854,7 @@ load_scaled_and_transformed_cursor_sprite (MetaCursorRendererNative *native,
cursor_color_state = meta_cursor_sprite_get_color_state (cursor_sprite);
if (!G_APPROX_VALUE (relative_scale, 1.f, FLT_EPSILON) ||
relative_transform != META_MONITOR_TRANSFORM_NORMAL ||
relative_transform != MTK_MONITOR_TRANSFORM_NORMAL ||
gbm_format != GBM_FORMAT_ARGB8888 ||
!clutter_color_state_equals (cursor_color_state, target_color_state))
{
@ -966,13 +966,13 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
int rowstride = wl_shm_buffer_get_stride (shm_buffer);
uint8_t *buffer_data;
float relative_scale;
MetaMonitorTransform relative_transform;
MtkMonitorTransform relative_transform;
uint32_t gbm_format;
MetaCrtc *crtc = META_CRTC (crtc_kms);
MetaLogicalMonitor *logical_monitor;
MetaMonitor *monitor;
MetaMonitorTransform logical_transform;
MtkMonitorTransform logical_transform;
gboolean retval;
monitor = meta_output_get_monitor (meta_crtc_get_outputs (crtc)->data);
@ -983,8 +983,8 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
logical_monitor);
logical_transform = meta_logical_monitor_get_transform (logical_monitor);
relative_transform = meta_monitor_transform_transform (
meta_monitor_transform_invert (
relative_transform = mtk_monitor_transform_transform (
mtk_monitor_transform_invert (
meta_cursor_sprite_get_texture_transform (cursor_sprite)),
meta_monitor_logical_to_crtc_transform (monitor, logical_transform));
@ -1097,7 +1097,7 @@ realize_cursor_sprite_from_wl_buffer_for_crtc (MetaCursorRenderer *renderer
meta_kms_cursor_manager_update_sprite (kms_cursor_manager,
kms_crtc,
META_DRM_BUFFER (buffer_gbm),
META_MONITOR_TRANSFORM_NORMAL,
MTK_MONITOR_TRANSFORM_NORMAL,
&GRAPHENE_POINT_INIT (hot_x, hot_y));
return TRUE;
@ -1118,10 +1118,10 @@ realize_cursor_sprite_from_xcursor_for_crtc (MetaCursorRenderer *renderer,
MetaCrtc *crtc = META_CRTC (crtc_kms);
MetaLogicalMonitor *logical_monitor;
MetaMonitor *monitor;
MetaMonitorTransform logical_transform;
MtkMonitorTransform logical_transform;
XcursorImage *xc_image;
float relative_scale;
MetaMonitorTransform relative_transform;
MtkMonitorTransform relative_transform;
monitor = meta_output_get_monitor (meta_crtc_get_outputs (crtc)->data);
logical_monitor = meta_monitor_get_logical_monitor (monitor);
@ -1131,8 +1131,8 @@ realize_cursor_sprite_from_xcursor_for_crtc (MetaCursorRenderer *renderer,
logical_monitor);
logical_transform = meta_logical_monitor_get_transform (logical_monitor);
relative_transform = meta_monitor_transform_transform (
meta_monitor_transform_invert (
relative_transform = mtk_monitor_transform_transform (
mtk_monitor_transform_invert (
meta_cursor_sprite_get_texture_transform (cursor_sprite)),
meta_monitor_logical_to_crtc_transform (monitor, logical_transform));

View File

@ -221,22 +221,22 @@ static void
set_panel_orientation (MetaKmsConnectorState *state,
MetaKmsProp *panel_orientation)
{
MetaMonitorTransform transform;
MtkMonitorTransform transform;
MetaKmsConnectorPanelOrientation orientation = panel_orientation->value;
switch (orientation)
{
case META_KMS_CONNECTOR_PANEL_ORIENTATION_UPSIDE_DOWN:
transform = META_MONITOR_TRANSFORM_180;
transform = MTK_MONITOR_TRANSFORM_180;
break;
case META_KMS_CONNECTOR_PANEL_ORIENTATION_LEFT_SIDE_UP:
transform = META_MONITOR_TRANSFORM_90;
transform = MTK_MONITOR_TRANSFORM_90;
break;
case META_KMS_CONNECTOR_PANEL_ORIENTATION_RIGHT_SIDE_UP:
transform = META_MONITOR_TRANSFORM_270;
transform = MTK_MONITOR_TRANSFORM_270;
break;
default:
transform = META_MONITOR_TRANSFORM_NORMAL;
transform = MTK_MONITOR_TRANSFORM_NORMAL;
break;
}

View File

@ -55,7 +55,7 @@ typedef struct _MetaKmsConnectorState
int suggested_y;
gboolean hotplug_mode_update;
MetaMonitorTransform panel_orientation_transform;
MtkMonitorTransform panel_orientation_transform;
struct {
uint64_t value;

View File

@ -48,7 +48,7 @@ typedef struct _CrtcStateImpl
MetaKmsPlane *cursor_plane;
graphene_rect_t layout;
float scale;
MetaMonitorTransform transform;
MtkMonitorTransform transform;
MetaDrmBuffer *buffer;
graphene_point_t hotspot;
@ -275,9 +275,9 @@ calculate_cursor_rect (CrtcStateImpl *crtc_state_impl,
crtc_height = (int) roundf (crtc_state_impl->layout.size.height *
crtc_state_impl->scale);
meta_monitor_transform_transform_point (crtc_state_impl->transform,
&crtc_width, &crtc_height,
&crtc_x, &crtc_y);
mtk_monitor_transform_transform_point (crtc_state_impl->transform,
&crtc_width, &crtc_height,
&crtc_x, &crtc_y);
buffer_width = meta_drm_buffer_get_width (buffer);
buffer_height = meta_drm_buffer_get_height (buffer);
@ -732,7 +732,7 @@ typedef struct
{
MetaKmsCrtc *crtc;
MetaDrmBuffer *buffer;
MetaMonitorTransform transform;
MtkMonitorTransform transform;
graphene_point_t hotspot;
} UpdateSpriteData;
@ -779,7 +779,7 @@ void
meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager,
MetaKmsCrtc *crtc,
MetaDrmBuffer *buffer,
MetaMonitorTransform transform,
MtkMonitorTransform transform,
const graphene_point_t *hotspot)
{
UpdateSpriteData *data;

View File

@ -20,10 +20,10 @@
#include <glib-object.h>
#include <graphene.h>
#include "backends/meta-monitor-transform.h"
#include "backends/native/meta-backend-native-types.h"
#include "backends/native/meta-kms-types.h"
#include "core/util-private.h"
#include "mtk/mtk.h"
typedef struct _MetaKmsCrtcLayout
{
@ -54,7 +54,7 @@ void meta_kms_cursor_manager_position_changed_in_input_impl (MetaKmsCursorManage
void meta_kms_cursor_manager_update_sprite (MetaKmsCursorManager *cursor_manager,
MetaKmsCrtc *crtc,
MetaDrmBuffer *buffer,
MetaMonitorTransform transform,
MtkMonitorTransform transform,
const graphene_point_t *hotspot);
META_EXPORT_TEST

View File

@ -23,7 +23,6 @@
#include <drm_fourcc.h>
#include <stdio.h>
#include "backends/meta-monitor-transform.h"
#include "backends/native/meta-kms-crtc.h"
#include "backends/native/meta-kms-impl-device.h"
#include "backends/native/meta-kms-impl-device-atomic.h"
@ -134,7 +133,7 @@ meta_kms_plane_get_prop_drm_value (MetaKmsPlane *plane,
void
meta_kms_plane_update_set_rotation (MetaKmsPlane *plane,
MetaKmsPlaneAssignment *plane_assignment,
MetaMonitorTransform transform)
MtkMonitorTransform transform)
{
MetaKmsPlaneRotation kms_rotation = 0;
@ -142,31 +141,31 @@ meta_kms_plane_update_set_rotation (MetaKmsPlane *plane,
switch (transform)
{
case META_MONITOR_TRANSFORM_NORMAL:
case MTK_MONITOR_TRANSFORM_NORMAL:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_0;
break;
case META_MONITOR_TRANSFORM_90:
case MTK_MONITOR_TRANSFORM_90:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_90;
break;
case META_MONITOR_TRANSFORM_180:
case MTK_MONITOR_TRANSFORM_180:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_180;
break;
case META_MONITOR_TRANSFORM_270:
case MTK_MONITOR_TRANSFORM_270:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_270;
break;
case META_MONITOR_TRANSFORM_FLIPPED:
case MTK_MONITOR_TRANSFORM_FLIPPED:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_0 |
META_KMS_PLANE_ROTATION_REFLECT_X;
break;
case META_MONITOR_TRANSFORM_FLIPPED_90:
case MTK_MONITOR_TRANSFORM_FLIPPED_90:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_90 |
META_KMS_PLANE_ROTATION_REFLECT_X;
break;
case META_MONITOR_TRANSFORM_FLIPPED_180:
case MTK_MONITOR_TRANSFORM_FLIPPED_180:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_0 |
META_KMS_PLANE_ROTATION_REFLECT_Y;
break;
case META_MONITOR_TRANSFORM_FLIPPED_270:
case MTK_MONITOR_TRANSFORM_FLIPPED_270:
kms_rotation = META_KMS_PLANE_ROTATION_ROTATE_270 |
META_KMS_PLANE_ROTATION_REFLECT_X;
break;
@ -178,19 +177,19 @@ meta_kms_plane_update_set_rotation (MetaKmsPlane *plane,
}
gboolean
meta_kms_plane_is_transform_handled (MetaKmsPlane *plane,
MetaMonitorTransform transform)
meta_kms_plane_is_transform_handled (MetaKmsPlane *plane,
MtkMonitorTransform transform)
{
switch (transform)
{
case META_MONITOR_TRANSFORM_NORMAL:
case MTK_MONITOR_TRANSFORM_NORMAL:
return plane->rotations & META_KMS_PLANE_ROTATION_ROTATE_0;
case META_MONITOR_TRANSFORM_180:
case MTK_MONITOR_TRANSFORM_180:
return plane->rotations & META_KMS_PLANE_ROTATION_ROTATE_180;
case META_MONITOR_TRANSFORM_FLIPPED:
case MTK_MONITOR_TRANSFORM_FLIPPED:
return (plane->rotations & META_KMS_PLANE_ROTATION_ROTATE_0) &&
(plane->rotations & META_KMS_PLANE_ROTATION_REFLECT_X);
case META_MONITOR_TRANSFORM_FLIPPED_180:
case MTK_MONITOR_TRANSFORM_FLIPPED_180:
return (plane->rotations & META_KMS_PLANE_ROTATION_ROTATE_0) &&
(plane->rotations & META_KMS_PLANE_ROTATION_REFLECT_Y);
/*
@ -199,10 +198,10 @@ meta_kms_plane_is_transform_handled (MetaKmsPlane *plane,
* less optimal due to the complexity dealing with rotation at scan-out,
* potentially resulting in higher power consumption.
*/
case META_MONITOR_TRANSFORM_90:
case META_MONITOR_TRANSFORM_270:
case META_MONITOR_TRANSFORM_FLIPPED_90:
case META_MONITOR_TRANSFORM_FLIPPED_270:
case MTK_MONITOR_TRANSFORM_90:
case MTK_MONITOR_TRANSFORM_270:
case MTK_MONITOR_TRANSFORM_FLIPPED_90:
case MTK_MONITOR_TRANSFORM_FLIPPED_270:
return FALSE;
}

View File

@ -22,7 +22,8 @@
#include <xf86drmMode.h>
#include "backends/native/meta-kms-types.h"
#include "backends/meta-monitor-transform.h"
#include "core/util-private.h"
#include "mtk/mtk-monitor-transform.h"
enum _MetaKmsPlaneType
{
@ -55,8 +56,8 @@ MetaKmsPlaneType meta_kms_plane_get_plane_type (MetaKmsPlane *plane);
const MetaKmsPlaneCursorSizeHints *
meta_kms_plane_get_cursor_size_hints (MetaKmsPlane *plane);
gboolean meta_kms_plane_is_transform_handled (MetaKmsPlane *plane,
MetaMonitorTransform transform);
gboolean meta_kms_plane_is_transform_handled (MetaKmsPlane *plane,
MtkMonitorTransform transform);
gboolean meta_kms_plane_supports_cursor_hotspot (MetaKmsPlane *plane);
@ -74,4 +75,4 @@ gboolean meta_kms_plane_is_usable_with (MetaKmsPlane *plane,
void meta_kms_plane_update_set_rotation (MetaKmsPlane *plane,
MetaKmsPlaneAssignment *plane_assignment,
MetaMonitorTransform transform);
MtkMonitorTransform transform);

View File

@ -22,11 +22,11 @@
#include <stdint.h>
#include <xf86drmMode.h>
#include "backends/meta-monitor-transform.h"
#include "backends/meta-output.h"
#include "backends/native/meta-drm-buffer.h"
#include "backends/native/meta-kms-types.h"
#include "meta/boxes.h"
#include "mtk/mtk.h"
typedef enum _MetaKmsFeedbackResult
{

View File

@ -444,13 +444,13 @@ apply_transform (MetaCrtcKms *crtc_kms,
{
MetaCrtc *crtc = META_CRTC (crtc_kms);
const MetaCrtcConfig *crtc_config;
MetaMonitorTransform hw_transform;
MtkMonitorTransform hw_transform;
crtc_config = meta_crtc_get_config (crtc);
hw_transform = crtc_config->transform;
if (!meta_kms_plane_is_transform_handled (kms_plane, hw_transform))
hw_transform = META_MONITOR_TRANSFORM_NORMAL;
hw_transform = MTK_MONITOR_TRANSFORM_NORMAL;
if (!meta_kms_plane_is_transform_handled (kms_plane, hw_transform))
return;

View File

@ -379,7 +379,7 @@ meta_output_kms_new (MetaGpuKms *gpu_kms,
output_info->panel_orientation_transform =
connector_state->panel_orientation_transform;
if (meta_monitor_transform_is_rotated (output_info->panel_orientation_transform))
if (mtk_monitor_transform_is_rotated (output_info->panel_orientation_transform))
{
output_info->width_mm = connector_state->height_mm;
output_info->height_mm = connector_state->width_mm;

View File

@ -1323,13 +1323,13 @@ meta_renderer_native_create_cogl_renderer (MetaRenderer *renderer)
return cogl_renderer;
}
static MetaMonitorTransform
static MtkMonitorTransform
calculate_view_transform (MetaMonitorManager *monitor_manager,
MetaLogicalMonitor *logical_monitor,
MetaOutput *output,
MetaCrtc *crtc)
{
MetaMonitorTransform crtc_transform;
MtkMonitorTransform crtc_transform;
crtc = meta_output_get_assigned_crtc (output);
crtc_transform =
@ -1337,7 +1337,7 @@ calculate_view_transform (MetaMonitorManager *monitor_manager,
if (meta_crtc_native_is_transform_handled (META_CRTC_NATIVE (crtc),
crtc_transform))
return META_MONITOR_TRANSFORM_NORMAL;
return MTK_MONITOR_TRANSFORM_NORMAL;
else
return crtc_transform;
}
@ -1423,7 +1423,7 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
gboolean force_linear;
g_autoptr (ClutterColorState) color_state = NULL;
g_autoptr (ClutterColorState) blending_color_state = NULL;
MetaMonitorTransform view_transform;
MtkMonitorTransform view_transform;
g_autoptr (CoglFramebuffer) framebuffer = NULL;
g_autoptr (CoglOffscreen) offscreen = NULL;
gboolean use_shadowfb;
@ -1532,7 +1532,7 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
output,
crtc);
if (view_transform != META_MONITOR_TRANSFORM_NORMAL ||
if (view_transform != MTK_MONITOR_TRANSFORM_NORMAL ||
!clutter_color_state_equals (color_state, blending_color_state))
{
int offscreen_width;
@ -1557,7 +1557,7 @@ meta_renderer_native_create_view (MetaRenderer *renderer,
formats[n_formats++] = COGL_PIXEL_FORMAT_ABGR_FP_16161616_PRE;
}
if (meta_monitor_transform_is_rotated (view_transform))
if (mtk_monitor_transform_is_rotated (view_transform))
{
offscreen_width = onscreen_height;
offscreen_height = onscreen_width;