Ну вы вспомнили!
Кажется последний раз, когда полноценное ускорение 2D было, это EXA в AMD Northern Islands, а это 2010 год! Ну и да, в то же время SNA у intel.
Модератор: Модераторы разделов
Ну вы вспомнили!
Не совсем понятно где не используется. Посмотрел:
Shell
$ grep -R cairo_surface_create_similar .
./gdk/gdkcairo.c: surface = cairo_surface_create_similar_image (cairo_get_target (cr),
./gdk/gdkgl.c: image = cairo_surface_create_similar_image (cairo_get_target (cr),
./gdk/gdkwindow.c: surface = cairo_surface_create_similar (window_surface,
./gdk/gdkwindow.c: * Note that unlike cairo_surface_create_similar_image(), the new
./gdk/gdkwindow.c: cairo_surface_create_similar_image (window_surface,
./gdk/x11/gdkwindow-x11.c: * cairo_surface_create_similar(). In some cases however, we must use a
./gtk/deprecated/gtknumerableicon.c: surface = cairo_surface_create_similar (image, CAIRO_CONTENT_COLOR_ALPHA,
./gtk/gtkcssimage.c: result = cairo_surface_create_similar (target,
./gtk/gtkcssimagesurface.c: surface->cache = cairo_surface_create_similar_image (surface->surface,
./gtk/gtkcssshadowvalue.c: surface = cairo_surface_create_similar_image (cairo_get_target (cr),
./gtk/gtkcssshadowvalue.c: surface = cairo_surface_create_similar_image (cairo_get_target (existing_cr),
./gtk/gtkcssshadowvalue.c: mask = cairo_surface_create_similar_image (cairo_get_target (cr), CAIRO_FORMAT_A8,
./gtk/gtkrenderbackground.c: surface = cairo_surface_create_similar (cairo_get_target (cr),
./tests/animated-resizing.c: source_surface = cairo_surface_create_similar (target, CAIRO_CONTENT_COLOR_ALPHA,
./tests/testcairo.c: overlay = cairo_surface_create_similar (cairo_get_target (cr),
./tests/testcairo.c: punch = cairo_surface_create_similar (cairo_get_target (cr),
./tests/testcairo.c: circles = cairo_surface_create_similar (cairo_get_target (cr),
Shell
$ grep -R cairo_surface_create_similar .
./demos/gtk-demo/drawingarea.c: overlay = cairo_surface_create_similar (cairo_get_target (cr),
./demos/gtk-demo/drawingarea.c: punch = cairo_surface_create_similar (cairo_get_target (cr),
./demos/gtk-demo/drawingarea.c: circles = cairo_surface_create_similar (cairo_get_target (cr),
./gdk/gdkcairo.c: surface = cairo_surface_create_similar_image (cairo_get_target (cr),
./gdk/gdkgl.c: image = cairo_surface_create_similar_image (cairo_get_target (cr),
./gdk/x11/gdksurface-x11.c: * cairo_surface_create_similar(). In some cases however, we must use a
./gsk/gskcairoblur.c: surface = cairo_surface_create_similar_image (cairo_get_target (cr),
./gsk/gskrendernodeimpl.c: mask = cairo_surface_create_similar_image (cairo_get_target (cr), CAIRO_FORMAT_A8,
./gsk/gskrendernodeimpl.c: surface = cairo_surface_create_similar_image (cairo_get_target (cr),
./gsk/gskrendernodeparser.c: return cairo_surface_create_similar (closure, content, width, height);
./gtk/gtkcssimage.c: result = cairo_surface_create_similar (target,
./tests/animated-resizing.c: source_surface = cairo_surface_create_similar (target, CAIRO_CONTENT_COLOR_ALPHA,
Используется в ./gdk/gdkwindow.c (которого нет в gtk4)
Код: Выделить всё
static void
vteapp_terminal_realize(GtkWidget* widget)
{
GTK_WIDGET_CLASS(vteapp_terminal_parent_class)->realize(widget);
if (!options.background_pixbuf)
return;
auto terminal = VTEAPP_TERMINAL(widget);
#if VTE_GTK == 3
auto surface = vte::take_freeable
(gdk_cairo_surface_create_from_pixbuf(options.background_pixbuf,
0 /* take scale from window */,
gtk_widget_get_window(widget)));
This option specifies an rendering API for use in conjunction with Glamor
accel method. You can specify OpenGL with a value "gl" and OpenGL ES with a
value "es", and the default is both, when Glamor fallbacks to GLES if GL 2.1 is
not available. This may be useful for embedded and old cards, where GL ES
feature set works faster than GL feature set.
Default: gl.
Код: Выделить всё
--- a/gdk/gdkwindow.c 2024-09-22 06:00:58.675945141 +0300
+++ b/gdk/gdkwindow.c 2024-09-22 06:10:12.134921994 +0300
@@ -10184,8 +10184,9 @@
break;
case GDK_RENDERING_MODE_SIMILAR:
default:
- surface = cairo_surface_create_similar (window_surface,
- content,
+ surface = cairo_surface_create_similar_image (window_surface,
+ content == CAIRO_CONTENT_COLOR ? CAIRO_FORMAT_RGB24 :
+ content == CAIRO_CONTENT_ALPHA ? CAIRO_FORMAT_A8 : CAIRO_FORMAT_ARGB32,
width, height);
break;
}
Код: Выделить всё
--- a/gdk/gdkwindow.c 2024-09-22 08:49:35.688978557 +0300
+++ b/gdk/gdkwindow.c 2024-09-22 08:51:23.621974043 +0300
@@ -10183,11 +10183,16 @@
cairo_surface_set_device_scale (surface, sx, sy);
break;
case GDK_RENDERING_MODE_SIMILAR:
- default:
surface = cairo_surface_create_similar (window_surface,
content,
width, height);
break;
+ default:
+ surface = cairo_surface_create_similar_image (window_surface,
+ content == CAIRO_CONTENT_COLOR ? CAIRO_FORMAT_RGB24 :
+ content == CAIRO_CONTENT_ALPHA ? CAIRO_FORMAT_A8 : CAIRO_FORMAT_ARGB32,
+ width, height);
+ break;
}
cairo_surface_destroy (window_surface);
Тут не знаю, тут я не специалист, в смысле и не лез туда . Специалистом делает время и опыт.
Можете попробовать. Но доступные параметры желательно смотреть командой:Лия писала: ↑22.09.2024 09:49Может что тут покрутить https://docs.kernel.org/gpu/amdgpu/module-parameters.html...
Shell
$ modinfo amdgpu
$ modinfo <путь>/amdgpu.ko
Код: Выделить всё
MESA_LOADER_DRIVER_OVERRIDE=zink
Код: Выделить всё
[2024-09-22 08:12:40] (II) AMDGPU(0): glamor X acceleration enabled on zink Vulkan 1.3(AMD Radeon RX 7600 (RADV NAVI33) (MESA_RADV))
Хорошо что получилось. Но в документации этот драйвер для использования для отдельных приложений. Но похоже благодаря строчке MESA_LOADER_DRIVER_OVERRIDE=zink, вам удалось заставить mesa работать через vulkan-amdgpu-pro, если объявлена переменная VK_DRIVER_FILES, без неё не получилось бы.
Как бы для вашей видеокарты совсем мало на свободных. А если для сравнения запустить с опцией:
Shell
$ vblank_mode=0 glxgears
Если удалить amdvlk и AMDGPU Pro - работает и без неё
Код: Выделить всё
$ vblank_mode=0 glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
137695 frames in 5.0 seconds = 27538.811 FPS
$ vblank_mode=0 MESA_LOADER_DRIVER_OVERRIDE=zink glxgears
ATTENTION: default value of option vblank_mode overridden by environment.
49128 frames in 5.0 seconds = 9825.432 FPS
Код: Выделить всё
$ mangohud vkcube --present_mode 0
Код: Выделить всё
AMD_DEBUG=nodcc
Ну так вроде как DCC в mesa был поломан. Они исправили его вроде как для драйвера vulkan - radv, это который у вас автоматически запускался с параметром MESA_LOADER_DRIVER_OVERRIDE=zink. Видно в radeonsi так и не исправили это. Это судя по новостям. А так на эту тему можно задать вопрос разработчикам mesa.