Merge branch 'inspector/extensions' into 'main'
inspector: List all extensions See merge request GNOME/gtk!7866
This commit is contained in:
@@ -51,6 +51,12 @@ typedef enum {
|
||||
GDK_VULKAN_FEATURE_SWAPCHAIN_MAINTENANCE = 1 << 5,
|
||||
} GdkVulkanFeatures;
|
||||
|
||||
#define GDK_VULKAN_N_FEATURES 6
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
extern const GdkDebugKey gdk_vulkan_feature_keys[];
|
||||
#endif
|
||||
|
||||
/* Tracks information about the device grab on this display */
|
||||
typedef struct
|
||||
{
|
||||
|
||||
@@ -103,7 +103,7 @@
|
||||
|
||||
#define DEFAULT_ALLOWED_APIS GDK_GL_API_GL | GDK_GL_API_GLES
|
||||
|
||||
static const GdkDebugKey gdk_gl_feature_keys[] = {
|
||||
const GdkDebugKey gdk_gl_feature_keys[] = {
|
||||
{ "debug", GDK_GL_FEATURE_DEBUG, "GL_KHR_debug" },
|
||||
{ "base-instance", GDK_GL_FEATURE_BASE_INSTANCE, "GL_ARB_base_instance" },
|
||||
{ "buffer-storage", GDK_GL_FEATURE_BUFFER_STORAGE, "GL_EXT_buffer_storage" },
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include "gdkdrawcontextprivate.h"
|
||||
#include "gdkglversionprivate.h"
|
||||
#include "gdkdmabufprivate.h"
|
||||
#include "gdkdebugprivate.h"
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@@ -33,6 +34,10 @@ typedef enum {
|
||||
GDK_GL_FEATURE_BUFFER_STORAGE = 1 << 2,
|
||||
} GdkGLFeatures;
|
||||
|
||||
#define GDK_GL_N_FEATURES 3
|
||||
|
||||
extern const GdkDebugKey gdk_gl_feature_keys[];
|
||||
|
||||
typedef enum {
|
||||
GDK_GL_NONE = 0,
|
||||
GDK_GL_EGL,
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include <math.h>
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
static const GdkDebugKey gdk_vulkan_feature_keys[] = {
|
||||
const GdkDebugKey gdk_vulkan_feature_keys[] = {
|
||||
{ "dmabuf", GDK_VULKAN_FEATURE_DMABUF, "Never import Dmabufs" },
|
||||
{ "ycbcr", GDK_VULKAN_FEATURE_YCBCR, "Do not support Ycbcr textures (also disables dmabufs)" },
|
||||
{ "semaphore-export", GDK_VULKAN_FEATURE_SEMAPHORE_EXPORT, "Disable sync of exported dmabufs" },
|
||||
|
||||
@@ -117,4 +117,3 @@ gdk_display_ref_vulkan (GdkDisplay *display,
|
||||
#endif /* !GDK_RENDERING_VULKAN */
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
||||
@@ -38,6 +38,8 @@
|
||||
#include "gdk/gdkdebugprivate.h"
|
||||
#include "gdk/gdkdisplayprivate.h"
|
||||
#include "gdk/gdkmonitorprivate.h"
|
||||
#include "gdk/gdkglcontextprivate.h"
|
||||
#include "gdk/gdkvulkancontextprivate.h"
|
||||
|
||||
#include "profile_conf.h"
|
||||
|
||||
@@ -91,13 +93,20 @@ struct _GtkInspectorGeneral
|
||||
GtkWidget *display_extensions_box;
|
||||
GtkWidget *monitor_box;
|
||||
GtkWidget *gl_box;
|
||||
GtkWidget *gl_features_row;
|
||||
GtkWidget *gl_features_box;
|
||||
GtkWidget *gl_extensions_row;
|
||||
GtkWidget *gl_extensions_box;
|
||||
GtkStringList *gl_extensions_list;
|
||||
GtkWidget *egl_extensions_row;
|
||||
GtkWidget *egl_extensions_row_name;
|
||||
GtkStringList *egl_extensions_list;
|
||||
GtkWidget *vulkan_box;
|
||||
GtkWidget *vulkan_features_row;
|
||||
GtkWidget *vulkan_features_box;
|
||||
GtkWidget *vulkan_extensions_row;
|
||||
GtkWidget *vulkan_extensions_box;
|
||||
GtkStringList *vulkan_extensions_list;
|
||||
GtkWidget *vulkan_layers_row;
|
||||
GtkWidget *vulkan_layers_box;
|
||||
GtkStringList *vulkan_layers_list;
|
||||
GtkWidget *device_box;
|
||||
GtkWidget *gtk_version;
|
||||
GtkWidget *gdk_backend;
|
||||
@@ -112,6 +121,7 @@ struct _GtkInspectorGeneral
|
||||
GtkWidget *gl_error;
|
||||
GtkWidget *gl_error_row;
|
||||
GtkWidget *gl_version;
|
||||
GtkWidget *gl_version_row;
|
||||
GtkWidget *gl_vendor;
|
||||
GtkWidget *gl_vendor_row;
|
||||
GtkWidget *gl_renderer;
|
||||
@@ -122,7 +132,11 @@ struct _GtkInspectorGeneral
|
||||
GtkWidget *glsl_version_row;
|
||||
GtkWidget *vk_device;
|
||||
GtkWidget *vk_api_version;
|
||||
GtkWidget *vk_api_version_row;
|
||||
GtkWidget *vk_driver_version;
|
||||
GtkWidget *vk_driver_version_row;
|
||||
GtkWidget *vk_error;
|
||||
GtkWidget *vk_error_row;
|
||||
GtkWidget *app_id_box;
|
||||
GtkWidget *app_id;
|
||||
GtkWidget *resource_path;
|
||||
@@ -303,42 +317,45 @@ add_label_row (GtkInspectorGeneral *gen,
|
||||
}
|
||||
|
||||
static void
|
||||
append_gl_extension_row (GtkInspectorGeneral *gen,
|
||||
const char *ext)
|
||||
add_gl_features (GtkInspectorGeneral *gen)
|
||||
{
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->gl_extensions_box), ext, epoxy_has_gl_extension (ext), 0);
|
||||
GdkGLContext *context;
|
||||
|
||||
context = gdk_display_get_gl_context (gen->display);
|
||||
|
||||
for (int i = 0; i < GDK_GL_N_FEATURES; i++)
|
||||
{
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->gl_features_box),
|
||||
gdk_gl_feature_keys[i].key,
|
||||
gdk_gl_context_has_feature (context, gdk_gl_feature_keys[i].value),
|
||||
0);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef GDK_WINDOWING_X11
|
||||
static void
|
||||
append_glx_extension_row (GtkInspectorGeneral *gen,
|
||||
Display *dpy,
|
||||
const char *ext)
|
||||
/* unused on some setup, like Mac */
|
||||
static void G_GNUC_UNUSED
|
||||
append_extensions (GtkStringList *list,
|
||||
const char *extensions)
|
||||
{
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->gl_extensions_box), ext, epoxy_has_glx_extension (dpy, 0, ext), 0);
|
||||
}
|
||||
#endif
|
||||
char **items;
|
||||
gsize i;
|
||||
|
||||
#ifdef GDK_WINDOWING_WIN32
|
||||
static void
|
||||
append_wgl_extension_row (GtkInspectorGeneral *gen,
|
||||
const char *ext)
|
||||
{
|
||||
HDC hdc = wglGetCurrentDC ();
|
||||
if (extensions == NULL)
|
||||
return;
|
||||
|
||||
items = g_strsplit (extensions, " ", -1);
|
||||
for (i = 0; items[i]; i++)
|
||||
{
|
||||
if (items[i] == NULL || items[i][0] == 0)
|
||||
continue;
|
||||
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->gl_extensions_box), ext, epoxy_has_wgl_extension (hdc, ext), 0);
|
||||
}
|
||||
#endif
|
||||
gtk_string_list_append (list, items[i]);
|
||||
}
|
||||
|
||||
#if defined(GDK_WINDOWING_WAYLAND) || defined (GDK_WINDOWING_X11) || (defined (GDK_WINDOWING_WIN32) && defined(GDK_WIN32_ENABLE_EGL))
|
||||
static void
|
||||
append_egl_extension_row (GtkInspectorGeneral *gen,
|
||||
EGLDisplay dpy,
|
||||
const char *ext)
|
||||
{
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->gl_extensions_box), ext, epoxy_has_egl_extension (dpy, ext), 0);
|
||||
g_strfreev (items);
|
||||
}
|
||||
|
||||
#if defined(GDK_WINDOWING_X11) || defined(GDK_WINDOWING_WAYLAND) || (defined(GDK_WINDOWING_WIN32) && defined(GDK_WIN32_ENABLE_EGL))
|
||||
static EGLDisplay
|
||||
get_egl_display (GdkDisplay *display)
|
||||
{
|
||||
@@ -367,36 +384,37 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
GdkGLContext *context;
|
||||
GError *error = NULL;
|
||||
int major, minor;
|
||||
int num_extensions, i;
|
||||
char *s;
|
||||
|
||||
if (!gdk_display_prepare_gl (gen->display, &error))
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_version), C_("GL version", "None"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_renderer), C_("GL renderer", "None"));
|
||||
gtk_widget_set_visible (gen->gl_error_row, TRUE);
|
||||
gtk_widget_set_visible (gen->gl_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_backend_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_backend_vendor_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_renderer_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_vendor_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_full_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->glsl_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_features_row, FALSE);
|
||||
gtk_widget_set_visible (gen->gl_extensions_row, FALSE);
|
||||
gtk_widget_set_visible (gen->egl_extensions_row, FALSE);
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_error), error->message);
|
||||
g_error_free (error);
|
||||
return;
|
||||
}
|
||||
|
||||
gdk_gl_context_make_current (gdk_display_get_gl_context (gen->display));
|
||||
append_gl_extension_row (gen, "GL_OES_rgb8_rgba8");
|
||||
append_gl_extension_row (gen, "GL_EXT_abgr");
|
||||
append_gl_extension_row (gen, "GL_EXT_texture_format_BGRA8888");
|
||||
append_gl_extension_row (gen, "GL_EXT_texture_norm16");
|
||||
append_gl_extension_row (gen, "GL_OES_texture_half_float");
|
||||
append_gl_extension_row (gen, "GL_EXT_color_buffer_half_float");
|
||||
append_gl_extension_row (gen, "GL_OES_texture_half_float_linear");
|
||||
append_gl_extension_row (gen, "GL_OES_vertex_half_float");
|
||||
append_gl_extension_row (gen, "GL_OES_texture_float");
|
||||
append_gl_extension_row (gen, "GL_EXT_color_buffer_float");
|
||||
append_gl_extension_row (gen, "GL_OES_texture_float_linear");
|
||||
gdk_gl_context_make_current (gdk_display_get_gl_context (gen->display));
|
||||
|
||||
glGetIntegerv (GL_NUM_EXTENSIONS, &num_extensions);
|
||||
for (i = 0; i < num_extensions; i++)
|
||||
{
|
||||
const char *gl_ext = (const char *) glGetStringi (GL_EXTENSIONS, i);
|
||||
if (!gl_ext)
|
||||
break;
|
||||
gtk_string_list_append (GTK_STRING_LIST (gen->gl_extensions_list), gl_ext);
|
||||
}
|
||||
|
||||
#if defined(GDK_WINDOWING_X11) || defined(GDK_WINDOWING_WAYLAND) || (defined(GDK_WINDOWING_WIN32) && defined(GDK_WIN32_ENABLE_EGL))
|
||||
EGLDisplay egl_display = get_egl_display (gen->display);
|
||||
@@ -410,14 +428,8 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_backend_vendor), eglQueryString (egl_display, EGL_VENDOR));
|
||||
|
||||
append_egl_extension_row (gen, egl_display, "EGL_KHR_create_context");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_EXT_buffer_age");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_EXT_swap_buffers_with_damage");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_KHR_swap_buffers_with_damage");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_KHR_surfaceless_context");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_KHR_no_config_context");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_EXT_image_dma_buf_import_modifiers");
|
||||
append_egl_extension_row (gen, egl_display, "EGL_MESA_image_dma_buf_export");
|
||||
gtk_label_set_text (GTK_LABEL (gen->egl_extensions_row_name), "EGL extensions");
|
||||
append_extensions (gen->egl_extensions_list, eglQueryString (egl_display, EGL_EXTENSIONS));
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -425,7 +437,7 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
if (GDK_IS_X11_DISPLAY (gen->display))
|
||||
{
|
||||
Display *dpy = GDK_DISPLAY_XDISPLAY (gen->display);
|
||||
int error_base, event_base;
|
||||
int error_base, event_base, screen;
|
||||
char *version;
|
||||
|
||||
if (!glXQueryExtension (dpy, &error_base, &event_base))
|
||||
@@ -436,14 +448,9 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
g_free (version);
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_backend_vendor), glXGetClientString (dpy, GLX_VENDOR));
|
||||
|
||||
append_glx_extension_row (gen, dpy, "GLX_ARB_create_context_profile");
|
||||
append_glx_extension_row (gen, dpy, "GLX_SGI_swap_control");
|
||||
append_glx_extension_row (gen, dpy, "GLX_EXT_texture_from_pixmap");
|
||||
append_glx_extension_row (gen, dpy, "GLX_SGI_video_sync");
|
||||
append_glx_extension_row (gen, dpy, "GLX_EXT_buffer_age");
|
||||
append_glx_extension_row (gen, dpy, "GLX_OML_sync_control");
|
||||
append_glx_extension_row (gen, dpy, "GLX_ARB_multisample");
|
||||
append_glx_extension_row (gen, dpy, "GLX_EXT_visual_rating");
|
||||
screen = XScreenNumberOfScreen (gdk_x11_display_get_xscreen (gen->display));
|
||||
gtk_label_set_text (GTK_LABEL (gen->egl_extensions_row_name), "GLX extensions");
|
||||
append_extensions (gen->egl_extensions_list, glXQueryExtensionsString (dpy, screen));
|
||||
}
|
||||
else
|
||||
#endif
|
||||
@@ -451,20 +458,28 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
if (GDK_IS_WIN32_DISPLAY (gen->display) &&
|
||||
gdk_gl_backend_can_be_used (GDK_GL_WGL, NULL))
|
||||
{
|
||||
PFNWGLGETEXTENSIONSSTRINGARBPROC wglGetExtensionsStringARB;
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_backend_vendor), "Microsoft WGL");
|
||||
gtk_widget_set_visible (gen->gl_backend_version, FALSE);
|
||||
|
||||
append_gl_extension_row (gen, "GL_WIN_swap_hint");
|
||||
append_wgl_extension_row (gen, "WGL_ARB_pixel_format");
|
||||
append_wgl_extension_row (gen, "WGL_ARB_create_context");
|
||||
append_wgl_extension_row (gen, "WGL_EXT_swap_control");
|
||||
append_wgl_extension_row (gen, "WGL_OML_sync_control");
|
||||
wglGetExtensionsStringARB = (PFNWGLGETEXTENSIONSSTRINGARBPROC) wglGetProcAddress("wglGetExtensionsStringARB");
|
||||
|
||||
if (wglGetExtensionsStringARB)
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->egl_extensions_row_name), "WGL extensions");
|
||||
append_extensions (gen->egl_extensions_list, wglGetExtensionsStringARB (wglGetCurrentDC ()));
|
||||
}
|
||||
else
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->egl_extensions_row_name), "WGL extensions: none");
|
||||
}
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_backend_version), C_("GL version", "Unknown"));
|
||||
gtk_widget_set_visible (gen->gl_backend_vendor_row, FALSE);
|
||||
gtk_widget_set_visible (gen->egl_extensions_row, FALSE);
|
||||
}
|
||||
|
||||
context = gdk_display_get_gl_context (gen->display);
|
||||
@@ -479,97 +494,74 @@ init_gl (GtkInspectorGeneral *gen)
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_renderer), (const char *) glGetString (GL_RENDERER));
|
||||
gtk_label_set_text (GTK_LABEL (gen->gl_full_version), (const char *) glGetString (GL_VERSION));
|
||||
gtk_label_set_text (GTK_LABEL (gen->glsl_version), (const char *) glGetString (GL_SHADING_LANGUAGE_VERSION));
|
||||
|
||||
add_gl_features (gen);
|
||||
}
|
||||
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
static gboolean
|
||||
gdk_vulkan_has_feature (GdkDisplay *display,
|
||||
GdkVulkanFeatures feature)
|
||||
{
|
||||
return (display->vulkan_features & feature) ? TRUE : FALSE;
|
||||
}
|
||||
|
||||
static void
|
||||
add_instance_extensions (GtkInspectorGeneral *gen,
|
||||
...)
|
||||
add_vulkan_features (GtkInspectorGeneral *gen)
|
||||
{
|
||||
for (int i = 0; i < GDK_VULKAN_N_FEATURES; i++)
|
||||
{
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->vulkan_features_box),
|
||||
gdk_vulkan_feature_keys[i].key,
|
||||
gdk_vulkan_has_feature (gen->display, gdk_vulkan_feature_keys[i].value),
|
||||
0);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
add_instance_extensions (GtkStringList *list)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t n_extensions;
|
||||
VkExtensionProperties *extensions;
|
||||
va_list args;
|
||||
const char *name;
|
||||
|
||||
vkEnumerateInstanceExtensionProperties (NULL, &n_extensions, NULL);
|
||||
extensions = g_newa (VkExtensionProperties, n_extensions);
|
||||
vkEnumerateInstanceExtensionProperties (NULL, &n_extensions, extensions);
|
||||
|
||||
va_start (args, gen);
|
||||
|
||||
while ((name = va_arg (args, const char *)) != NULL)
|
||||
{
|
||||
for (i = 0; i < n_extensions; i++)
|
||||
{
|
||||
if (g_str_equal (extensions[i].extensionName, name))
|
||||
break;
|
||||
}
|
||||
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->vulkan_extensions_box), name, i < n_extensions, 0);
|
||||
}
|
||||
|
||||
va_end (args);
|
||||
for (i = 0; i < n_extensions; i++)
|
||||
gtk_string_list_append (list, extensions[i].extensionName);
|
||||
}
|
||||
|
||||
static void
|
||||
add_device_extensions (GtkInspectorGeneral *gen,
|
||||
...)
|
||||
add_device_extensions (VkPhysicalDevice device,
|
||||
GtkStringList *list)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t n_extensions;
|
||||
VkExtensionProperties *extensions;
|
||||
va_list args;
|
||||
const char *name;
|
||||
|
||||
vkEnumerateDeviceExtensionProperties (gen->display->vk_physical_device, NULL, &n_extensions, NULL);
|
||||
vkEnumerateDeviceExtensionProperties (device, NULL, &n_extensions, NULL);
|
||||
extensions = g_newa (VkExtensionProperties, n_extensions);
|
||||
vkEnumerateDeviceExtensionProperties (gen->display->vk_physical_device, NULL, &n_extensions, extensions);
|
||||
vkEnumerateDeviceExtensionProperties (device, NULL, &n_extensions, extensions);
|
||||
|
||||
va_start (args, gen);
|
||||
|
||||
while ((name = va_arg (args, const char *)) != NULL)
|
||||
{
|
||||
for (i = 0; i < n_extensions; i++)
|
||||
{
|
||||
if (g_str_equal (extensions[i].extensionName, name))
|
||||
break;
|
||||
}
|
||||
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->vulkan_extensions_box), name, i < n_extensions, 0);
|
||||
}
|
||||
|
||||
va_end (args);
|
||||
for (i = 0; i < n_extensions; i++)
|
||||
gtk_string_list_append (list, extensions[i].extensionName);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
add_layers (GtkInspectorGeneral *gen,
|
||||
...)
|
||||
static void
|
||||
add_layers (GtkStringList *list)
|
||||
{
|
||||
uint32_t i;
|
||||
uint32_t n_layers;
|
||||
VkLayerProperties *layers;
|
||||
va_list args;
|
||||
const char *name;
|
||||
|
||||
vkEnumerateInstanceLayerProperties (&n_layers, NULL);
|
||||
layers = g_newa (VkLayerProperties, n_layers);
|
||||
vkEnumerateInstanceLayerProperties (&n_layers, layers);
|
||||
|
||||
va_start (args, gen);
|
||||
|
||||
while ((name = va_arg (args, const char *)) != NULL)
|
||||
{
|
||||
for (i = 0; i < n_layers; i++)
|
||||
{
|
||||
if (g_str_equal (layers[i].layerName, "VK_LAYER_KHRONOS_validation"))
|
||||
break;
|
||||
}
|
||||
|
||||
add_check_row (gen, GTK_LIST_BOX (gen->vulkan_layers_box), name, i < n_layers, 0);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
for (i = 0; i < n_layers; i++)
|
||||
gtk_string_list_append (list, layers[i].layerName);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -577,78 +569,63 @@ static void
|
||||
init_vulkan (GtkInspectorGeneral *gen)
|
||||
{
|
||||
#ifdef GDK_RENDERING_VULKAN
|
||||
if (!gdk_has_feature (GDK_FEATURE_VULKAN))
|
||||
VkPhysicalDevice vk_device;
|
||||
VkPhysicalDeviceProperties props;
|
||||
char *device_name;
|
||||
char *api_version;
|
||||
char *driver_version;
|
||||
const char *types[] = { "other", "integrated GPU", "discrete GPU", "virtual GPU", "CPU" };
|
||||
GError *error = NULL;
|
||||
|
||||
if (!gdk_display_init_vulkan (gen->display, &error))
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "Disabled"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_api_version), C_("Vulkan version", "Disabled"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_driver_version), C_("Vulkan version", "Disabled"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "None"));
|
||||
gtk_widget_set_visible (gen->vk_error_row, TRUE);
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_error), error->message);
|
||||
g_error_free (error);
|
||||
|
||||
gtk_widget_set_visible (gen->vk_api_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vk_driver_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vulkan_features_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vulkan_layers_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vulkan_extensions_row, FALSE);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gen->display->vk_device)
|
||||
{
|
||||
VkPhysicalDevice vk_device;
|
||||
VkPhysicalDeviceProperties props;
|
||||
char *device_name;
|
||||
char *api_version;
|
||||
char *driver_version;
|
||||
const char *types[] = { "other", "integrated GPU", "discrete GPU", "virtual GPU", "CPU" };
|
||||
vk_device = gen->display->vk_physical_device;
|
||||
vkGetPhysicalDeviceProperties (vk_device, &props);
|
||||
|
||||
vk_device = gen->display->vk_physical_device;
|
||||
vkGetPhysicalDeviceProperties (vk_device, &props);
|
||||
device_name = g_strdup_printf ("%s (%s)", props.deviceName, types[props.deviceType]);
|
||||
api_version = g_strdup_printf ("%d.%d.%d",
|
||||
VK_VERSION_MAJOR (props.apiVersion),
|
||||
VK_VERSION_MINOR (props.apiVersion),
|
||||
VK_VERSION_PATCH (props.apiVersion));
|
||||
driver_version = g_strdup_printf ("%d.%d.%d",
|
||||
VK_VERSION_MAJOR (props.driverVersion),
|
||||
VK_VERSION_MINOR (props.driverVersion),
|
||||
VK_VERSION_PATCH (props.driverVersion));
|
||||
|
||||
device_name = g_strdup_printf ("%s (%s)", props.deviceName, types[props.deviceType]);
|
||||
api_version = g_strdup_printf ("%d.%d.%d",
|
||||
VK_VERSION_MAJOR (props.apiVersion),
|
||||
VK_VERSION_MINOR (props.apiVersion),
|
||||
VK_VERSION_PATCH (props.apiVersion));
|
||||
driver_version = g_strdup_printf ("%d.%d.%d",
|
||||
VK_VERSION_MAJOR (props.driverVersion),
|
||||
VK_VERSION_MINOR (props.driverVersion),
|
||||
VK_VERSION_PATCH (props.driverVersion));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), device_name);
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_api_version), api_version);
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_driver_version), driver_version);
|
||||
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), device_name);
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_api_version), api_version);
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_driver_version), driver_version);
|
||||
g_free (device_name);
|
||||
g_free (api_version);
|
||||
g_free (driver_version);
|
||||
|
||||
g_free (device_name);
|
||||
g_free (api_version);
|
||||
g_free (driver_version);
|
||||
add_vulkan_features (gen);
|
||||
add_instance_extensions (gen->vulkan_extensions_list);
|
||||
add_device_extensions (gen->display->vk_physical_device, gen->vulkan_extensions_list);
|
||||
add_layers (gen->vulkan_layers_list);
|
||||
|
||||
add_instance_extensions (gen,
|
||||
VK_KHR_SURFACE_EXTENSION_NAME,
|
||||
"VK_KHR_xlib_surface",
|
||||
"VK_KHR_wayland_surface",
|
||||
VK_EXT_SURFACE_MAINTENANCE_1_EXTENSION_NAME,
|
||||
VK_EXT_DEBUG_REPORT_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_MEMORY_CAPABILITIES_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES_EXTENSION_NAME,
|
||||
VK_KHR_GET_SURFACE_CAPABILITIES_2_EXTENSION_NAME,
|
||||
VK_KHR_GET_PHYSICAL_DEVICE_PROPERTIES_2_EXTENSION_NAME,
|
||||
NULL);
|
||||
|
||||
add_device_extensions (gen,
|
||||
VK_KHR_SWAPCHAIN_EXTENSION_NAME,
|
||||
VK_KHR_SAMPLER_YCBCR_CONVERSION_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_MEMORY_FD_EXTENSION_NAME,
|
||||
VK_EXT_IMAGE_DRM_FORMAT_MODIFIER_EXTENSION_NAME,
|
||||
VK_EXT_EXTERNAL_MEMORY_DMA_BUF_EXTENSION_NAME,
|
||||
VK_KHR_EXTERNAL_SEMAPHORE_FD_EXTENSION_NAME,
|
||||
VK_KHR_INCREMENTAL_PRESENT_EXTENSION_NAME,
|
||||
VK_EXT_SWAPCHAIN_MAINTENANCE_1_EXTENSION_NAME,
|
||||
NULL);
|
||||
|
||||
add_layers (gen,
|
||||
"VK_LAYER_KHRONOS_validation",
|
||||
NULL);
|
||||
}
|
||||
else
|
||||
gdk_display_unref_vulkan (gen->display);
|
||||
#else
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "None"));
|
||||
gtk_widget_set_visible (gen->vk_api_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vk_driver_version_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vulkan_layers_row, FALSE);
|
||||
gtk_widget_set_visible (gen->vulkan_extensions_row, FALSE);
|
||||
#endif
|
||||
{
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_device), C_("Vulkan device", "None"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_api_version), C_("Vulkan version", "None"));
|
||||
gtk_label_set_text (GTK_LABEL (gen->vk_driver_version), C_("Vulkan version", "None"));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -1327,13 +1304,20 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, display_extensions_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, monitor_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_features_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_features_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_extensions_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_extensions_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_extensions_list);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, egl_extensions_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, egl_extensions_row_name);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, egl_extensions_list);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_features_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_features_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_extensions_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_extensions_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_extensions_list);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_layers_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_layers_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vulkan_layers_list);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gtk_version);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gdk_backend);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gsk_renderer);
|
||||
@@ -1343,6 +1327,7 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_error);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_error_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_version);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_version_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_backend_version);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_backend_version_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, gl_backend_vendor);
|
||||
@@ -1357,7 +1342,11 @@ gtk_inspector_general_class_init (GtkInspectorGeneralClass *klass)
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, glsl_version_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_device);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_api_version);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_api_version_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_driver_version);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_driver_version_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_error);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, vk_error_row);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, app_id_box);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, app_id);
|
||||
gtk_widget_class_bind_template_child (widget_class, GtkInspectorGeneral, resource_path);
|
||||
|
||||
@@ -584,7 +584,65 @@
|
||||
<class name="boxed-list"/>
|
||||
</style>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<object class="GtkListBoxRow" id="gl_renderer_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_renderer_label">
|
||||
<property name="label" translatable="yes">GL Renderer</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_renderer">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="wrap">1</property>
|
||||
<property name="wrap-mode">word-char</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_vendor_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_vendor_label">
|
||||
<property name="label" translatable="yes">GL Vendor</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_vendor">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="wrap">1</property>
|
||||
<property name="wrap-mode">word-char</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_version_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
@@ -610,6 +668,33 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_backend_vendor_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_backend_vendor_label">
|
||||
<property name="label" translatable="yes">GL Backend Vendor</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_backend_vendor">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_backend_version_row">
|
||||
<property name="activatable">0</property>
|
||||
@@ -660,91 +745,6 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_backend_vendor_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_backend_vendor_label">
|
||||
<property name="label" translatable="yes">GL Backend Vendor</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_backend_vendor">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_vendor_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_vendor_label">
|
||||
<property name="label" translatable="yes">GL_VENDOR</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_vendor">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="wrap">1</property>
|
||||
<property name="wrap-mode">word-char</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_renderer_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_renderer_label">
|
||||
<property name="label" translatable="yes">GL_RENDERER</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_renderer">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="wrap">1</property>
|
||||
<property name="wrap-mode">word-char</property>
|
||||
<property name="justify">right</property>
|
||||
<property name="hexpand">1</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_full_version_row">
|
||||
<property name="activatable">0</property>
|
||||
@@ -753,7 +753,7 @@
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="gl_full_version_label">
|
||||
<property name="label" translatable="yes">GL_VERSION</property>
|
||||
<property name="label" translatable="yes">GL Full Version</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
@@ -782,7 +782,7 @@
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="glsl_version_label">
|
||||
<property name="label" translatable="yes">GL_SHADING_LANGUAGE_VERSION</property>
|
||||
<property name="label" translatable="yes">GLSL Version</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
@@ -808,17 +808,193 @@
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkExpander">
|
||||
<property name="valign">center</property>
|
||||
<property name="label-widget">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Extensions</property>
|
||||
<property name="label" translatable="yes">GL Extensions</property>
|
||||
<property name="margin-start">10</property>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="gl_extensions_box">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="gl_extensions_searchentry"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListView">
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
<property name="model">
|
||||
<object class="GtkNoSelection">
|
||||
<property name="model">
|
||||
<object class="GtkFilterListModel">
|
||||
<property name="filter">
|
||||
<object class="GtkStringFilter">
|
||||
<property name="expression">
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
<binding name="search">
|
||||
<lookup name="text" type="GtkSearchEntry">
|
||||
gl_extensions_searchentry
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkSortListModel">
|
||||
<property name="sorter">
|
||||
<object class="GtkStringSorter">
|
||||
<property name='expression'>
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="gl_extensions_list" />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="bytes"><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class='GtkListItem'>
|
||||
<property name='activatable'>0</property>
|
||||
<property name='child'>
|
||||
<object class='GtkInscription'>
|
||||
<property name='xalign'>0</property>
|
||||
<binding name='text'>
|
||||
<lookup name='string' type='GtkStringObject'>
|
||||
<lookup name='item'>GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
||||
]]></property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="egl_extensions_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkExpander">
|
||||
<property name="valign">center</property>
|
||||
<property name="label-widget">
|
||||
<object class="GtkLabel" id="egl_extensions_row_name">
|
||||
<property name="label" translatable="yes">EGL Extensions</property>
|
||||
<property name="margin-start">10</property>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="egl_extensions_searchentry"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListView">
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
<property name="model">
|
||||
<object class="GtkNoSelection">
|
||||
<property name="model">
|
||||
<object class="GtkFilterListModel">
|
||||
<property name="filter">
|
||||
<object class="GtkStringFilter">
|
||||
<property name="expression">
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
<binding name="search">
|
||||
<lookup name="text" type="GtkSearchEntry">
|
||||
egl_extensions_searchentry
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkSortListModel">
|
||||
<property name="sorter">
|
||||
<object class="GtkStringSorter">
|
||||
<property name='expression'>
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="egl_extensions_list" />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="bytes"><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class='GtkListItem'>
|
||||
<property name='activatable'>0</property>
|
||||
<property name='child'>
|
||||
<object class='GtkInscription'>
|
||||
<property name='xalign'>0</property>
|
||||
<binding name='text'>
|
||||
<lookup name='string' type='GtkStringObject'>
|
||||
<lookup name='item'>GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
||||
]]></property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="gl_features_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkExpander">
|
||||
<property name="label-widget">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Features</property>
|
||||
<property name="margin-start">10</property>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="gl_features_box">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">fill</property>
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
@@ -866,14 +1042,14 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<object class="GtkListBoxRow" id="vk_api_version_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="vk_api_version_label">
|
||||
<property name="label" translatable="yes">Vulkan API version</property>
|
||||
<property name="label" translatable="yes">Vulkan API Version</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
@@ -893,14 +1069,14 @@
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow">
|
||||
<object class="GtkListBoxRow" id="vk_driver_version_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="vk_driver_version_label">
|
||||
<property name="label" translatable="yes">Vulkan driver version</property>
|
||||
<property name="label" translatable="yes">Vulkan Driver Version</property>
|
||||
<property name="halign">start</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="xalign">0.0</property>
|
||||
@@ -919,6 +1095,29 @@
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="vk_error_row">
|
||||
<property name="activatable">0</property>
|
||||
<property name="visible">0</property>
|
||||
<child>
|
||||
<object class="GtkBox">
|
||||
<property name="spacing">40</property>
|
||||
<child>
|
||||
<object class="GtkLabel" id="vk_error">
|
||||
<property name="selectable">1</property>
|
||||
<property name="halign">end</property>
|
||||
<property name="valign">baseline</property>
|
||||
<property name="ellipsize">end</property>
|
||||
<property name="hexpand">1</property>
|
||||
<style>
|
||||
<class name="error"/>
|
||||
</style>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="vulkan_layers_row">
|
||||
<property name="activatable">0</property>
|
||||
@@ -931,13 +1130,56 @@
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="vulkan_layers_box">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="halign">center</property>
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkListView">
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
<property name="model">
|
||||
<object class="GtkNoSelection">
|
||||
<property name="model">
|
||||
<object class="GtkSortListModel">
|
||||
<property name="sorter">
|
||||
<object class="GtkStringSorter">
|
||||
<property name='expression'>
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="vulkan_layers_list" />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="bytes"><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class='GtkListItem'>
|
||||
<property name='activatable'>0</property>
|
||||
<property name='child'>
|
||||
<object class='GtkInscription'>
|
||||
<property name='xalign'>0</property>
|
||||
<binding name='text'>
|
||||
<lookup name='string' type='GtkStringObject'>
|
||||
<lookup name='item'>GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
||||
]]></property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
@@ -949,17 +1191,105 @@
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkExpander">
|
||||
<property name="valign">center</property>
|
||||
<property name="label-widget">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Extensions</property>
|
||||
<property name="label" translatable="yes">Vulkan Extensions</property>
|
||||
<property name="margin-start">10</property>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="vulkan_extensions_box">
|
||||
<object class="GtkBox">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="orientation">vertical</property>
|
||||
<child>
|
||||
<object class="GtkSearchEntry" id="vulkan_extensions_searchentry"/>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListView">
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
<property name="model">
|
||||
<object class="GtkNoSelection">
|
||||
<property name="model">
|
||||
<object class="GtkFilterListModel">
|
||||
<property name="filter">
|
||||
<object class="GtkStringFilter">
|
||||
<property name="expression">
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
<binding name="search">
|
||||
<lookup name="text" type="GtkSearchEntry">
|
||||
vulkan_extensions_searchentry
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkSortListModel">
|
||||
<property name="sorter">
|
||||
<object class="GtkStringSorter">
|
||||
<property name='expression'>
|
||||
<lookup name='string' type='GtkStringObject' />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="model">
|
||||
<object class="GtkStringList" id="vulkan_extensions_list" />
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</property>
|
||||
<property name="factory">
|
||||
<object class="GtkBuilderListItemFactory">
|
||||
<property name="bytes"><![CDATA[
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<interface>
|
||||
<template class='GtkListItem'>
|
||||
<property name='activatable'>0</property>
|
||||
<property name='child'>
|
||||
<object class='GtkInscription'>
|
||||
<property name='xalign'>0</property>
|
||||
<binding name='text'>
|
||||
<lookup name='string' type='GtkStringObject'>
|
||||
<lookup name='item'>GtkListItem</lookup>
|
||||
</lookup>
|
||||
</binding>
|
||||
</object>
|
||||
</property>
|
||||
</template>
|
||||
</interface>
|
||||
]]></property>
|
||||
</object>
|
||||
</property>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
<object class="GtkListBoxRow" id="vulkan_features_row">
|
||||
<property name="activatable">0</property>
|
||||
<child>
|
||||
<object class="GtkExpander">
|
||||
<property name="label-widget">
|
||||
<object class="GtkLabel">
|
||||
<property name="label" translatable="yes">Features</property>
|
||||
<property name="margin-start">10</property>
|
||||
</object>
|
||||
</property>
|
||||
<child>
|
||||
<object class="GtkListBox" id="vulkan_features_box">
|
||||
<property name="margin-top">20</property>
|
||||
<property name="selection-mode">none</property>
|
||||
<property name="halign">center</property>
|
||||
<property name="halign">fill</property>
|
||||
<style>
|
||||
<class name="rich-list"/>
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user