tests/kms/render: Add direct scanout test case

This adds a minimalistic fullscreen direct scanout test case, that runs
on vkms. It doesn't use EGL, and it uses uninitialized memory, thus it
lacks any kind of implicit synchronization, but it does test that the
scanout selection paths are working.

What is tested is:

  * DMA buffer allocated using gbm on top of VKMS
  * Buffer passes a mode setting TEST_ONLY check
  * Paint is omitted
  * Correct buffer active in KMS after presentation

What isn't yet tested:

  * Implicit synchronization related behavior
  * Presented pixel content

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/2417>
This commit is contained in:
Jonas Ådahl
2022-05-13 22:09:35 +02:00
committed by Marge Bot
parent d7e1af98ac
commit c9960850c8
8 changed files with 613 additions and 16 deletions

View File

@ -35,6 +35,7 @@
#include "backends/native/meta-kms-update.h"
#define META_TYPE_CRTC_KMS (meta_crtc_kms_get_type ())
META_EXPORT_TEST
G_DECLARE_FINAL_TYPE (MetaCrtcKms, meta_crtc_kms,
META, CRTC_KMS,
MetaCrtcNative)
@ -58,6 +59,7 @@ void meta_crtc_kms_set_mode (MetaCrtcKms *crtc_kms,
void meta_crtc_kms_set_is_underscanning (MetaCrtcKms *crtc_kms,
gboolean is_underscanning);
META_EXPORT_TEST
MetaKmsCrtc * meta_crtc_kms_get_kms_crtc (MetaCrtcKms *crtc_kms);
GArray * meta_crtc_kms_get_modifiers (MetaCrtcKms *crtc_kms,

View File

@ -42,6 +42,7 @@ typedef enum _MetaDeviceFileTags
typedef struct _MetaDeviceFile MetaDeviceFile;
typedef struct _MetaDevicePool MetaDevicePool;
META_EXPORT_TEST
int meta_device_file_get_fd (MetaDeviceFile *device_file);
const char * meta_device_file_get_path (MetaDeviceFile *device_file);

View File

@ -48,6 +48,7 @@ int meta_drm_buffer_export_fd (MetaDrmBuffer *buffer,
gboolean meta_drm_buffer_ensure_fb_id (MetaDrmBuffer *buffer,
GError **error);
META_EXPORT_TEST
uint32_t meta_drm_buffer_get_fb_id (MetaDrmBuffer *buffer);
uint32_t meta_drm_buffer_get_handle (MetaDrmBuffer *buffer);

View File

@ -27,8 +27,10 @@
#include "backends/native/meta-backend-native-types.h"
#include "clutter/clutter.h"
#include "cogl/cogl.h"
#include "core/util-private.h"
#define META_TYPE_ONSCREEN_NATIVE (meta_onscreen_native_get_type ())
META_EXPORT_TEST
G_DECLARE_FINAL_TYPE (MetaOnscreenNative, meta_onscreen_native,
META, ONSCREEN_NATIVE,
CoglOnscreenEgl)
@ -54,6 +56,7 @@ MetaOnscreenNative * meta_onscreen_native_new (MetaRendererNative *renderer_nati
int width,
int height);
META_EXPORT_TEST
MetaCrtc * meta_onscreen_native_get_crtc (MetaOnscreenNative *onscreen_native);
#endif /* META_ONSCREEN_NATIVE_H */