mirror of
https://github.com/ublue-os/bazzite.git
synced 2025-01-30 21:32:48 +00:00
Merge branch 'main' into testing
This commit is contained in:
commit
09292a8ed2
@ -172,6 +172,20 @@ RUN rpm-ostree override replace \
|
||||
--from repo=updates \
|
||||
libmount \
|
||||
|| true && \
|
||||
rpm-ostree override replace \
|
||||
--experimental \
|
||||
--from repo=updates-archive \
|
||||
glibc-headers \
|
||||
glibc-devel \
|
||||
|| true && \
|
||||
rpm-ostree override replace \
|
||||
--experimental \
|
||||
--from repo=updates \
|
||||
glibc \
|
||||
glibc-common \
|
||||
glibc-all-langpacks \
|
||||
glibc-gconv-extra \
|
||||
|| true && \
|
||||
rpm-ostree override remove \
|
||||
glibc32 \
|
||||
|| true
|
||||
@ -200,7 +214,9 @@ RUN rpm-ostree override replace \
|
||||
bluez-cups \
|
||||
bluez-libs \
|
||||
bluez-obexd \
|
||||
xorg-x11-server-Xwayland
|
||||
xorg-x11-server-Xwayland && \
|
||||
rpm-ostree install \
|
||||
mesa-vdpau-drivers-freeworld.x86_64
|
||||
|
||||
# Remove unneeded packages
|
||||
RUN rpm-ostree override remove \
|
||||
@ -268,7 +284,13 @@ RUN rpm-ostree install \
|
||||
glow \
|
||||
gum \
|
||||
setools \
|
||||
redhat-lsb-core && \
|
||||
redhat-lsb-core \
|
||||
cockpit-networkmanager \
|
||||
cockpit-podman \
|
||||
cockpit-selinux \
|
||||
cockpit-system \
|
||||
cockpit-navigator \
|
||||
cockpit-storaged && \
|
||||
pip install --prefix=/usr topgrade && \
|
||||
rpm-ostree install \
|
||||
ublue-update && \
|
||||
@ -287,7 +309,6 @@ RUN rpm-ostree install \
|
||||
at-spi2-core.i686 \
|
||||
atk.i686 \
|
||||
vulkan-loader.i686 \
|
||||
mesa-vulkan-drivers.i686 \
|
||||
alsa-lib.i686 \
|
||||
fontconfig.i686 \
|
||||
gtk2.i686 \
|
||||
@ -310,10 +331,14 @@ RUN rpm-ostree install \
|
||||
libatomic.i686 \
|
||||
pipewire-alsa.i686 \
|
||||
clinfo && \
|
||||
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/fedora-updates.repo && \
|
||||
rpm-ostree install \
|
||||
mesa-vulkan-drivers.i686 \
|
||||
mesa-va-drivers-freeworld.i686 \
|
||||
mesa-vdpau-drivers-freeworld.i686 && \
|
||||
sed -i '0,/enabled=0/s//enabled=1/' /etc/yum.repos.d/rpmfusion-nonfree-steam.repo && \
|
||||
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree.repo && \
|
||||
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree-updates.repo && \
|
||||
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/fedora-updates.repo && \
|
||||
rpm-ostree install \
|
||||
steam && \
|
||||
sed -i '0,/enabled=1/s//enabled=0/' /etc/yum.repos.d/rpmfusion-nonfree-steam.repo && \
|
||||
|
104
README-SPA.md
104
README-SPA.md
@ -20,8 +20,9 @@
|
||||
- [Mira como luce Bazzite (Capturas de Pantalla)](#showcase)
|
||||
- [Documentación y Boletín informativo/Newsletters (En inglés)](#documentation--newsletters)
|
||||
- [Paquetes Personalizados](#custom-packages)
|
||||
- [Verificación de la Imagen](#verification)
|
||||
- [Arranque Seguro (Secure Boot)](#secure-boot)
|
||||
- [Verificación y Métricas](#verification)
|
||||
- [Métricas](#contributor-metrics)
|
||||
- [Gracias Especiales](#special-thanks)
|
||||
- [Créalo tu Mismo](#build-your-own)
|
||||
- [Comunidad (en inglés)](#join-the-community)
|
||||
@ -39,16 +40,16 @@ Bazzite es creado con [ublue-os/main](https://github.com/ublue-os/main) y [ublue
|
||||
- Utilizamos el [kernel fsync](https://copr.fedorainfracloud.org/coprs/sentry/kernel-fsync/) para obtener compatibilidad con HDR (alto rango dinámico) y un soporte expandido de hardware, además de otra gran cantidad de parches incluidos.
|
||||
- HDR esta disponible en la sesión de Gamescope.
|
||||
- Drivers propietarios de NVIDIA pre-instalados.
|
||||
- El nuevo driver de Vulkan, NVK, esta disponibles en imágenes sin el driver proprietario de NVIDIA.
|
||||
- Soporte total de decodificación acelerada por hardware del codec de video H264.
|
||||
- Soporte completo para los tiempos de ejecución (runtimes) de ROCM OpenCL/HIP de AMD
|
||||
- Drivers [xone](https://github.com/medusalix/xone), [xpadneo](https://github.com/atar-axis/xpadneo), y [xpad-noone](https://github.com/ublue-os/xpad-noone) para mandos de videojuegos de Xbox.
|
||||
- Se incluye el driver [xone](https://github.com/medusalix/xone), para mandos de videojuegos de Xbox.
|
||||
- Soporte completo de [DisplayLink](https://www.synaptics.com/products/displaylink-graphics).
|
||||
- Incluye los temas para KDE de SteamOS, hechos por Valve.
|
||||
- También se incluyen temas opcionales de GTK3/4 inspirados en Valve, que igualan a los temas Vapor y VGUI2 de SteamOS. Para poderlos utilizar, solo tienes que instalar [Gradience](https://flathub.org/apps/com.github.GradienceTeam.Gradience).
|
||||
- [LatencyFleX](https://github.com/ishitatsuyuki/LatencyFleX), [vkBasalt](https://github.com/DadSchoorse/vkBasalt), [MangoHud](https://github.com/flightlessmango/Mangohud), y [OBS VkCapture](https://github.com/nowrep/obs-vkcapture) instalados y disponibles por defecto.
|
||||
- Utilizamos [TuneD](https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/monitoring_and_managing_system_status_and_performance/getting-started-with-tuned_monitoring-and-managing-system-status-and-performance) en lugar de PPD, para una integración completa con GNOME, KDE, y Game Mode. Esta es una herramienta tan increiblemente poderosa, que Red Hat ofrece [clases para aprender a utilizarla](https://www.redhat.com/en/services/training/rh442-red-hat-enterprise-performance-tuning).
|
||||
- Soporte para [Wallpaper Engine](https://www.wallpaperengine.io/en). <sub><sup>(Solo en KDE)</sup></sub>
|
||||
- Incluida la [extensión de la shell para mostrar las propiedades de ROMs](https://github.com/GerbilSoft/rom-properties) (usados para la emulación de consolas) en el navegador de archivos.
|
||||
- Incluida una [extensión de la shell para mostrar las propiedades de ROMs](https://github.com/GerbilSoft/rom-properties) (usados para la emulación de consolas) en el navegador de archivos.
|
||||
- Soporte completo para [Winesync/Fastsync/NTsync](https://github.com/Frogging-Family/wine-tkg-git/issues/936).
|
||||
- [Distrobox](https://github.com/89luca89/distrobox) pre-instalado con actualizaciones automáticas para los contenedores creados.
|
||||
- Se usa por defecto la [terminal Prompt](https://gitlab.gnome.org/chergert/prompt) en todas las imágenes. Esta terminal esta especificamente diseñada para el flujo de trabajo basado en contenedores que usamos en Bazzite. Si deseas regresar a como estaba antes, simplemente ejecuta el siguiente comando en una terminal: `ujust restore-original-terminal`
|
||||
@ -59,7 +60,6 @@ Bazzite es creado con [ublue-os/main](https://github.com/ublue-os/main) y [ublue
|
||||
- Uso del [control de congestión TCP BBR hecho por Google](https://github.com/google/bbr) por defecto.
|
||||
- [Input Remapper](https://github.com/sezanzeb/input-remapper) pre-instalado y habilitado. <sub><sup>(Disponible pero desactivado por defecto en la variante Deck, puede ser habilitado ejecutando el siguiente comando en una terminal: `ujust restore-input-remapper`)</sup></sub>
|
||||
- El portal de Bazzite (Bazzite Portal) provee una manera fácil de instalar un sin fin de aplicaciones y ajustes, incluyendo la instalación de [LACT](https://github.com/ilya-zlobintsev/LACT) (para mejor controlar tu GPU de AMD) y [GreenWithEnvy](https://gitlab.com/leinardi/gwe) (para mejor controlar tu GPU de NVIDIA).
|
||||
- Gestor de paquetes [Nix](https://nixos.org/) con la opción de instalar [Fleek](https://getfleek.dev/) usando el `ujust`.
|
||||
- Opción para instalar el gestor de paquetes [Brew](https://brew.sh/) usando el Bazzite Portal.
|
||||
- [Waydroid](https://waydro.id/) pre-instalado para correr aplicaciones de Android. Para configurarlo, usa esta [guía rápida (en inglés)](https://universal-blue.discourse.group/docs?topic=32).
|
||||
- Administra tus aplicaciones usando [Flatseal](https://github.com/tchx84/Flatseal), [Warehouse](https://github.com/flattool/warehouse), y [Gear Lever](https://github.com/mijorus/gearlever).
|
||||
@ -69,7 +69,7 @@ Bazzite es creado con [ublue-os/main](https://github.com/ublue-os/main) y [ublue
|
||||
- Driver [GCAdapter_OC](https://github.com/hannesmann/gcadapter-oc-kmod) para aumentar la frecuencia del reloj (overclocking) del adaptador para el mando de videojuegos del Gamecube de Nintendo para obtener una taza de sondeo (polling rate) de 1000hz.
|
||||
- Soporte fuera de la caja para los teclados hechos por [Wooting](https://wooting.io/).
|
||||
- Soporte incorporado de las GPU de las familias <sub><sup>(HD 7000)</sup></sub> y Sea Islands <sub><sup>(HD 8000)</sup></sub> de AMD bajo el driver `amdgpu`.
|
||||
- Un parche esta disponible [para un bug en juegos de 32 bits que usen el motor Source 1](https://github.com/ValveSoftware/Source-1-Games/issues/5043)<sub><sup>[(Por ejemplo: TF2)](https://github.com/ValveSoftware/Source-1-Games/issues/5043)</sup></sub> que provoca que el juego se bloqueé al ser iniciado, para aplicar el parche, ejecuta el siguiente comando en una terminal: `ujust patch-source1-tcmalloc`
|
||||
- Un parche esta disponible [para un bug en juegos de 32 bits que usen el motor Source 1](https://github.com/ValveSoftware/Source-1-Games/issues/5043)<sub><sup>[(Por ejemplo: TF2)](https://github.com/ValveSoftware/Source-1-Games/issues/5043)</sup></sub> que provoca que el juego se congele al ser iniciado, para aplicar el parche, ejecuta el siguiente comando en una terminal: `ujust patch-source1-tcmalloc`
|
||||
- [XwaylandVideoBridge](https://invent.kde.org/system/xwaylandvideobridge) esta disponible para hacer posible compartir tu pantalla con Discord usando Wayland.
|
||||
- [Webapp Manager](https://github.com/linuxmint/webapp-manager) esta disponible para crear aplicaciones de sitios web con una variedad de navegadores web, incluyendo Firefox.
|
||||
|
||||
@ -96,7 +96,7 @@ Si deseas realizar un rebase a la imagen **para computadoras de escritorio con u
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:stable
|
||||
```
|
||||
|
||||
**Para usuarios con Secure Boot habilitado:** Ejecuta el comando `ujust enroll-secure-boot-key` en una terminal e introduce la contraseña `ublue-os` si el sistema te lo requiere para registrar la clave de seguridad requerida.
|
||||
**Para usuarios con Secure Boot habilitado:** Sigue nuestra [documentación para usuarios de Secure Boot](#secure-boot) antes de cambiar la base.
|
||||
|
||||
### Steam Deck/Computadoras para Cine en Casa (HTPCs)
|
||||
|
||||
@ -105,7 +105,7 @@ rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-nvidia:sta
|
||||
|
||||
Esta variante esta diseñada para usarse como una alternativa de SteamOS en la Steam Deck, e igualmente para proporcionar una experiencia como de consola de videojuegos en HTPCs y otros dispositivos portátiles, disponible como `bazzite-deck`:
|
||||
|
||||
- Al arrancar tu dispositivo, inicia directamente en el modo de juego (Gamemode), emulando el mismo comportamiento que SteamOS.
|
||||
- Al arrancar tu dispositivo, inicia directamente en Game Mode, emulando el mismo comportamiento que SteamOS.
|
||||
- **Se aplica el servicio `duperemove` automáticamente el cual recorta por mucho el tamaño del directorio compatdata, el directorio usado por Proton para almacenar los prefijos de WINE para correr juegos de Windows en Linux.**
|
||||
- **Incluye la versión mas actual de Mesa, el cual crea cachés de shaders mas pequeños, y los cuales no son requeridos para prevenir tirones/parones.**
|
||||
- **Habilidad de arrancar el sistema incluso si el disco esta lleno.**
|
||||
@ -117,7 +117,7 @@ Esta variante esta diseñada para usarse como una alternativa de SteamOS en la S
|
||||
- Incluye los parches de [SteamOS BTRFS](https://gitlab.com/popsulfr/steamos-btrfs) por defecto, los cuales proveen soporte completo del sistema de archivos BTRFS para tarjetas SD.
|
||||
- Se incluye una copia portada de [SDGyroDSU](https://github.com/kmicki/SteamDeckGyroDSU), habilitada por defecto.
|
||||
- Opción para instalar [Decky Loader](https://github.com/SteamDeckHomebrew/decky-loader), [EmuDeck](https://www.emudeck.com/), [RetroDECK](https://retrodeck.net/), y [ProtonUp-Qt](https://davidotek.github.io/protonup-qt/), ademas de un sin fin de paquetes útiles al momento de instalar el sistema.
|
||||
- Un sistema personalizado de actualizaciones que permite que tanto el sistema operativo, los Flatpaks, los paquetes Nix <sup><sub>(Usando Fleek)</sub></sup>, y las imagenes de Distrobox sean actualizables directamente desde la interfaz de Gamemode.
|
||||
- Un sistema personalizado de actualizaciones que permite que tanto el sistema operativo, los Flatpaks, los paquetes Nix <sup><sub>(Usando Fleek)</sub></sup>, y las imagenes de Distrobox sean actualizables directamente desde la interfaz de Gamemode gracias al poder de [ublue-update](https://github.com/ublue-os/ublue-update) y [topgrade](https://github.com/topgrade-rs/topgrade).
|
||||
- Soporte incluido para el arranque dual (dual-boot) con Windows, gracias a que se deja intacta la instalación de GRUB por defecto de Fedora.
|
||||
- ¿Algo se rompió o dejo de funcionar después de actualizar?, ¡descuida!, puedes fácilmente retroceder a una versión previa de Bazzite, gracias a la función de reversión (rollback) de `rpm-ostree`. Inclusive puedes seleccionar imágenes previas del sistema directamente desde el menú que aparece al arrancar tu dispositivo.
|
||||
- Steam y Lutris vienen pre-instalados en la imagen como paquetes en capas (layered).
|
||||
@ -148,20 +148,69 @@ Si deseas cambiar la base (rebase) de una imagen upstream existente de un sistem
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck:stable
|
||||
```
|
||||
|
||||
#### Computadoras handheld alternativas
|
||||
|
||||
Si estas usando esta imagen en otras computadoras Handheld que no son la Steam Deck, como la Legion Go o la AYN Loki Max, puedes controlar el TDP usando el plugin de Decky Loader llamado SimpleDeckyTDP, esto también aplica para aquellas computadoras Handheld que usan una imagen personalizada basada en `-deck` que brindan soporte especializado a ciertos dispositivos como la Ally.
|
||||
Si estas usando esta imagen en otras computadoras Handheld que no son la Steam Deck, puedes controlar el TDP usando el plugin de Decky Loader llamado SimpleDeckyTDP.
|
||||
|
||||
- Primero, instala Decky Loader ejecutando el siguiente comando en una terminal: `ujust get-decky`
|
||||
- Despues, instala SimpleDeckyTDP ejecutando el siguiente comando en una terminal: `ujust get-simpledeckytdp`
|
||||
|
||||
Si estas usando una computadora Handheld que tiene soporte por parte de [hhd](https://github.com/hhd-dev/hhd), tambien puedes obtener un plugin que integra esta funcionalidad con game mode, solo ejecuta el siguiente comando en una terminal: `ujust get-hhd-decky`
|
||||
Si estas usando una computadora Handheld que tiene soporte por parte de [hhd](https://github.com/hhd-dev/hhd) <sub><sup>(Como la Lenovo Legion Go o la ASUS ROG Ally)</sup></sub>, tambien puedes obtener un plugin que integra esta funcionalidad en Game Mode, solo ejecuta el siguiente comando en una terminal: `ujust get-hhd-decky`
|
||||
|
||||
**Igualmente, asegurate de tambien leer la [documentación de HHD (en inglés)](https://github.com/hhd-dev/hhd#after-install), algunas computadoras Handheld requieren ciertos ajustes o tweaks especificos para funcionar correctamente.**
|
||||
|
||||
Tambien incluimos ciertos comandos de `ujust` para instalar varios temas para CSS Loader que no estan disponibles en su propia tienda. Si instalas estos temas, estos tambien serán actualizados automáticamente junto con Bazzite.
|
||||
|
||||
```bash
|
||||
# Instala el tema de la ROG Ally para CSS Loader (https://github.com/semakusut/SBP-ROG-Ally)
|
||||
ujust install-rog-ally-theme
|
||||
|
||||
# Instala el tema de la Lenovo Legion Go para CSS Loader (https://github.com/frazse/SBP-Legion-Go-Theme)
|
||||
ujust install-legion-go-theme
|
||||
|
||||
# Instala el tema para pasar los glifos de Playstation a Xbox (PS5-to-Xbox) para hhd y CSS Loader (https://github.com/frazse/PS5-to-Xbox-glyphs)
|
||||
ujust install-hhd-xbox-glyph-theme
|
||||
```
|
||||
|
||||
#### ASUS Ally
|
||||
|
||||
Bazzite tiene imágenes especificas para la ASUS ROG Ally, debido a los requerimientos adicionales en cuanto drivers y software especificos para ese hardware. Puedes escoger las imágenes `-ally` desde el instalador de Bazzite, o puedes cambiar de base (rebase) utilizando cualquiera de los siguientes comandos en una terminal:
|
||||
|
||||
Para usar KDE (Entorno default de SteamOS):
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-ally:stable
|
||||
```
|
||||
|
||||
Para usar GNOME:
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-ally-gnome:stable
|
||||
```
|
||||
|
||||
#### Framegame
|
||||
|
||||
[¿Te armaste una de estas bellezas?](https://www.youtube.com/watch?v=zd6WtTUf-30), tambien tenemos una imagen especifica para ti. Esta es la variante Deck de nuestras imágenes para las laptops de Framework.
|
||||
|
||||
Para usar KDE (Entorno default de SteamOS):
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-framegame:stable
|
||||
```
|
||||
|
||||
Para usar GNOME:
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-framegame-gnome:stable
|
||||
```
|
||||
|
||||
### GNOME
|
||||
|
||||
Las sub-variantes con el entorno de escritorio GNOME están disponibles tanto para la variante para **Computadoras de Escritorio**, como la de **Steam Deck/HTPCs**. Estas imágenes cuentan con las siguientes características adicionales:
|
||||
Las sub-variantes con el entorno de escritorio GNOME están disponibles tanto para las imágenes para **Computadoras de Escritorio**, como las de **Steam Deck/HTPCs**. Estas imágenes cuentan con las siguientes características adicionales:
|
||||
|
||||
- [Soporte tanto para pantallas con tasa de refresco variable y como para la escala fraccional de la interfaz de usuario bajo el servidor gráfico Wayland](https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1154).
|
||||
- Menú personalizado en la barra superior para regresar al modo de juego (gamemode), lanzar Steam, y para abrir otras utilidades.
|
||||
- Menú personalizado en la barra superior para regresar a Game Mode, lanzar Steam, y para abrir otras utilidades.
|
||||
- [GSConnect](https://extensions.gnome.org/extension/1319/gsconnect/), la versión de KDE Connect para GNOME, viene pre-instalado y listo para usarse.
|
||||
- La [extension Hanabi](https://github.com/jeffshee/gnome-ext-hanabi) viene incluida, la cual ofrece características similares al Wallpaper Engine en KDE.
|
||||
- Numerosas extensiones opcionales pre-instaladas, incluyendo [importantísimos parches para una mejor experiencia del usuario](https://www.youtube.com/watch?v=nbCg9_YgKgM).
|
||||
@ -170,9 +219,7 @@ Las sub-variantes con el entorno de escritorio GNOME están disponibles tanto pa
|
||||
> \[!IMPORTANT\]\
|
||||
> \**Las imágenes de disco (ISOs) pueden descargarse desde nuestra página de lanzamientos (releases) [aquí (en inglés)](https://github.com/ublue-os/bazzite/releases), también puedes encontrar una útil guía de instalación [aquí (en inglés)](https://universal-blue.discourse.group/docs?topic=30).** Si experimentas errores y/o problemas instalando Bazzite, checa nuestra [guía de solución de problemas (en inglés)](https://universal-blue.discourse.group/docs?topic=34).
|
||||
|
||||
Si estas actualmente usando una imagen de Universal Blue, por favor [sigue estas instrucciones (en inglés)](https://universal-blue.org/images/#image-list).
|
||||
|
||||
Si deseas cambiar la base (rebase) de una imagen upstream existente de un sistema ostree de Fedora Silverblue/Kinoite a la imagen **para computadoras de escritorio con una GPU AMD ó Intel**, ejecuta el siguiente comando en una terminal:
|
||||
Si deseas cambiar la base (rebase) a la imagen **para computadoras de escritorio con una GPU AMD ó Intel**, ejecuta el siguiente comando en una terminal:
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome:stable
|
||||
@ -187,19 +234,18 @@ rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-gnome-nvid
|
||||
> \[!WARNING\]\
|
||||
> **Debido a un bug en upstream, Bazzite no puede ser utilizado por el momento en Steam Decks con solo 64 GB de almacenamiento eMMC. Ampliar tu almacenamiento cambiando el disco interno soluciona este problema.**
|
||||
|
||||
> \[!IMPORTANT]
|
||||
> Los dispositivos que **NO** son una Steam Deck, también pueden utilizar las imágenes bazzite-deck, sin embargo tienen que usar una GPU de AMD o Intel, GPUs de NVIDIA no son compatibles por el momento con esta variante.
|
||||
|
||||
Si necesitas realizar un rebase a la imagen **para Steam Deck/HTPC**, ejecuta el siguiente comando en una terminal:
|
||||
Si necesitas realizar un rebase a la imagen **para Steam Deck/HTPC con GPUs AMD ó Intel**, ejecuta el siguiente comando en una terminal:
|
||||
|
||||
```bash
|
||||
rpm-ostree rebase ostree-unverified-registry:ghcr.io/ublue-os/bazzite-deck-gnome:stable
|
||||
```
|
||||
**Para usuarios con Secure Boot habilitado:** Sigue nuestra [documentación para usuarios de Secure Boot](#secure-boot) antes de cambiar la base.
|
||||
|
||||
### Características del Upstream
|
||||
|
||||
#### Universal Blue
|
||||
|
||||
- Drivers propietarios de NVIDIA pre-instalados. <sub><sup>(Solo para imágenes NVDIA)</sup></sub>
|
||||
- Flathub se encuentra habilitado por defecto.
|
||||
- Lanzador de comandos [`ujust`](https://github.com/casey/just) incluido, con diversos comandos muy convenientes.
|
||||
- Codecs multimedia fuera de la caja.
|
||||
@ -247,9 +293,9 @@ Lee nuestras [preguntas frecuentes](https://universal-blue.discourse.group/docs?
|
||||
- [Guía para Configurar el Arranque Dual con Windows (Dual Boot)](https://universal-blue.discourse.group/docs?topic=129)
|
||||
- [Documentación Miscelánea](https://universal-blue.discourse.group/docs?topic=287)
|
||||
|
||||
Puedes encontrar documentación adicional relacionada al proyecto [aquí](https://universal-blue.discourse.group/docs).
|
||||
Puedes encontrar documentación adicional relacionada al proyecto [aquí](https://universal-blue.discourse.group/docs?category=5).
|
||||
|
||||
Checa nuestros [boletines informativos](https://universal-blue.discourse.group/tag/bazzite-buzz), estos son publicados regularmente y los cuales hablan de las últimas actualizaciones del proyecto.
|
||||
Checa nuestros [boletines informativos (disponibles en español](https://universal-blue.discourse.group/tag/bazzite-buzz), estos son publicados regularmente y los cuales hablan de las últimas actualizaciones del proyecto.
|
||||
|
||||
## Paquetes Personalizados
|
||||
|
||||
@ -327,18 +373,30 @@ cosign verify --key cosign.pub ghcr.io/ublue-os/bazzite
|
||||
|
||||
El Arranque Seguro (Secure Boot) tiene soporte gracias a nuestra llave digital personalizada. La llave pública puede encontrarse en la raíz de [este](https://github.com/ublue-os/bazzite/blob/main/secure_boot.der) repositorio.
|
||||
|
||||
|
||||
Si gustas registrar esta llave antes de instalar Bazzite, descarga la llave y ejecuta el siguiente comando en una terminal:
|
||||
|
||||
```bash
|
||||
sudo mokutil --timeout -1
|
||||
sudo mokutil --import secure_boot.der
|
||||
```
|
||||
Alternativamente, los usuarios que ya cuenten con una imagen de Universal Blue instalada, pueden ejecutar el siguiente comando en una terminal: `ujust enroll-secure-boot-key`.
|
||||
|
||||
Si se te pide una contraseña, introduce `ublue-os`.
|
||||
|
||||
### Métricas de Contribución
|
||||
|
||||
![Bazzite](https://repobeats.axiom.co/api/embed/86b500d79c613015ad16f56df76c8e13f3fd98ae.svg "Repobeats analytics image")
|
||||
|
||||
#### Historial de Estrellas
|
||||
|
||||
<a href="https://star-history.com/#ublue-os/bazzite&Date">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=ublue-os/bazzite&type=Date&theme=dark" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=ublue-os/bazzite&type=Date" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=ublue-os/bazzite&type=Date" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
## Gracias Especiales
|
||||
|
||||
Bazzite es producto de esfuerzo comunitario, y no existiría sin la contribución de todos. A continuación, están listadas unas cuantas personas que nos han ayudado a lo largo del camino:
|
||||
|
10
spec_files/mangohud/fedora.patch
Normal file
10
spec_files/mangohud/fedora.patch
Normal file
@ -0,0 +1,10 @@
|
||||
diff --git a/bin/mangoplot.py b/bin/mangoplot.py
|
||||
index 7d82b3a..b974aa7 100755
|
||||
--- a/bin/mangoplot.py
|
||||
+++ b/bin/mangoplot.py
|
||||
@@ -1,4 +1,4 @@
|
||||
-#!/usr/bin/env python
|
||||
+#!/usr/bin/python3
|
||||
|
||||
r"""
|
||||
Script to plot all the MangoHud benchmarks contained in a given folder.
|
298
spec_files/mangohud/mangohud.spec
Normal file
298
spec_files/mangohud/mangohud.spec
Normal file
@ -0,0 +1,298 @@
|
||||
## START: Set by rpmautospec
|
||||
## (rpmautospec version 0.3.8)
|
||||
## RPMAUTOSPEC: autorelease
|
||||
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
|
||||
release_number = 1;
|
||||
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
|
||||
print(release_number + base_release_number - 1);
|
||||
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
|
||||
## END: Set by rpmautospec
|
||||
|
||||
## START: Set by rpmautospec
|
||||
## (rpmautospec version 0.3.5)
|
||||
## RPMAUTOSPEC: autorelease, autochangelog
|
||||
%define autorelease(e:s:pb:n) %{?-p:0.}%{lua:
|
||||
release_number = 12;
|
||||
base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}"));
|
||||
print(release_number + base_release_number - 1);
|
||||
}%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}}
|
||||
## END: Set by rpmautospec
|
||||
|
||||
%global appname MangoHud
|
||||
|
||||
%global imgui_ver 1.81
|
||||
%global imgui_wrap_ver 1
|
||||
|
||||
%global tarball_version %%(echo %{version} | tr '~' '-')
|
||||
|
||||
# Tests requires bundled stuff. Disable for now.
|
||||
%bcond_with tests
|
||||
|
||||
Name: mangohud
|
||||
Version: 0.7.0
|
||||
Release: 100.bazzite.{{{ git_dir_version }}}
|
||||
Summary: Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load
|
||||
|
||||
License: MIT
|
||||
URL: https://github.com/flightlessmango/MangoHud
|
||||
Source0: %{url}/archive/refs/tags/v%{version}.tar.gz
|
||||
Source1: https://github.com/ocornut/imgui/archive/v%{imgui_ver}/imgui-%{imgui_ver}.tar.gz
|
||||
Source2: https://wrapdb.mesonbuild.com/v1/projects/imgui/%{imgui_ver}/%{imgui_wrap_ver}/get_zip#/imgui-%{imgui_ver}-%{imgui_wrap_ver}-wrap.zip
|
||||
Patch0: fedora.patch
|
||||
|
||||
BuildRequires: appstream
|
||||
BuildRequires: dbus-devel
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: git-core
|
||||
BuildRequires: glew-devel
|
||||
BuildRequires: glfw-devel
|
||||
BuildRequires: glslang-devel
|
||||
BuildRequires: libappstream-glib
|
||||
BuildRequires: libstdc++-static
|
||||
BuildRequires: mesa-libGL-devel
|
||||
BuildRequires: meson >= 0.60
|
||||
BuildRequires: python3-mako
|
||||
BuildRequires: pkgconfig(dbus-1)
|
||||
BuildRequires: pkgconfig(dri)
|
||||
BuildRequires: pkgconfig(gl)
|
||||
BuildRequires: pkgconfig(glew)
|
||||
BuildRequires: pkgconfig(glfw3)
|
||||
BuildRequires: pkgconfig(libdrm)
|
||||
|
||||
BuildRequires: pkgconfig(spdlog)
|
||||
BuildRequires: pkgconfig(nlohmann_json)
|
||||
BuildRequires: pkgconfig(vulkan)
|
||||
BuildRequires: pkgconfig(wayland-client)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: cmake(VulkanHeaders)
|
||||
|
||||
%if %{with tests}
|
||||
BuildRequires: libcmocka-devel
|
||||
%endif
|
||||
|
||||
Requires: hicolor-icon-theme
|
||||
Requires: vulkan-loader%{?_isa}
|
||||
|
||||
Recommends: (mangohud(x86-32) if glibc(x86-32))
|
||||
|
||||
Suggests: goverlay
|
||||
|
||||
Provides: bundled(imgui) = %{imgui_ver}
|
||||
|
||||
%global _description %{expand:
|
||||
A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and
|
||||
more.}
|
||||
|
||||
%description %{_description}
|
||||
|
||||
|
||||
%prep
|
||||
%autosetup -n %{appname}-%{version} -p1
|
||||
%setup -qn %{appname}-%{version} -DTa1
|
||||
%setup -qn %{appname}-%{version} -DTa2
|
||||
|
||||
mkdir subprojects/imgui
|
||||
mv imgui-%{imgui_ver} subprojects/
|
||||
|
||||
|
||||
%build
|
||||
%meson \
|
||||
--wrap-mode=forcefallback \
|
||||
-Dinclude_doc=true \
|
||||
-Dwith_wayland=enabled \
|
||||
-Dwith_xnvctrl=disabled \
|
||||
-Dmangoapp=true \
|
||||
-Dmangoapp_layer=true \
|
||||
-Dmangohudctl=true \
|
||||
%if %{with tests}
|
||||
-Dtests=enabled \
|
||||
%else
|
||||
-Dtests=disabled \
|
||||
%endif
|
||||
%{nil}
|
||||
%meson_build
|
||||
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
|
||||
%check
|
||||
# https://github.com/flightlessmango/MangoHud/issues/812
|
||||
# ? tag-invalid : stock icon is not valid [io.github.flightlessmango.mangohud]
|
||||
%dnl appstream-util validate-relax --nonet %{buildroot}%{_metainfodir}/*.xml
|
||||
%if %{with tests}
|
||||
%meson_test
|
||||
%endif
|
||||
|
||||
|
||||
%files
|
||||
%license LICENSE
|
||||
%doc README.md
|
||||
%{_bindir}/%{name}*
|
||||
%{_bindir}/mangoapp
|
||||
%{_bindir}/mangoplot
|
||||
%{_datadir}/icons/hicolor/scalable/*/*.svg
|
||||
%{_datadir}/vulkan/implicit_layer.d/*Mango*.json
|
||||
%{_docdir}/%{name}/*
|
||||
%{_libdir}/%{name}/*
|
||||
%{_mandir}/man1/%{name}.1*
|
||||
%{_mandir}/man1/mangoapp.1*
|
||||
%{_metainfodir}/*.metainfo.xml
|
||||
%{_libdir}/%{name}/libMangoApp.so
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon Oct 02 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-6
|
||||
- build: Fix description about 'mangoplot'
|
||||
|
||||
* Mon Oct 02 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-5
|
||||
- build: mangohud-mangoplot as Suggests
|
||||
|
||||
* Thu Sep 28 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-4
|
||||
- build: Add missed deps for mangoplot
|
||||
|
||||
* Thu Sep 28 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-3
|
||||
- build: Package mangoplot as separate sub-package
|
||||
|
||||
* Thu Sep 28 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-2
|
||||
- build: Upload sources
|
||||
|
||||
* Thu Sep 28 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.7.0-1
|
||||
- build: Update to 0.7.0
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-11
|
||||
- build: Backport upstream patch
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-10
|
||||
- test: Skip for s390x arch
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-9
|
||||
- build: Drop BR: pkgconfig(vulkan)
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-8
|
||||
- test: Fix and enable tests
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-7
|
||||
- style: Minor Spec file update
|
||||
|
||||
* Sun Sep 10 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-6
|
||||
- build: Bundle vulkan-headers to fix FTBFS
|
||||
|
||||
* Thu Jul 20 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.9.1-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jul 11 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-4
|
||||
- build: mangohud relies on old Vulkan-headers < 1.3.241
|
||||
|
||||
* Sat Jul 08 2023 Vitaly Zaitsev <vitaly@easycoding.org> - 0.6.9.1-3
|
||||
- Rebuilt due to spdlog 1.12 update.
|
||||
|
||||
* Wed Jun 28 2023 Vitaly Zaitsev <vitaly@easycoding.org> - 0.6.9.1-2
|
||||
- Rebuilt due to fmt 10 update.
|
||||
|
||||
* Wed Apr 19 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9.1-1
|
||||
- build: Update to 0.6.9-1
|
||||
|
||||
* Fri Apr 14 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.9-1
|
||||
- build: Update to 0.6.9
|
||||
|
||||
* Tue Mar 14 2023 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.8-4
|
||||
- build: Fix FTBFS 38
|
||||
|
||||
* Thu Jan 19 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.8-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Thu Nov 03 2022 Vitaly Zaitsev <vitaly@easycoding.org> - 0.6.8-2
|
||||
- Rebuilt due to spdlog update.
|
||||
|
||||
* Tue Aug 02 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.8-1
|
||||
- chore(update): 0.6.8
|
||||
|
||||
* Thu Jul 21 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.7.1-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Jul 19 2022 Mamoru TASAKA <mtasaka@fedoraproject.org> - 0.6.7.1-3
|
||||
- Rebuild for fmt-9
|
||||
|
||||
* Fri May 13 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.7.1-2
|
||||
- fix: Upload sources
|
||||
|
||||
* Fri May 13 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.7.1-1
|
||||
- chore(update): 0.6.7-1
|
||||
|
||||
* Wed May 04 2022 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.7-1
|
||||
- chore(update): 0.6.7
|
||||
|
||||
* Thu Jan 20 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.6-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Mon Oct 18 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.6-1
|
||||
- chore(update): 0.6.6
|
||||
|
||||
* Thu Oct 07 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.5-3
|
||||
- build: Fix multilib dep | rh#1830718
|
||||
|
||||
* Thu Jul 22 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.5-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Thu Jul 08 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.5-1
|
||||
- build(update): 0.6.5
|
||||
|
||||
* Thu Jun 24 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.4-1
|
||||
- build(update): 0.6.4
|
||||
|
||||
* Sat Jun 12 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.3-1
|
||||
- build(update): 0.6.3
|
||||
|
||||
* Fri Jun 11 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.2-1
|
||||
- build(update): 0.6.2
|
||||
|
||||
* Wed Jan 27 2021 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.1-3
|
||||
- build: Install 32-bit version automagically if multilib packages already
|
||||
installed on end user machine
|
||||
|
||||
* Tue Jan 26 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.6.1-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Sun Nov 29 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.1-1
|
||||
- build(update): 0.6.1
|
||||
|
||||
* Sun Nov 29 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.0-2
|
||||
- fix: version in HUD | GH-411
|
||||
|
||||
* Sat Nov 28 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.6.0-1
|
||||
- build(update): 0.6.0
|
||||
|
||||
* Sun Aug 16 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.5.1-1
|
||||
- Update to 0.5.1
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.4.1-3
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Sat Jun 13 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.4.1-2
|
||||
- Add patch which fix F33 build | GH-213
|
||||
|
||||
* Thu Jun 11 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.4.1-1
|
||||
- Update to 0.4.1
|
||||
- Disable LTO
|
||||
|
||||
* Sat May 02 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.3.5-1
|
||||
- Update to 0.3.5
|
||||
- Remove ExclusiveArch. Now compiles on all arches, see GitHub#88.
|
||||
|
||||
* Thu Mar 26 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.3.1-2
|
||||
- Add GUI fron-end 'goverlay' as very weak dep
|
||||
|
||||
* Wed Mar 18 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.3.1-1
|
||||
- Update to 0.3.1
|
||||
|
||||
* Sun Mar 15 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.3.0-1
|
||||
- Update to 0.3.0
|
||||
|
||||
* Fri Feb 14 2020 Artem Polishchuk <ego.cordatus@gmail.com> - 0.2.0-11
|
||||
- Initial package
|
||||
- Thanks for help with packaging to:
|
||||
gasinvein <gasinvein@gmail.com>
|
||||
Vitaly Zaitsev <vitaly@easycoding.org>
|
||||
|
204
spec_files/mesa/old/26105.patch
Normal file
204
spec_files/mesa/old/26105.patch
Normal file
@ -0,0 +1,204 @@
|
||||
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
|
||||
index 561f3cc02e0..ebc54a900e3 100644
|
||||
--- a/src/amd/compiler/aco_instruction_selection.cpp
|
||||
+++ b/src/amd/compiler/aco_instruction_selection.cpp
|
||||
@@ -12526,7 +12526,8 @@ select_rt_prolog(Program* program, ac_shader_config* config,
|
||||
*/
|
||||
PhysReg out_uniform_shader_addr = get_arg_reg(out_args, out_args->rt.uniform_shader_addr);
|
||||
PhysReg out_launch_size_x = get_arg_reg(out_args, out_args->rt.launch_size);
|
||||
- PhysReg out_launch_size_z = out_launch_size_x.advance(8);
|
||||
+ PhysReg out_launch_size_y = out_launch_size_x.advance(4);
|
||||
+ PhysReg out_launch_size_z = out_launch_size_y.advance(4);
|
||||
PhysReg out_launch_ids[3];
|
||||
for (unsigned i = 0; i < 3; i++)
|
||||
out_launch_ids[i] = get_arg_reg(out_args, out_args->rt.launch_id).advance(i * 4);
|
||||
@@ -12534,9 +12535,13 @@ select_rt_prolog(Program* program, ac_shader_config* config,
|
||||
PhysReg out_record_ptr = get_arg_reg(out_args, out_args->rt.shader_record);
|
||||
|
||||
/* Temporaries: */
|
||||
- num_sgprs = align(num_sgprs, 2) + 4;
|
||||
- PhysReg tmp_raygen_sbt = PhysReg{num_sgprs - 4};
|
||||
- PhysReg tmp_ring_offsets = PhysReg{num_sgprs - 2};
|
||||
+ num_sgprs = align(num_sgprs, 2);
|
||||
+ PhysReg tmp_raygen_sbt = PhysReg{num_sgprs};
|
||||
+ num_sgprs += 2;
|
||||
+ PhysReg tmp_ring_offsets = PhysReg{num_sgprs};
|
||||
+ num_sgprs += 2;
|
||||
+
|
||||
+ PhysReg tmp_invocation_idx = PhysReg{256 + num_vgprs++};
|
||||
|
||||
/* Confirm some assumptions about register aliasing */
|
||||
assert(in_ring_offsets == out_uniform_shader_addr);
|
||||
@@ -12610,6 +12615,36 @@ select_rt_prolog(Program* program, ac_shader_config* config,
|
||||
bld.vop1(aco_opcode::v_mov_b32, Definition(out_record_ptr.advance(4), v1),
|
||||
Operand(tmp_raygen_sbt.advance(4), s1));
|
||||
|
||||
+ /* For 1D dispatches converted into 2D ones, we need to fix up the launch IDs.
|
||||
+ * Calculating the 1D launch ID is: id = local_invocation_index + (wg_id.x * wg_size).
|
||||
+ * in_wg_id_x now holds wg_id.x * wg_size.
|
||||
+ */
|
||||
+ bld.sop2(aco_opcode::s_lshl_b32, Definition(in_wg_id_x, s1), Definition(scc, s1),
|
||||
+ Operand(in_wg_id_x, s1), Operand::c32(program->workgroup_size == 32 ? 5 : 6));
|
||||
+
|
||||
+ /* Calculate and add local_invocation_index */
|
||||
+ bld.vop3(aco_opcode::v_mbcnt_lo_u32_b32, Definition(tmp_invocation_idx, v1), Operand::c32(-1u),
|
||||
+ Operand(in_wg_id_x, s1));
|
||||
+ if (program->wave_size == 64) {
|
||||
+ if (program->gfx_level <= GFX7)
|
||||
+ bld.vop2(aco_opcode::v_mbcnt_hi_u32_b32, Definition(tmp_invocation_idx, v1),
|
||||
+ Operand::c32(-1u), Operand(tmp_invocation_idx, v1));
|
||||
+ else
|
||||
+ bld.vop3(aco_opcode::v_mbcnt_hi_u32_b32_e64, Definition(tmp_invocation_idx, v1),
|
||||
+ Operand::c32(-1u), Operand(tmp_invocation_idx, v1));
|
||||
+ }
|
||||
+
|
||||
+ /* Make fixup operations a no-op if this is not a converted 2D dispatch. */
|
||||
+ bld.sopc(aco_opcode::s_cmp_lg_u32, Definition(scc, s1),
|
||||
+ Operand::c32(ACO_RT_CONVERTED_2D_LAUNCH_SIZE), Operand(out_launch_size_y, s1));
|
||||
+ bld.sop2(Builder::s_cselect, Definition(vcc, bld.lm),
|
||||
+ Operand::c32_or_c64(-1u, program->wave_size == 64),
|
||||
+ Operand::c32_or_c64(0, program->wave_size == 64), Operand(scc, s1));
|
||||
+ bld.vop2(aco_opcode::v_cndmask_b32, Definition(out_launch_ids[0], v1),
|
||||
+ Operand(tmp_invocation_idx, v1), Operand(out_launch_ids[0], v1), Operand(vcc, bld.lm));
|
||||
+ bld.vop2(aco_opcode::v_cndmask_b32, Definition(out_launch_ids[1], v1), Operand::zero(),
|
||||
+ Operand(out_launch_ids[1], v1), Operand(vcc, bld.lm));
|
||||
+
|
||||
/* jump to raygen */
|
||||
bld.sop1(aco_opcode::s_setpc_b64, Operand(out_uniform_shader_addr, s2));
|
||||
|
||||
diff --git a/src/amd/compiler/aco_interface.h b/src/amd/compiler/aco_interface.h
|
||||
index 8f35e18b5b0..9d2c1dbb2af 100644
|
||||
--- a/src/amd/compiler/aco_interface.h
|
||||
+++ b/src/amd/compiler/aco_interface.h
|
||||
@@ -32,6 +32,9 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
+/* Special launch size to indicate this dispatch is a 1D dispatch converted into a 2D one */
|
||||
+#define ACO_RT_CONVERTED_2D_LAUNCH_SIZE -1u
|
||||
+
|
||||
typedef struct nir_shader nir_shader;
|
||||
struct ac_shader_config;
|
||||
struct aco_shader_info;
|
||||
diff --git a/src/amd/vulkan/radv_cmd_buffer.c b/src/amd/vulkan/radv_cmd_buffer.c
|
||||
index cdede679552..c7dd4b216d4 100644
|
||||
--- a/src/amd/vulkan/radv_cmd_buffer.c
|
||||
+++ b/src/amd/vulkan/radv_cmd_buffer.c
|
||||
@@ -42,6 +42,8 @@
|
||||
#include "ac_debug.h"
|
||||
#include "ac_shader_args.h"
|
||||
|
||||
+#include "aco_interface.h"
|
||||
+
|
||||
#include "util/fast_idiv_by_const.h"
|
||||
|
||||
enum {
|
||||
@@ -10003,7 +10005,26 @@ enum radv_rt_mode {
|
||||
};
|
||||
|
||||
static void
|
||||
-radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCommand2KHR *tables, uint64_t indirect_va,
|
||||
+radv_upload_trace_rays_params(struct radv_cmd_buffer *cmd_buffer, VkTraceRaysIndirectCommand2KHR *tables,
|
||||
+ enum radv_rt_mode mode, uint64_t *launch_size_va, uint64_t *sbt_va)
|
||||
+{
|
||||
+ uint32_t upload_size = mode == radv_rt_mode_direct ? sizeof(VkTraceRaysIndirectCommand2KHR)
|
||||
+ : offsetof(VkTraceRaysIndirectCommand2KHR, width);
|
||||
+
|
||||
+ uint32_t offset;
|
||||
+ if (!radv_cmd_buffer_upload_data(cmd_buffer, upload_size, tables, &offset))
|
||||
+ return;
|
||||
+
|
||||
+ uint64_t upload_va = radv_buffer_get_va(cmd_buffer->upload.upload_bo) + offset;
|
||||
+
|
||||
+ if (mode == radv_rt_mode_direct)
|
||||
+ *launch_size_va = upload_va + offsetof(VkTraceRaysIndirectCommand2KHR, width);
|
||||
+ if (sbt_va)
|
||||
+ *sbt_va = upload_va;
|
||||
+}
|
||||
+
|
||||
+static void
|
||||
+radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, VkTraceRaysIndirectCommand2KHR *tables, uint64_t indirect_va,
|
||||
enum radv_rt_mode mode)
|
||||
{
|
||||
if (cmd_buffer->device->instance->debug_flags & RADV_DEBUG_NO_RT)
|
||||
@@ -10024,34 +10045,43 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
|
||||
cmd_buffer->compute_scratch_size_per_wave_needed =
|
||||
MAX2(cmd_buffer->compute_scratch_size_per_wave_needed, scratch_bytes_per_wave);
|
||||
|
||||
+ /* Since the workgroup size is 8x4 (or 8x8), 1D dispatches can only fill 8 threads per wave at most. To increase
|
||||
+ * occupancy, it's beneficial to convert to a 2D dispatch in these cases. */
|
||||
+ if (tables && tables->height == 1 && tables->width >= cmd_buffer->state.rt_prolog->info.cs.block_size[0])
|
||||
+ tables->height = ACO_RT_CONVERTED_2D_LAUNCH_SIZE;
|
||||
+
|
||||
struct radv_dispatch_info info = {0};
|
||||
info.unaligned = true;
|
||||
|
||||
- uint64_t launch_size_va;
|
||||
- uint64_t sbt_va;
|
||||
+ uint64_t launch_size_va = 0;
|
||||
+ uint64_t sbt_va = 0;
|
||||
|
||||
if (mode != radv_rt_mode_indirect2) {
|
||||
- uint32_t upload_size = mode == radv_rt_mode_direct ? sizeof(VkTraceRaysIndirectCommand2KHR)
|
||||
- : offsetof(VkTraceRaysIndirectCommand2KHR, width);
|
||||
-
|
||||
- uint32_t offset;
|
||||
- if (!radv_cmd_buffer_upload_data(cmd_buffer, upload_size, tables, &offset))
|
||||
- return;
|
||||
-
|
||||
- uint64_t upload_va = radv_buffer_get_va(cmd_buffer->upload.upload_bo) + offset;
|
||||
-
|
||||
- launch_size_va =
|
||||
- (mode == radv_rt_mode_direct) ? upload_va + offsetof(VkTraceRaysIndirectCommand2KHR, width) : indirect_va;
|
||||
- sbt_va = upload_va;
|
||||
+ launch_size_va = indirect_va;
|
||||
+ radv_upload_trace_rays_params(cmd_buffer, tables, mode, &launch_size_va, &sbt_va);
|
||||
} else {
|
||||
launch_size_va = indirect_va + offsetof(VkTraceRaysIndirectCommand2KHR, width);
|
||||
sbt_va = indirect_va;
|
||||
}
|
||||
|
||||
+ uint32_t remaining_ray_count = 0;
|
||||
+
|
||||
if (mode == radv_rt_mode_direct) {
|
||||
info.blocks[0] = tables->width;
|
||||
info.blocks[1] = tables->height;
|
||||
info.blocks[2] = tables->depth;
|
||||
+
|
||||
+ if (tables->height == ACO_RT_CONVERTED_2D_LAUNCH_SIZE) {
|
||||
+ /* We need the ray count for the 2D dispatch to be a multiple of the y block size for the division to work, and
|
||||
+ * a multiple of the x block size because the invocation offset must be a multiple of the block size when
|
||||
+ * dispatching the remaining rays. Fortunately, the x block size is itself a multiple of the y block size, so
|
||||
+ * we only need to ensure that the ray count is a multiple of the x block size. */
|
||||
+ remaining_ray_count = tables->width % rt_prolog->info.cs.block_size[0];
|
||||
+
|
||||
+ uint32_t ray_count = tables->width - remaining_ray_count;
|
||||
+ info.blocks[0] = ray_count / rt_prolog->info.cs.block_size[1];
|
||||
+ info.blocks[1] = rt_prolog->info.cs.block_size[1];
|
||||
+ }
|
||||
} else
|
||||
info.va = launch_size_va;
|
||||
|
||||
@@ -10085,6 +10115,22 @@ radv_trace_rays(struct radv_cmd_buffer *cmd_buffer, const VkTraceRaysIndirectCom
|
||||
assert(cmd_buffer->cs->cdw <= cdw_max);
|
||||
|
||||
radv_dispatch(cmd_buffer, &info, pipeline, rt_prolog, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
|
||||
+
|
||||
+ if (remaining_ray_count) {
|
||||
+ info.blocks[0] = remaining_ray_count;
|
||||
+ info.blocks[1] = 1;
|
||||
+ info.offsets[0] = tables->width - remaining_ray_count;
|
||||
+
|
||||
+ /* Reset the ray launch size so the prolog doesn't think this is a converted dispatch */
|
||||
+ tables->height = 1;
|
||||
+ radv_upload_trace_rays_params(cmd_buffer, tables, mode, &launch_size_va, NULL);
|
||||
+ if (size_loc->sgpr_idx != -1) {
|
||||
+ radv_emit_shader_pointer(cmd_buffer->device, cmd_buffer->cs, base_reg + size_loc->sgpr_idx * 4, launch_size_va,
|
||||
+ true);
|
||||
+ }
|
||||
+
|
||||
+ radv_dispatch(cmd_buffer, &info, pipeline, rt_prolog, VK_PIPELINE_BIND_POINT_RAY_TRACING_KHR);
|
||||
+ }
|
||||
}
|
||||
|
||||
VKAPI_ATTR void VKAPI_CALL
|
117
spec_files/mesa/old/Mesa-MLAA-License-Clarification-Email.txt
Normal file
117
spec_files/mesa/old/Mesa-MLAA-License-Clarification-Email.txt
Normal file
@ -0,0 +1,117 @@
|
||||
|
||||
Subject: RE: Question about Mesa MLAA license
|
||||
From: Jorge Jimenez <iryoku@gmail.com>
|
||||
Date: 01/08/2013 12:50 PM
|
||||
To: Tom Callaway <tcallawa@redhat.com>
|
||||
CC: "jorge@iryoku.com" <jorge@iryoku.com>
|
||||
|
||||
Yes to both questions.
|
||||
|
||||
Thanks,
|
||||
Jorge
|
||||
|
||||
From: Tom Callaway <tcallawa@redhat.com>
|
||||
Sent: January 8, 2013 6:49 PM
|
||||
To: Jorge Jimenez <iryoku@gmail.com>
|
||||
CC: jorge@iryoku.com
|
||||
Subject: Re: Question about Mesa MLAA license
|
||||
|
||||
On 01/08/2013 12:39 PM, Jorge Jimenez wrote:
|
||||
> Hi Tom,
|
||||
>
|
||||
> What we meant with that is that we made an exception for clause 2.
|
||||
> Instead of clause 2, in the case of the Mesa project, you have to name
|
||||
> the technique Jimenez's MLAA in the config options of Mesa. We did that
|
||||
> just to allow them to solve license issues. This exception should be for
|
||||
> the Mesa project, and any project using Mesa, like Fedora.
|
||||
>
|
||||
> We want to widespread usage of our MLAA, so we want to avoid any kind of
|
||||
> license complications. Hope current one is good for Fedora, if not
|
||||
> please tell, and we'll see what we can do!
|
||||
|
||||
Okay, a few more questions:
|
||||
|
||||
* If Fedora decides to simply reproduce the quoted statement:
|
||||
"Uses Jimenez's MLAA. Copyright (C) 2010 by Jorge Jimenez, Belen Masia,
|
||||
Jose I. Echevarria, Fernando Navarro and Diego Gutierrez."
|
||||
|
||||
Specifically, if this is done as part of documentation included with
|
||||
Mesa, is that sufficient to meet clause 2 even if the Mesa config option
|
||||
is not set as described in your exception?
|
||||
|
||||
* Currently, the Mesa config option for MLAA says: "Morphological
|
||||
anti-aliasing based on Jimenez\' MLAA. 0 to disable, 8 for default
|
||||
quality". Is this in compliance with your exception?
|
||||
|
||||
Thanks again,
|
||||
|
||||
~tom
|
||||
|
||||
==
|
||||
Fedora Project
|
||||
|
||||
Subject: RE: Question about Mesa MLAA license
|
||||
From: Jorge Jimenez <iryoku@gmail.com>
|
||||
Date: 01/08/2013 12:39 PM
|
||||
To: "jorge@iryoku.com" <jorge@iryoku.com>, Tom Callaway <tcallawa@redhat.com>
|
||||
|
||||
Hi Tom,
|
||||
|
||||
What we meant with that is that we made an exception for clause 2.
|
||||
Instead of clause 2, in the case of the Mesa project, you have to name
|
||||
the technique Jimenez's MLAA in the config options of Mesa. We did that
|
||||
just to allow them to solve license issues. This exception should be for
|
||||
the Mesa project, and any project using Mesa, like Fedora.
|
||||
|
||||
We want to widespread usage of our MLAA, so we want to avoid any kind of
|
||||
license complications. Hope current one is good for Fedora, if not
|
||||
please tell, and we'll see what we can do!
|
||||
|
||||
Cheers,
|
||||
Jorge
|
||||
|
||||
From: Tom Callaway <tcallawa@redhat.com>
|
||||
Sent: January 8, 2013 6:30 PM
|
||||
To: jorge@iryoku.com
|
||||
Subject: Question about Mesa MLAA license
|
||||
|
||||
Jorge,
|
||||
|
||||
Thanks for all of your fantastic graphics work! I have been auditing
|
||||
Fedora (a popular distribution of Linux) for license compliance and I
|
||||
came across your MLAA code in Mesa.
|
||||
|
||||
The license says:
|
||||
|
||||
* 2. Redistributions in binary form must reproduce the following
|
||||
statement:
|
||||
*
|
||||
* "Uses Jimenez's MLAA. Copyright (C) 2010 by Jorge Jimenez, Belen Masia,
|
||||
* Jose I. Echevarria, Fernando Navarro and Diego Gutierrez."
|
||||
*
|
||||
* Only for use in the Mesa project, this point 2 is filled by naming the
|
||||
* technique Jimenez's MLAA in the Mesa config options.
|
||||
|
||||
That wording is unclear. When you say "Only for use in the Mesa
|
||||
project...", it seems like you could either be saying:
|
||||
|
||||
- This code may only be used as part of Mesa.
|
||||
|
||||
OR
|
||||
|
||||
- In Mesa, you can comply with clause 2 by simply selecting "Jimenez's
|
||||
MLAA" in the Mesa config options.
|
||||
|
||||
*****
|
||||
|
||||
If the first item is true, then we may have to remove the MLAA code from
|
||||
Fedora's copy of Mesa. However, looking at the license on your SMAA
|
||||
code, I do not believe it to be the case. Please let me know either way!
|
||||
|
||||
Thanks in advance,
|
||||
|
||||
Tom Callaway
|
||||
Fedora Legal
|
||||
|
||||
==
|
||||
Fedora Project
|
11
spec_files/mesa/old/gnome-shell-glthread-disable.patch
Normal file
11
spec_files/mesa/old/gnome-shell-glthread-disable.patch
Normal file
@ -0,0 +1,11 @@
|
||||
diff -up mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf.dma mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf
|
||||
--- mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf.dma 2022-11-25 10:32:32.175879868 +1000
|
||||
+++ mesa-22.3.0-rc4/src/util/00-mesa-defaults.conf 2022-11-25 10:32:43.743067470 +1000
|
||||
@@ -653,6 +653,7 @@ TODO: document the other workarounds.
|
||||
<application name="gnome-shell" executable="gnome-shell">
|
||||
<option name="adaptive_sync" value="false" />
|
||||
<option name="v3d_nonmsaa_texture_size_limit" value="true" />
|
||||
+ <option name="mesa_glthread" value="false"/>
|
||||
</application>
|
||||
<application name="Desktop — Plasma" executable="plasmashell">
|
||||
<option name="adaptive_sync" value="false" />
|
42
spec_files/mesa/old/mesa-meson-c99.patch
Normal file
42
spec_files/mesa/old/mesa-meson-c99.patch
Normal file
@ -0,0 +1,42 @@
|
||||
meson: C type error in strtod_l/strtof_l probe
|
||||
|
||||
Future compilers will fail compilation due to the C type error:
|
||||
|
||||
…/testfile.c: In function 'main':
|
||||
…/testfile.c:12:30: error: passing argument 2 of 'strtod_l' from incompatible pointer type
|
||||
12 | double d = strtod_l(s, end, loc);
|
||||
| ^~~
|
||||
| |
|
||||
| char *
|
||||
/usr/include/stdlib.h:416:43: note: expected 'char ** restrict' but argument is of type 'char *'
|
||||
416 | char **__restrict __endptr, locale_t __loc)
|
||||
| ~~~~~~~~~~~~~~~~~~^~~~~~~~
|
||||
…/testfile.c:13:29: error: passing argument 2 of 'strtof_l' from incompatible pointer type
|
||||
13 | float f = strtof_l(s, end, loc);
|
||||
| ^~~
|
||||
| |
|
||||
| char *
|
||||
/usr/include/stdlib.h:420:42: note: expected 'char ** restrict' but argument is of type 'char *'
|
||||
420 | char **__restrict __endptr, locale_t __loc)
|
||||
| ~~~~~~~~~~~~~~~~~~^~~~~~~~
|
||||
|
||||
This means that the probe no longer tests is objective and always
|
||||
fails.
|
||||
|
||||
Submitted upstream: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26927>
|
||||
|
||||
diff --git a/meson.build b/meson.build
|
||||
index 35cc5f1cd5fd9079..1a5d2ba492be0b31 100644
|
||||
--- a/meson.build
|
||||
+++ b/meson.build
|
||||
@@ -1425,8 +1425,8 @@ if cc.links('''
|
||||
locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
|
||||
const char *s = "1.0";
|
||||
char *end;
|
||||
- double d = strtod_l(s, end, loc);
|
||||
- float f = strtof_l(s, end, loc);
|
||||
+ double d = strtod_l(s, &end, loc);
|
||||
+ float f = strtof_l(s, &end, loc);
|
||||
freelocale(loc);
|
||||
return 0;
|
||||
}''',
|
691
spec_files/mesa/old/mesa.spec
Normal file
691
spec_files/mesa/old/mesa.spec
Normal file
@ -0,0 +1,691 @@
|
||||
%ifnarch s390x
|
||||
%global with_hardware 1
|
||||
%global with_vulkan_hw 1
|
||||
%global with_vdpau 1
|
||||
%global with_va 1
|
||||
%if !0%{?rhel}
|
||||
%global with_nine 1
|
||||
%global with_omx 1
|
||||
%global with_opencl 1
|
||||
%endif
|
||||
%global base_vulkan ,amd,nouveau-experimental
|
||||
%endif
|
||||
|
||||
%ifarch %{ix86} x86_64
|
||||
%global with_crocus 1
|
||||
%global with_i915 1
|
||||
%if !0%{?rhel}
|
||||
%global with_intel_clc 1
|
||||
%endif
|
||||
%global with_iris 1
|
||||
%global with_xa 1
|
||||
%global intel_platform_vulkan ,intel,intel_hasvk
|
||||
%endif
|
||||
|
||||
%ifarch aarch64 x86_64 %{ix86}
|
||||
%if !0%{?rhel}
|
||||
%global with_lima 1
|
||||
%global with_vc4 1
|
||||
%endif
|
||||
%global with_etnaviv 1
|
||||
%global with_freedreno 1
|
||||
%global with_kmsro 1
|
||||
%global with_panfrost 1
|
||||
%global with_tegra 1
|
||||
%global with_v3d 1
|
||||
%global with_xa 1
|
||||
%global extra_platform_vulkan ,broadcom,freedreno,panfrost
|
||||
%endif
|
||||
|
||||
%ifnarch s390x
|
||||
%if !0%{?rhel}
|
||||
%global with_r300 1
|
||||
%global with_r600 1
|
||||
%endif
|
||||
%global with_radeonsi 1
|
||||
%global with_vmware 1
|
||||
%endif
|
||||
|
||||
%if !0%{?rhel}
|
||||
%global with_libunwind 1
|
||||
%global with_lmsensors 1
|
||||
%endif
|
||||
|
||||
%ifarch %{valgrind_arches}
|
||||
%bcond_without valgrind
|
||||
%else
|
||||
%bcond_with valgrind
|
||||
%endif
|
||||
|
||||
%global vulkan_drivers swrast%{?base_vulkan}%{?intel_platform_vulkan}%{?extra_platform_vulkan}
|
||||
|
||||
Name: mesa
|
||||
Summary: Mesa graphics libraries
|
||||
%global ver 23.3.3
|
||||
Version: %{lua:ver = string.gsub(rpm.expand("%{ver}"), "-", "~"); print(ver)}
|
||||
Release: 100.bazzite.{{{ git_dir_version }}}
|
||||
License: MIT AND BSD-3-Clause AND SGI-B-2.0
|
||||
URL: http://www.mesa3d.org
|
||||
|
||||
Source0: https://archive.mesa3d.org/mesa-%{ver}.tar.xz
|
||||
# src/gallium/auxiliary/postprocess/pp_mlaa* have an ... interestingly worded license.
|
||||
# Source1 contains email correspondence clarifying the license terms.
|
||||
# Fedora opts to ignore the optional part of clause 2 and treat that code as 2 clause BSD.
|
||||
Source1: Mesa-MLAA-License-Clarification-Email.txt
|
||||
|
||||
Patch10: gnome-shell-glthread-disable.patch
|
||||
Patch11: zink-fix-resizable-bar-detection-logic.patch
|
||||
Patch12: mesa-meson-c99.patch
|
||||
|
||||
# https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26105/
|
||||
Patch30: 26105.patch
|
||||
|
||||
# https://gitlab.com/evlaV/mesa/
|
||||
Patch40: valve.patch
|
||||
|
||||
BuildRequires: meson >= 1.2.0
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: gettext
|
||||
%if 0%{?with_hardware}
|
||||
BuildRequires: kernel-headers
|
||||
%endif
|
||||
# We only check for the minimum version of pkgconfig(libdrm) needed so that the
|
||||
# SRPMs for each arch still have the same build dependencies. See:
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1859515
|
||||
BuildRequires: pkgconfig(libdrm) >= 2.4.97
|
||||
%if 0%{?with_libunwind}
|
||||
BuildRequires: pkgconfig(libunwind)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(expat)
|
||||
BuildRequires: pkgconfig(zlib) >= 1.2.3
|
||||
BuildRequires: pkgconfig(libzstd)
|
||||
BuildRequires: pkgconfig(libselinux)
|
||||
BuildRequires: pkgconfig(wayland-scanner)
|
||||
BuildRequires: pkgconfig(wayland-protocols) >= 1.8
|
||||
BuildRequires: pkgconfig(wayland-client) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-server) >= 1.11
|
||||
BuildRequires: pkgconfig(wayland-egl-backend) >= 3
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xdamage) >= 1.1
|
||||
BuildRequires: pkgconfig(xfixes)
|
||||
BuildRequires: pkgconfig(xcb-glx) >= 1.8.1
|
||||
BuildRequires: pkgconfig(xxf86vm)
|
||||
BuildRequires: pkgconfig(xcb)
|
||||
BuildRequires: pkgconfig(x11-xcb)
|
||||
BuildRequires: pkgconfig(xcb-dri2) >= 1.8
|
||||
BuildRequires: pkgconfig(xcb-dri3)
|
||||
BuildRequires: pkgconfig(xcb-present)
|
||||
BuildRequires: pkgconfig(xcb-sync)
|
||||
BuildRequires: pkgconfig(xshmfence) >= 1.1
|
||||
BuildRequires: pkgconfig(dri2proto) >= 2.8
|
||||
BuildRequires: pkgconfig(glproto) >= 1.4.14
|
||||
BuildRequires: pkgconfig(xcb-xfixes)
|
||||
BuildRequires: pkgconfig(xcb-randr)
|
||||
BuildRequires: pkgconfig(xrandr) >= 1.3
|
||||
BuildRequires: bison
|
||||
BuildRequires: flex
|
||||
%if 0%{?with_lmsensors}
|
||||
BuildRequires: lm_sensors-devel
|
||||
%endif
|
||||
%if 0%{?with_vdpau}
|
||||
BuildRequires: pkgconfig(vdpau) >= 1.1
|
||||
%endif
|
||||
%if 0%{?with_va}
|
||||
BuildRequires: pkgconfig(libva) >= 0.38.0
|
||||
%endif
|
||||
%if 0%{?with_omx}
|
||||
BuildRequires: pkgconfig(libomxil-bellagio)
|
||||
%endif
|
||||
BuildRequires: pkgconfig(libelf)
|
||||
BuildRequires: pkgconfig(libglvnd) >= 1.3.2
|
||||
BuildRequires: llvm-devel >= 7.0.0
|
||||
%if 0%{?with_opencl}
|
||||
BuildRequires: clang-devel
|
||||
BuildRequires: bindgen
|
||||
BuildRequires: rust-packaging
|
||||
BuildRequires: pkgconfig(libclc)
|
||||
BuildRequires: pkgconfig(SPIRV-Tools)
|
||||
BuildRequires: pkgconfig(LLVMSPIRVLib)
|
||||
%endif
|
||||
%if %{with valgrind}
|
||||
BuildRequires: pkgconfig(valgrind)
|
||||
%endif
|
||||
BuildRequires: python3-devel
|
||||
BuildRequires: python3-mako
|
||||
%if 0%{?with_intel_clc}
|
||||
BuildRequires: python3-ply
|
||||
%endif
|
||||
BuildRequires: vulkan-headers
|
||||
BuildRequires: glslang
|
||||
%if 0%{?with_vulkan_hw}
|
||||
BuildRequires: pkgconfig(vulkan)
|
||||
%endif
|
||||
|
||||
%description
|
||||
%{summary}.
|
||||
|
||||
%package filesystem
|
||||
Summary: Mesa driver filesystem
|
||||
Provides: mesa-dri-filesystem = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description filesystem
|
||||
%{summary}.
|
||||
|
||||
%package libGL
|
||||
Summary: Mesa libGL runtime libraries
|
||||
Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: libglvnd-glx%{?_isa} >= 1:1.3.2
|
||||
Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libGL
|
||||
%{summary}.
|
||||
|
||||
%package libGL-devel
|
||||
Summary: Mesa libGL development package
|
||||
Requires: %{name}-libGL%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: libglvnd-devel%{?_isa} >= 1:1.3.2
|
||||
Provides: libGL-devel
|
||||
Provides: libGL-devel%{?_isa}
|
||||
Recommends: gl-manpages
|
||||
|
||||
%description libGL-devel
|
||||
%{summary}.
|
||||
|
||||
%package libEGL
|
||||
Summary: Mesa libEGL runtime libraries
|
||||
Requires: libglvnd-egl%{?_isa} >= 1:1.3.2
|
||||
Requires: %{name}-libgbm%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libEGL
|
||||
%{summary}.
|
||||
|
||||
%package libEGL-devel
|
||||
Summary: Mesa libEGL development package
|
||||
Requires: %{name}-libEGL%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: libglvnd-devel%{?_isa} >= 1:1.3.2
|
||||
Requires: %{name}-khr-devel%{?_isa}
|
||||
Provides: libEGL-devel
|
||||
Provides: libEGL-devel%{?_isa}
|
||||
|
||||
%description libEGL-devel
|
||||
%{summary}.
|
||||
|
||||
%package dri-drivers
|
||||
Summary: Mesa-based DRI drivers
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
%if 0%{?with_va}
|
||||
Recommends: %{name}-va-drivers%{?_isa}
|
||||
%endif
|
||||
|
||||
%description dri-drivers
|
||||
%{summary}.
|
||||
|
||||
%if 0%{?with_omx}
|
||||
%package omx-drivers
|
||||
Summary: Mesa-based OMX drivers
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description omx-drivers
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_va}
|
||||
%package va-drivers
|
||||
Summary: Mesa-based VA-API video acceleration drivers
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Obsoletes: %{name}-vaapi-drivers < 22.2.0-5
|
||||
|
||||
%description va-drivers
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_vdpau}
|
||||
%package vdpau-drivers
|
||||
Summary: Mesa-based VDPAU drivers
|
||||
Requires: %{name}-filesystem%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description vdpau-drivers
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%package libOSMesa
|
||||
Summary: Mesa offscreen rendering libraries
|
||||
Requires: %{name}-libglapi%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: libOSMesa
|
||||
Provides: libOSMesa%{?_isa}
|
||||
|
||||
%description libOSMesa
|
||||
%{summary}.
|
||||
|
||||
%package libOSMesa-devel
|
||||
Summary: Mesa offscreen rendering development package
|
||||
Requires: %{name}-libOSMesa%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libOSMesa-devel
|
||||
%{summary}.
|
||||
|
||||
%package libgbm
|
||||
Summary: Mesa gbm runtime library
|
||||
Provides: libgbm
|
||||
Provides: libgbm%{?_isa}
|
||||
Recommends: %{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
# If mesa-dri-drivers are installed, they must match in version. This is here to prevent using
|
||||
# older mesa-dri-drivers together with a newer mesa-libgbm and its dependants.
|
||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=2193135 .
|
||||
Requires: (%{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} if %{name}-dri-drivers%{?_isa})
|
||||
|
||||
%description libgbm
|
||||
%{summary}.
|
||||
|
||||
%package libgbm-devel
|
||||
Summary: Mesa libgbm development package
|
||||
Requires: %{name}-libgbm%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: libgbm-devel
|
||||
Provides: libgbm-devel%{?_isa}
|
||||
|
||||
%description libgbm-devel
|
||||
%{summary}.
|
||||
|
||||
%if 0%{?with_xa}
|
||||
%package libxatracker
|
||||
Summary: Mesa XA state tracker
|
||||
Provides: libxatracker
|
||||
Provides: libxatracker%{?_isa}
|
||||
|
||||
%description libxatracker
|
||||
%{summary}.
|
||||
|
||||
%package libxatracker-devel
|
||||
Summary: Mesa XA state tracker development package
|
||||
Requires: %{name}-libxatracker%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Provides: libxatracker-devel
|
||||
Provides: libxatracker-devel%{?_isa}
|
||||
|
||||
%description libxatracker-devel
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%package libglapi
|
||||
Summary: Mesa shared glapi
|
||||
Provides: libglapi
|
||||
Provides: libglapi%{?_isa}
|
||||
# If mesa-dri-drivers are installed, they must match in version. This is here to prevent using
|
||||
# older mesa-dri-drivers together with a newer mesa-libglapi or its dependants.
|
||||
# See https://bugzilla.redhat.com/show_bug.cgi?id=2193135 .
|
||||
Requires: (%{name}-dri-drivers%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release} if %{name}-dri-drivers%{?_isa})
|
||||
|
||||
%description libglapi
|
||||
%{summary}.
|
||||
|
||||
%if 0%{?with_opencl}
|
||||
%package libOpenCL
|
||||
Summary: Mesa OpenCL runtime library
|
||||
Requires: ocl-icd%{?_isa}
|
||||
Requires: libclc%{?_isa}
|
||||
Requires: %{name}-libgbm%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
Requires: opencl-filesystem
|
||||
|
||||
%description libOpenCL
|
||||
%{summary}.
|
||||
|
||||
%package libOpenCL-devel
|
||||
Summary: Mesa OpenCL development package
|
||||
Requires: %{name}-libOpenCL%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libOpenCL-devel
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%if 0%{?with_nine}
|
||||
%package libd3d
|
||||
Summary: Mesa Direct3D9 state tracker
|
||||
|
||||
%description libd3d
|
||||
%{summary}.
|
||||
|
||||
%package libd3d-devel
|
||||
Summary: Mesa Direct3D9 state tracker development package
|
||||
Requires: %{name}-libd3d%{?_isa} = %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description libd3d-devel
|
||||
%{summary}.
|
||||
%endif
|
||||
|
||||
%package vulkan-drivers
|
||||
Summary: Mesa Vulkan drivers
|
||||
Requires: vulkan%{_isa}
|
||||
Obsoletes: mesa-vulkan-devel < %{?epoch:%{epoch}:}%{version}-%{release}
|
||||
|
||||
%description vulkan-drivers
|
||||
The drivers with support for the Vulkan API.
|
||||
|
||||
%prep
|
||||
%autosetup -n %{name}-%{ver} -p1
|
||||
cp %{SOURCE1} docs/
|
||||
|
||||
%build
|
||||
# ensure standard Rust compiler flags are set
|
||||
export RUSTFLAGS="%build_rustflags"
|
||||
|
||||
# We've gotten a report that enabling LTO for mesa breaks some games. See
|
||||
# https://bugzilla.redhat.com/show_bug.cgi?id=1862771 for details.
|
||||
# Disable LTO for now
|
||||
%define _lto_cflags %{nil}
|
||||
|
||||
%meson \
|
||||
-Dplatforms=x11,wayland \
|
||||
-Ddri3=enabled \
|
||||
-Dosmesa=true \
|
||||
%if 0%{?with_hardware}
|
||||
-Dgallium-drivers=swrast,virgl,nouveau%{?with_r300:,r300}%{?with_crocus:,crocus}%{?with_i915:,i915}%{?with_iris:,iris}%{?with_vmware:,svga}%{?with_radeonsi:,radeonsi}%{?with_r600:,r600}%{?with_freedreno:,freedreno}%{?with_etnaviv:,etnaviv}%{?with_tegra:,tegra}%{?with_vc4:,vc4}%{?with_v3d:,v3d}%{?with_kmsro:,kmsro}%{?with_lima:,lima}%{?with_panfrost:,panfrost}%{?with_vulkan_hw:,zink} \
|
||||
%else
|
||||
-Dgallium-drivers=swrast,virgl \
|
||||
%endif
|
||||
-Dgallium-vdpau=%{?with_vdpau:enabled}%{!?with_vdpau:disabled} \
|
||||
-Dgallium-omx=%{?with_omx:bellagio}%{!?with_omx:disabled} \
|
||||
-Dgallium-va=%{?with_va:enabled}%{!?with_va:disabled} \
|
||||
-Dgallium-xa=%{?with_xa:enabled}%{!?with_xa:disabled} \
|
||||
-Dgallium-nine=%{?with_nine:true}%{!?with_nine:false} \
|
||||
-Dgallium-opencl=%{?with_opencl:icd}%{!?with_opencl:disabled} \
|
||||
%if 0%{?with_opencl}
|
||||
-Dgallium-rusticl=true \
|
||||
%endif
|
||||
-Dvulkan-drivers=%{?vulkan_drivers} \
|
||||
-Dvulkan-layers=device-select \
|
||||
-Dshared-glapi=enabled \
|
||||
-Dgles1=enabled \
|
||||
-Dgles2=enabled \
|
||||
-Dopengl=true \
|
||||
-Dgbm=enabled \
|
||||
-Dglx=dri \
|
||||
-Degl=enabled \
|
||||
-Dglvnd=true \
|
||||
%if 0%{?with_intel_clc}
|
||||
-Dintel-clc=enabled \
|
||||
%endif
|
||||
-Dmicrosoft-clc=disabled \
|
||||
-Dllvm=enabled \
|
||||
-Dshared-llvm=enabled \
|
||||
-Dvalgrind=%{?with_valgrind:enabled}%{!?with_valgrind:disabled} \
|
||||
-Dxlib-lease=enabled \
|
||||
-Dbuild-tests=false \
|
||||
-Dselinux=true \
|
||||
%if !0%{?with_libunwind}
|
||||
-Dlibunwind=disabled \
|
||||
%endif
|
||||
%if !0%{?with_lmsensors}
|
||||
-Dlmsensors=disabled \
|
||||
%endif
|
||||
-Dandroid-libbacktrace=disabled \
|
||||
%ifarch %{ix86}
|
||||
-Dglx-read-only-text=true
|
||||
%endif
|
||||
%{nil}
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
# libvdpau opens the versioned name, don't bother including the unversioned
|
||||
rm -vf %{buildroot}%{_libdir}/vdpau/*.so
|
||||
# likewise glvnd
|
||||
rm -vf %{buildroot}%{_libdir}/libGLX_mesa.so
|
||||
rm -vf %{buildroot}%{_libdir}/libEGL_mesa.so
|
||||
# XXX can we just not build this
|
||||
rm -vf %{buildroot}%{_libdir}/libGLES*
|
||||
|
||||
# glvnd needs a default provider for indirect rendering where it cannot
|
||||
# determine the vendor
|
||||
ln -s %{_libdir}/libGLX_mesa.so.0 %{buildroot}%{_libdir}/libGLX_system.so.0
|
||||
|
||||
# this keeps breaking, check it early. note that the exit from eu-ftr is odd.
|
||||
pushd %{buildroot}%{_libdir}
|
||||
for i in libOSMesa*.so libGL.so ; do
|
||||
eu-findtextrel $i && exit 1
|
||||
done
|
||||
popd
|
||||
|
||||
%ifarch %{ix86}
|
||||
rm -Rf %{buildroot}%{_datadir}/drirc.d/00-radv-defaults.conf
|
||||
rm -Rf %{buildroot}%{_datadir}/drirc.d/00-mesa-defaults.conf
|
||||
%endif
|
||||
|
||||
%files filesystem
|
||||
%doc docs/Mesa-MLAA-License-Clarification-Email.txt
|
||||
%dir %{_libdir}/dri
|
||||
%if 0%{?with_hardware}
|
||||
%if 0%{?with_vdpau}
|
||||
%dir %{_libdir}/vdpau
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%files libGL
|
||||
%{_libdir}/libGLX_mesa.so.0*
|
||||
%{_libdir}/libGLX_system.so.0*
|
||||
%files libGL-devel
|
||||
%dir %{_includedir}/GL/internal
|
||||
%{_includedir}/GL/internal/dri_interface.h
|
||||
%{_libdir}/pkgconfig/dri.pc
|
||||
%{_libdir}/libglapi.so
|
||||
|
||||
%files libEGL
|
||||
%{_datadir}/glvnd/egl_vendor.d/50_mesa.json
|
||||
%{_libdir}/libEGL_mesa.so.0*
|
||||
%files libEGL-devel
|
||||
%dir %{_includedir}/EGL
|
||||
%{_includedir}/EGL/eglext_angle.h
|
||||
%{_includedir}/EGL/eglmesaext.h
|
||||
|
||||
%files libglapi
|
||||
%{_libdir}/libglapi.so.0
|
||||
%{_libdir}/libglapi.so.0.*
|
||||
|
||||
%files libOSMesa
|
||||
%{_libdir}/libOSMesa.so.8*
|
||||
%files libOSMesa-devel
|
||||
%dir %{_includedir}/GL
|
||||
%{_includedir}/GL/osmesa.h
|
||||
%{_libdir}/libOSMesa.so
|
||||
%{_libdir}/pkgconfig/osmesa.pc
|
||||
|
||||
%files libgbm
|
||||
%{_libdir}/libgbm.so.1
|
||||
%{_libdir}/libgbm.so.1.*
|
||||
%files libgbm-devel
|
||||
%{_libdir}/libgbm.so
|
||||
%{_includedir}/gbm.h
|
||||
%{_libdir}/pkgconfig/gbm.pc
|
||||
|
||||
%if 0%{?with_xa}
|
||||
%files libxatracker
|
||||
%if 0%{?with_hardware}
|
||||
%{_libdir}/libxatracker.so.2
|
||||
%{_libdir}/libxatracker.so.2.*
|
||||
%endif
|
||||
|
||||
%files libxatracker-devel
|
||||
%if 0%{?with_hardware}
|
||||
%{_libdir}/libxatracker.so
|
||||
%{_includedir}/xa_tracker.h
|
||||
%{_includedir}/xa_composite.h
|
||||
%{_includedir}/xa_context.h
|
||||
%{_libdir}/pkgconfig/xatracker.pc
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%if 0%{?with_opencl}
|
||||
%files libOpenCL
|
||||
%{_libdir}/libMesaOpenCL.so.*
|
||||
%{_libdir}/libRusticlOpenCL.so.*
|
||||
%{_sysconfdir}/OpenCL/vendors/mesa.icd
|
||||
%{_sysconfdir}/OpenCL/vendors/rusticl.icd
|
||||
%files libOpenCL-devel
|
||||
%{_libdir}/libMesaOpenCL.so
|
||||
%{_libdir}/libRusticlOpenCL.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_nine}
|
||||
%files libd3d
|
||||
%dir %{_libdir}/d3d/
|
||||
%{_libdir}/d3d/*.so.*
|
||||
|
||||
%files libd3d-devel
|
||||
%{_libdir}/pkgconfig/d3d.pc
|
||||
%{_includedir}/d3dadapter/
|
||||
%{_libdir}/d3d/*.so
|
||||
%endif
|
||||
|
||||
%files dri-drivers
|
||||
%dir %{_datadir}/drirc.d
|
||||
%ifarch aarch64 x86_64
|
||||
%{_datadir}/drirc.d/00-mesa-defaults.conf
|
||||
%endif
|
||||
%{_libdir}/dri/kms_swrast_dri.so
|
||||
%{_libdir}/dri/swrast_dri.so
|
||||
%{_libdir}/dri/virtio_gpu_dri.so
|
||||
|
||||
%if 0%{?with_hardware}
|
||||
%if 0%{?with_r300}
|
||||
%{_libdir}/dri/r300_dri.so
|
||||
%endif
|
||||
%if 0%{?with_radeonsi}
|
||||
%if 0%{?with_r600}
|
||||
%{_libdir}/dri/r600_dri.so
|
||||
%endif
|
||||
%{_libdir}/dri/radeonsi_dri.so
|
||||
%endif
|
||||
%ifarch %{ix86} x86_64
|
||||
%{_libdir}/dri/crocus_dri.so
|
||||
%{_libdir}/dri/i915_dri.so
|
||||
%{_libdir}/dri/iris_dri.so
|
||||
%endif
|
||||
%ifarch aarch64 x86_64 %{ix86}
|
||||
%{_libdir}/dri/ingenic-drm_dri.so
|
||||
%{_libdir}/dri/imx-drm_dri.so
|
||||
%{_libdir}/dri/imx-lcdif_dri.so
|
||||
%{_libdir}/dri/kirin_dri.so
|
||||
%{_libdir}/dri/komeda_dri.so
|
||||
%{_libdir}/dri/mali-dp_dri.so
|
||||
%{_libdir}/dri/mcde_dri.so
|
||||
%{_libdir}/dri/mxsfb-drm_dri.so
|
||||
%{_libdir}/dri/rcar-du_dri.so
|
||||
%{_libdir}/dri/stm_dri.so
|
||||
%endif
|
||||
%if 0%{?with_vc4}
|
||||
%{_libdir}/dri/vc4_dri.so
|
||||
%endif
|
||||
%if 0%{?with_v3d}
|
||||
%{_libdir}/dri/v3d_dri.so
|
||||
%endif
|
||||
%if 0%{?with_freedreno}
|
||||
%{_libdir}/dri/kgsl_dri.so
|
||||
%{_libdir}/dri/msm_dri.so
|
||||
%endif
|
||||
%if 0%{?with_etnaviv}
|
||||
%{_libdir}/dri/etnaviv_dri.so
|
||||
%endif
|
||||
%if 0%{?with_tegra}
|
||||
%{_libdir}/dri/tegra_dri.so
|
||||
%endif
|
||||
%if 0%{?with_lima}
|
||||
%{_libdir}/dri/lima_dri.so
|
||||
%endif
|
||||
%if 0%{?with_panfrost}
|
||||
%{_libdir}/dri/panfrost_dri.so
|
||||
%endif
|
||||
%{_libdir}/dri/nouveau_dri.so
|
||||
%if 0%{?with_vmware}
|
||||
%{_libdir}/dri/vmwgfx_dri.so
|
||||
%endif
|
||||
%endif
|
||||
%if 0%{?with_opencl}
|
||||
%dir %{_libdir}/gallium-pipe
|
||||
%{_libdir}/gallium-pipe/*.so
|
||||
%endif
|
||||
%if 0%{?with_kmsro}
|
||||
%{_libdir}/dri/armada-drm_dri.so
|
||||
%{_libdir}/dri/exynos_dri.so
|
||||
%{_libdir}/dri/hdlcd_dri.so
|
||||
%{_libdir}/dri/hx8357d_dri.so
|
||||
%{_libdir}/dri/ili9225_dri.so
|
||||
%{_libdir}/dri/ili9341_dri.so
|
||||
%{_libdir}/dri/imx-dcss_dri.so
|
||||
%{_libdir}/dri/mediatek_dri.so
|
||||
%{_libdir}/dri/meson_dri.so
|
||||
%{_libdir}/dri/mi0283qt_dri.so
|
||||
%{_libdir}/dri/pl111_dri.so
|
||||
%{_libdir}/dri/repaper_dri.so
|
||||
%{_libdir}/dri/rockchip_dri.so
|
||||
%{_libdir}/dri/st7586_dri.so
|
||||
%{_libdir}/dri/st7735r_dri.so
|
||||
%{_libdir}/dri/sun4i-drm_dri.so
|
||||
%endif
|
||||
%if 0%{?with_vulkan_hw}
|
||||
%{_libdir}/dri/zink_dri.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_omx}
|
||||
%files omx-drivers
|
||||
%{_libdir}/bellagio/libomx_mesa.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_va}
|
||||
%files va-drivers
|
||||
%{_libdir}/dri/nouveau_drv_video.so
|
||||
%if 0%{?with_r600}
|
||||
%{_libdir}/dri/r600_drv_video.so
|
||||
%endif
|
||||
%if 0%{?with_radeonsi}
|
||||
%{_libdir}/dri/radeonsi_drv_video.so
|
||||
%endif
|
||||
%{_libdir}/dri/virtio_gpu_drv_video.so
|
||||
%endif
|
||||
|
||||
%if 0%{?with_vdpau}
|
||||
%files vdpau-drivers
|
||||
%{_libdir}/vdpau/libvdpau_nouveau.so.1*
|
||||
%if 0%{?with_r600}
|
||||
%{_libdir}/vdpau/libvdpau_r600.so.1*
|
||||
%endif
|
||||
%if 0%{?with_radeonsi}
|
||||
%{_libdir}/vdpau/libvdpau_radeonsi.so.1*
|
||||
%endif
|
||||
%{_libdir}/vdpau/libvdpau_virtio_gpu.so.1*
|
||||
%endif
|
||||
|
||||
%files vulkan-drivers
|
||||
%{_libdir}/libvulkan_lvp.so
|
||||
%{_datadir}/vulkan/icd.d/lvp_icd.*.json
|
||||
%{_libdir}/libVkLayer_MESA_device_select.so
|
||||
%{_datadir}/vulkan/implicit_layer.d/VkLayer_MESA_device_select.json
|
||||
%if 0%{?with_vulkan_hw}
|
||||
%{_libdir}/libvulkan_radeon.so
|
||||
%ifarch aarch64 x86_64
|
||||
%{_datadir}/drirc.d/00-radv-defaults.conf
|
||||
%endif
|
||||
%{_datadir}/vulkan/icd.d/radeon_icd.*.json
|
||||
%{_libdir}/libvulkan_nouveau.so
|
||||
%{_datadir}/vulkan/icd.d/nouveau_icd.*.json
|
||||
%ifarch %{ix86} x86_64
|
||||
%{_libdir}/libvulkan_intel.so
|
||||
%{_datadir}/vulkan/icd.d/intel_icd.*.json
|
||||
%{_libdir}/libvulkan_intel_hasvk.so
|
||||
%{_datadir}/vulkan/icd.d/intel_hasvk_icd.*.json
|
||||
%endif
|
||||
%ifarch aarch64 x86_64 %{ix86}
|
||||
%{_libdir}/libvulkan_broadcom.so
|
||||
%{_datadir}/vulkan/icd.d/broadcom_icd.*.json
|
||||
%{_libdir}/libvulkan_freedreno.so
|
||||
%{_datadir}/vulkan/icd.d/freedreno_icd.*.json
|
||||
%{_libdir}/libvulkan_panfrost.so
|
||||
%{_datadir}/vulkan/icd.d/panfrost_icd.*.json
|
||||
%endif
|
||||
%endif
|
||||
|
||||
%changelog
|
||||
%autochangelog
|
1670
spec_files/mesa/old/valve.patch
Normal file
1670
spec_files/mesa/old/valve.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,39 @@
|
||||
From a077c14f150f1c4f670dce381ac2eb548f1a4ac2 Mon Sep 17 00:00:00 2001
|
||||
From: Alessandro Astone <ales.astone@gmail.com>
|
||||
Date: Wed, 10 Jan 2024 17:24:30 +0100
|
||||
Subject: [PATCH] zink: Fix resizable BAR detection logic
|
||||
|
||||
This was broken in two ways:
|
||||
* When looking for the MAX biggest_ram it was actually comparing
|
||||
a candidate against biggest_vis_ram
|
||||
|
||||
* mem_props.memoryTypes[] should be accessed with the memory type
|
||||
index as found in heap_map
|
||||
|
||||
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/10341
|
||||
Cc: 23.3 <mesa-stable>
|
||||
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26979>
|
||||
---
|
||||
src/gallium/drivers/zink/zink_screen.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/src/gallium/drivers/zink/zink_screen.c b/src/gallium/drivers/zink/zink_screen.c
|
||||
index 5a6d17cb4fa3..6697d7ab938c 100644
|
||||
--- a/src/gallium/drivers/zink/zink_screen.c
|
||||
+++ b/src/gallium/drivers/zink/zink_screen.c
|
||||
@@ -3258,10 +3258,10 @@ zink_internal_create_screen(const struct pipe_screen_config *config, int64_t dev
|
||||
{
|
||||
uint64_t biggest_vis_vram = 0;
|
||||
for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL_VISIBLE]; i++)
|
||||
- biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size);
|
||||
+ biggest_vis_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL_VISIBLE][i]].heapIndex].size);
|
||||
uint64_t biggest_vram = 0;
|
||||
for (unsigned i = 0; i < screen->heap_count[ZINK_HEAP_DEVICE_LOCAL]; i++)
|
||||
- biggest_vram = MAX2(biggest_vis_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[i].heapIndex].size);
|
||||
+ biggest_vram = MAX2(biggest_vram, screen->info.mem_props.memoryHeaps[screen->info.mem_props.memoryTypes[screen->heap_map[ZINK_HEAP_DEVICE_LOCAL][i]].heapIndex].size);
|
||||
/* determine if vis vram is roughly equal to total vram */
|
||||
if (biggest_vis_vram > biggest_vram * 0.9)
|
||||
screen->resizable_bar = true;
|
||||
--
|
||||
GitLab
|
||||
|
@ -1,20 +1,21 @@
|
||||
From 654500be494e1a19f2d1bb44099f294805bec228 Mon Sep 17 00:00:00 2001
|
||||
From e496ed0a6b6c467ac01e33fa14e05dc2e0888a74 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Fri, 15 Dec 2023 01:22:10 -0800
|
||||
Subject: [PATCH 1/2] Revert "xwayland: add support for wp-tearing-control-v1"
|
||||
Date: Wed, 31 Jan 2024 17:22:32 -0800
|
||||
Subject: [PATCH 1/4] Revert "xwayland: add support for wp-tearing-control-v1"
|
||||
|
||||
This reverts commit 1ce2025822244c85826ab36febfa5945186b4a2a.
|
||||
---
|
||||
hw/xwayland/meson.build | 3 ---
|
||||
hw/xwayland/xwayland-present.c | 13 +------------
|
||||
hw/xwayland/xwayland-present.c | 21 +++------------------
|
||||
hw/xwayland/xwayland-present.h | 1 -
|
||||
hw/xwayland/xwayland-screen.c | 5 -----
|
||||
hw/xwayland/xwayland-screen.h | 1 -
|
||||
hw/xwayland/xwayland-window.c | 9 ---------
|
||||
hw/xwayland/xwayland-window.h | 1 -
|
||||
6 files changed, 1 insertion(+), 31 deletions(-)
|
||||
7 files changed, 3 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index 57a01cef4..41be1240e 100644
|
||||
index 54529b64e..fbdbb2458 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -48,7 +48,6 @@ xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
@ -22,48 +23,47 @@ index 57a01cef4..41be1240e 100644
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
-tearing_xml = join_paths(protodir, 'staging', 'tearing-control', 'tearing-control-v1.xml')
|
||||
syncobj_xml = join_paths(protodir, 'staging', 'linux-drm-syncobj', 'linux-drm-syncobj-v1.xml')
|
||||
|
||||
client_header = generator(scanner,
|
||||
@@ -78,7 +77,6 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
output : '@BASENAME@-client-protocol.h',
|
||||
@@ -77,7 +76,6 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
-srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(syncobj_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
srcs += code.process(pointer_xml)
|
||||
@@ -92,7 +90,6 @@ srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(gestures_xml)
|
||||
@@ -90,7 +88,6 @@ srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
-srcs += code.process(tearing_xml)
|
||||
srcs += code.process(syncobj_xml)
|
||||
|
||||
if build_ei
|
||||
xwayland_dep += libei_dep
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index f611bb9ec..be8d00c05 100644
|
||||
index 941be06da..bb3310dc9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,10 +34,9 @@
|
||||
@@ -34,9 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
#include "linux-drm-syncobj-v1-client-protocol.h"
|
||||
|
||||
-#define XWL_PRESENT_CAPS PresentCapabilityAsync | PresentCapabilityAsyncMayTear
|
||||
+#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
|
||||
/*
|
||||
@@ -889,16 +888,6 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
@@ -797,16 +796,6 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
- if (xwl_window->tearing_control) {
|
||||
- uint32_t hint;
|
||||
- if (event->options & PresentOptionAsyncMayTear)
|
||||
- if (event->async_may_tear)
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC;
|
||||
- else
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC;
|
||||
@ -74,8 +74,38 @@ index f611bb9ec..be8d00c05 100644
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
@@ -1010,15 +999,11 @@ xwl_present_pixmap(WindowPtr window,
|
||||
}
|
||||
|
||||
vblank->event_id = ++xwl_present_event_id;
|
||||
- event->async_may_tear = options & PresentOptionAsyncMayTear;
|
||||
|
||||
- /* Synchronous Xwayland presentations always complete (at least) one frame after they
|
||||
+ /* Xwayland presentations always complete (at least) one frame after they
|
||||
* are executed
|
||||
*/
|
||||
- if (event->async_may_tear)
|
||||
- vblank->exec_msc = vblank->target_msc;
|
||||
- else
|
||||
- vblank->exec_msc = vblank->target_msc - 1;
|
||||
+ vblank->exec_msc = vblank->target_msc - 1;
|
||||
|
||||
vblank->queued = TRUE;
|
||||
if (crtc_msc < vblank->exec_msc) {
|
||||
diff --git a/hw/xwayland/xwayland-present.h b/hw/xwayland/xwayland-present.h
|
||||
index 4fd1e579f..806272089 100644
|
||||
--- a/hw/xwayland/xwayland-present.h
|
||||
+++ b/hw/xwayland/xwayland-present.h
|
||||
@@ -59,7 +59,6 @@ struct xwl_present_event {
|
||||
present_vblank_rec vblank;
|
||||
|
||||
PixmapPtr pixmap;
|
||||
- Bool async_may_tear;
|
||||
};
|
||||
|
||||
Bool xwl_present_entered_for_each_frame_callback(void);
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index e4c212795..2d373ad8f 100644
|
||||
index cc14e0771..2bc553b50 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -63,7 +63,6 @@
|
||||
@ -83,10 +113,10 @@ index e4c212795..2d373ad8f 100644
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
#include "linux-drm-syncobj-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -463,10 +462,6 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
static DevPrivateKeyRec xwl_client_private_key;
|
||||
@@ -462,10 +461,6 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
}
|
||||
@ -98,7 +128,7 @@ index e4c212795..2d373ad8f 100644
|
||||
else if (xwl_screen->glamor) {
|
||||
xwl_glamor_init_wl_registry(xwl_screen, registry, id, interface,
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index fce351072..3e93f2512 100644
|
||||
index bd66dd681..656d2afde 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -110,7 +110,6 @@ struct xwl_screen {
|
||||
@ -106,11 +136,11 @@ index fce351072..3e93f2512 100644
|
||||
struct wp_viewporter *viewporter;
|
||||
struct xwayland_shell_v1 *xwayland_shell;
|
||||
- struct wp_tearing_control_manager_v1 *tearing_control_manager;
|
||||
struct wp_linux_drm_syncobj_v1 *explicit_sync;
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 070d40dc2..3319d7962 100644
|
||||
index 4978f37c7..b018d9656 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -46,7 +46,6 @@
|
||||
@ -121,7 +151,7 @@ index 070d40dc2..3319d7962 100644
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
@@ -942,11 +941,6 @@ ensure_surface_for_window(WindowPtr window)
|
||||
@@ -967,11 +966,6 @@ ensure_surface_for_window(WindowPtr window)
|
||||
xwl_window_check_resolution_change_emulation(xwl_window);
|
||||
}
|
||||
|
||||
@ -133,18 +163,18 @@ index 070d40dc2..3319d7962 100644
|
||||
return TRUE;
|
||||
|
||||
err:
|
||||
@@ -1157,9 +1151,6 @@ xwl_unrealize_window(WindowPtr window)
|
||||
@@ -1182,9 +1176,6 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_present_for_each_frame_callback(xwl_window, xwl_present_unrealize_window);
|
||||
#endif
|
||||
|
||||
- if (xwl_window->tearing_control)
|
||||
- wp_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
-
|
||||
if (xwl_window->surface_sync)
|
||||
wp_linux_drm_syncobj_surface_v1_destroy(xwl_window->surface_sync);
|
||||
|
||||
release_wl_surface_for_window(xwl_window);
|
||||
xorg_list_del(&xwl_window->link_damage);
|
||||
xorg_list_del(&xwl_window->link_window);
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 51ce91b57..2d1bb1c08 100644
|
||||
index 7fbb2a623..f8200d537 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -121,7 +121,6 @@ struct xwl_window {
|
||||
@ -152,66 +182,65 @@ index 51ce91b57..2d1bb1c08 100644
|
||||
/* If TRUE, the window buffer format supports scanout with implicit modifier */
|
||||
Bool has_implicit_scanout_support;
|
||||
- struct wp_tearing_control_v1 *tearing_control;
|
||||
struct wp_linux_drm_syncobj_surface_v1 *surface_sync;
|
||||
};
|
||||
|
||||
struct xwl_window *xwl_window_get(WindowPtr window);
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From bd8b66f63a832798db890aa2d4212e9eceb84e66 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Thu, 14 Dec 2023 23:47:22 -0800
|
||||
Subject: [PATCH 2/2] Add Gamescope Tearing Protocol
|
||||
From 01a8a454f04dca944db446815f28bf46f8f822b6 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 24 Aug 2022 23:16:24 +0000
|
||||
Subject: [PATCH 2/4] xwayland: Implement tearing protocol
|
||||
|
||||
---
|
||||
hw/xwayland/meson.build | 3 +
|
||||
.../gamescope-tearing-control-unstable-v1.xml | 141 ++++++++++++++++++
|
||||
hw/xwayland/xwayland-output.c | 15 +-
|
||||
hw/xwayland/xwayland-present.c | 17 ++-
|
||||
.../tearing-control-unstable-v1.xml | 142 ++++++++++++++++++
|
||||
hw/xwayland/xwayland-present.c | 11 ++
|
||||
hw/xwayland/xwayland-screen.c | 4 +
|
||||
hw/xwayland/xwayland-screen.h | 1 +
|
||||
hw/xwayland/xwayland-window.c | 11 ++
|
||||
hw/xwayland/xwayland-window.h | 1 +
|
||||
8 files changed, 191 insertions(+), 2 deletions(-)
|
||||
create mode 100644 hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
7 files changed, 173 insertions(+)
|
||||
create mode 100644 hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index 41be1240e..6b12f0ce7 100644
|
||||
index fbdbb2458..d29e55d7d 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -48,6 +48,7 @@ xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
@@ -46,6 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'gamescope-tearing-control-unstable-v1.xml')
|
||||
syncobj_xml = join_paths(protodir, 'staging', 'linux-drm-syncobj', 'linux-drm-syncobj-v1.xml')
|
||||
|
||||
client_header = generator(scanner,
|
||||
@@ -77,6 +78,7 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
@@ -74,6 +75,7 @@ srcs += client_header.process(dmabuf_xml)
|
||||
srcs += client_header.process(viewporter_xml)
|
||||
srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
+srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
+srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(syncobj_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
srcs += code.process(pointer_xml)
|
||||
@@ -90,6 +92,7 @@ srcs += code.process(xdg_shell_xml)
|
||||
@@ -86,6 +88,7 @@ srcs += code.process(dmabuf_xml)
|
||||
srcs += code.process(viewporter_xml)
|
||||
srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
+srcs += code.process(tearing_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
+srcs += code.process(tearing_xml)
|
||||
srcs += code.process(syncobj_xml)
|
||||
|
||||
if build_ei
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
new file mode 100644
|
||||
index 000000000..7cdb5dd57
|
||||
index 000000000..ce130718e
|
||||
--- /dev/null
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
@@ -0,0 +1,141 @@
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
@@ -0,0 +1,142 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<protocol name="gamescope_tearing_control_unstable_v1">
|
||||
+<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+
|
||||
+ <copyright>
|
||||
+ Copyright © 2021 Xaver Hugl
|
||||
@ -236,7 +265,7 @@ index 000000000..7cdb5dd57
|
||||
+ DEALINGS IN THE SOFTWARE.
|
||||
+ </copyright>
|
||||
+
|
||||
+ <interface name="gamescope_tearing_control_v1" version="1">
|
||||
+ <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <description summary="protocol for tearing control">
|
||||
+ This global is a factory interface, allowing clients to request
|
||||
+ the compositor to use asynchronous page flips on a per-surface basis.
|
||||
@ -260,7 +289,7 @@ index 000000000..7cdb5dd57
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy tearing control factory object">
|
||||
+ Destroy this tearing control factory object. Other objects, including
|
||||
+ gamescope_surface_tearing_control_v1 objects created by this factory,
|
||||
+ zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ shall not be affected by this request.
|
||||
+ </description>
|
||||
+ </request>
|
||||
@ -275,19 +304,19 @@ index 000000000..7cdb5dd57
|
||||
+ Instantiate an interface extension for the given wl_surface to
|
||||
+ request asynchronous page flips for presentation.
|
||||
+
|
||||
+ If the given wl_surface already has a gamescope_surface_tearing_control_v1
|
||||
+ If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ object associated, the tearing_control_exists protocol error is raised.
|
||||
+ </description>
|
||||
+
|
||||
+ <arg name="id" type="new_id"
|
||||
+ interface="gamescope_surface_tearing_control_v1"
|
||||
+ interface="zwp_surface_tearing_control_v1"
|
||||
+ summary="the new surface tearing interface id"/>
|
||||
+ <arg name="surface" type="object" interface="wl_surface"
|
||||
+ summary="the surface"/>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+ <interface name="gamescope_surface_tearing_control_v1" version="1">
|
||||
+ <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <description summary="per-surface tearing control request">
|
||||
+ An additional interface to a wl_surface object, which allows the client
|
||||
+ to hint to the compositor if and when it should use asynchronous page
|
||||
@ -351,167 +380,100 @@ index 000000000..7cdb5dd57
|
||||
+ </interface>
|
||||
+
|
||||
+</protocol>
|
||||
\ No newline at end of file
|
||||
diff --git a/hw/xwayland/xwayland-output.c b/hw/xwayland/xwayland-output.c
|
||||
index fe7a9232e..ea95a6c64 100644
|
||||
--- a/hw/xwayland/xwayland-output.c
|
||||
+++ b/hw/xwayland/xwayland-output.c
|
||||
@@ -338,6 +338,19 @@ const int32_t xwl_output_fake_modes[][2] = {
|
||||
{ 640, 350 },
|
||||
};
|
||||
|
||||
+/* Enables always exposing extra modes without
|
||||
+ * supporting viewporter.
|
||||
+ * Useful for some wayland compositors
|
||||
+ * that work kiosk-like with a single window, that handle scaling
|
||||
+ * themselves where viewporter wouldn't make sense.
|
||||
+ */
|
||||
+static Bool
|
||||
+always_expose_extra_modes(void)
|
||||
+{
|
||||
+ const char *extra_mode_env = getenv("XWAYLAND_FORCE_ENABLE_EXTRA_MODES");
|
||||
+ return extra_mode_env && atoi(extra_mode_env) != 0;
|
||||
+}
|
||||
+
|
||||
/* Build an array with RRModes the first mode is the actual output mode, the
|
||||
* rest are fake modes from the xwl_output_fake_modes list. We do this for apps
|
||||
* which want to change resolution when they go fullscreen.
|
||||
@@ -363,7 +376,7 @@ output_get_rr_modes(struct xwl_output *xwl_output,
|
||||
|
||||
*count = 1;
|
||||
|
||||
- if (!xwl_screen_has_resolution_change_emulation(xwl_screen) && !xwl_screen->force_xrandr_emulation)
|
||||
+ if (!xwl_screen_has_resolution_change_emulation(xwl_screen) && !xwl_screen->force_xrandr_emulation && !always_expose_extra_modes())
|
||||
return rr_modes;
|
||||
|
||||
/* Add fake modes */
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index be8d00c05..600c0aaa7 100644
|
||||
index bb3310dc9..6f1d57a42 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,6 +34,7 @@
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "linux-drm-syncobj-v1-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
@@ -705,6 +706,7 @@ xwl_present_check_flip(RRCrtcPtr crtc,
|
||||
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(present_window);
|
||||
struct xwl_window *xwl_window = xwl_window_from_window(present_window);
|
||||
ScreenPtr screen = pixmap->drawable.pScreen;
|
||||
+ PixmapPtr window_pixmap;
|
||||
struct xwl_screen *xwl_screen = xwl_screen_get(screen);
|
||||
|
||||
if (reason)
|
||||
@@ -714,6 +716,7 @@ xwl_present_check_flip(RRCrtcPtr crtc,
|
||||
return FALSE;
|
||||
|
||||
xwl_present_maybe_set_reason(xwl_window, reason);
|
||||
+ window_pixmap = screen->GetWindowPixmap(xwl_window->window);
|
||||
|
||||
if (!crtc)
|
||||
return FALSE;
|
||||
@@ -742,6 +745,10 @@ xwl_present_check_flip(RRCrtcPtr crtc,
|
||||
if (!xwl_glamor_check_flip(present_window, pixmap))
|
||||
return FALSE;
|
||||
|
||||
+ /* If this is a dummy window, we can always flip to it */
|
||||
+ if (window_pixmap->drawable.width == 1 && window_pixmap->drawable.height == 1)
|
||||
+ return TRUE;
|
||||
+
|
||||
/* If glamor doesn't support implicit sync and the compositor doesn't
|
||||
* support explicit sync, we cannot flip
|
||||
*/
|
||||
@@ -753,7 +760,7 @@ xwl_present_check_flip(RRCrtcPtr crtc,
|
||||
* window's, e.g. because a client redirected this window or one of its
|
||||
* parents.
|
||||
*/
|
||||
- if (screen->GetWindowPixmap(xwl_window->window) != screen->GetWindowPixmap(present_window))
|
||||
+ if (window_pixmap != screen->GetWindowPixmap(present_window))
|
||||
return FALSE;
|
||||
|
||||
/*
|
||||
@@ -888,6 +895,14 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
@@ -796,6 +798,15 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
+
|
||||
+ // Josh: No support for VSync relaxed, this is something that should
|
||||
+ // be determined by a user setting in gamescope.
|
||||
+ if (xwl_window->tearing_control)
|
||||
+ gamescope_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ vblank->sync_flip
|
||||
+ ? GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+ zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ sync_flip
|
||||
+ ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index 2d373ad8f..3eb8ceee4 100644
|
||||
index 2bc553b50..e35861e46 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -63,6 +63,7 @@
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "linux-drm-syncobj-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -462,6 +463,9 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
@@ -457,6 +458,9 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
+ else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ }
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
}
|
||||
+ else if (strcmp(interface, "gamescope_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &gamescope_tearing_control_v1_interface, 1);
|
||||
+ }
|
||||
#ifdef XWL_HAS_GLAMOR
|
||||
else if (xwl_screen->glamor) {
|
||||
xwl_glamor_init_wl_registry(xwl_screen, registry, id, interface,
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index 3e93f2512..206a0d2ae 100644
|
||||
index 656d2afde..bf75278fd 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -117,6 +117,7 @@ struct xwl_screen {
|
||||
@@ -113,6 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
+ struct zwp_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
+ struct gamescope_tearing_control_v1 *tearing_control;
|
||||
uint32_t serial;
|
||||
|
||||
#define XWL_FORMAT_ARGB8888 (1 << 0)
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 3319d7962..beef826a0 100644
|
||||
index b018d9656..7b3534385 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -49,6 +49,7 @@
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "linux-drm-syncobj-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -900,6 +901,11 @@ ensure_surface_for_window(WindowPtr window)
|
||||
xwl_screen->xwayland_shell, xwl_window->surface);
|
||||
@@ -920,6 +921,11 @@ ensure_surface_for_window(WindowPtr window)
|
||||
goto err;
|
||||
}
|
||||
|
||||
+ if (xwl_screen->tearing_control) {
|
||||
+ xwl_window->tearing_control =
|
||||
+ gamescope_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ }
|
||||
+
|
||||
if (!xwl_screen->rootless && !xwl_create_root_surface(xwl_window))
|
||||
goto err;
|
||||
|
||||
@@ -1144,6 +1150,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
xwl_window->xwayland_surface = xwayland_shell_v1_get_xwayland_surface(
|
||||
xwl_screen->xwayland_shell, xwl_window->surface);
|
||||
@@ -1169,6 +1175,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||
if (xwl_window_has_viewport_enabled(xwl_window))
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
+ if (xwl_window->tearing_control) {
|
||||
+ gamescope_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ xwl_window->tearing_control = NULL;
|
||||
+ }
|
||||
+
|
||||
@ -519,16 +481,248 @@ index 3319d7962..beef826a0 100644
|
||||
|
||||
#ifdef GLAMOR_HAS_GBM
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 2d1bb1c08..ed32a1a1c 100644
|
||||
index f8200d537..519d9394c 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -121,6 +121,7 @@ struct xwl_window {
|
||||
struct xwl_dmabuf_feedback feedback;
|
||||
/* If TRUE, the window buffer format supports scanout with implicit modifier */
|
||||
Bool has_implicit_scanout_support;
|
||||
@@ -99,6 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
+ struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 3357fc57deb1e397e6a2023a4b0254aeed957349 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 31 Aug 2022 12:57:09 +0000
|
||||
Subject: [PATCH 3/4] Use gamescope tearing protocol instead
|
||||
|
||||
Renamed to not clash
|
||||
---
|
||||
hw/xwayland/meson.build | 2 +-
|
||||
...xml => gamescope-tearing-control-unstable-v1.xml} | 12 ++++++------
|
||||
hw/xwayland/xwayland-present.c | 8 ++++----
|
||||
hw/xwayland/xwayland-screen.c | 6 +++---
|
||||
hw/xwayland/xwayland-screen.h | 2 +-
|
||||
hw/xwayland/xwayland-window.c | 6 +++---
|
||||
hw/xwayland/xwayland-window.h | 2 +-
|
||||
7 files changed, 19 insertions(+), 19 deletions(-)
|
||||
rename hw/xwayland/protocols/unstable/tearing-control/{tearing-control-unstable-v1.xml => gamescope-tearing-control-unstable-v1.xml} (93%)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index d29e55d7d..73f2bdd94 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,7 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
-tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'gamescope-tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
similarity index 93%
|
||||
rename from hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
rename to hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
index ce130718e..3c7cfb09e 100644
|
||||
--- a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
-<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+<protocol name="gamescope_tearing_control_unstable_v1">
|
||||
|
||||
<copyright>
|
||||
Copyright © 2021 Xaver Hugl
|
||||
@@ -24,7 +24,7 @@
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
- <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_tearing_control_v1" version="1">
|
||||
<description summary="protocol for tearing control">
|
||||
This global is a factory interface, allowing clients to request
|
||||
the compositor to use asynchronous page flips on a per-surface basis.
|
||||
@@ -48,7 +48,7 @@
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy tearing control factory object">
|
||||
Destroy this tearing control factory object. Other objects, including
|
||||
- zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ gamescope_surface_tearing_control_v1 objects created by this factory,
|
||||
shall not be affected by this request.
|
||||
</description>
|
||||
</request>
|
||||
@@ -63,19 +63,19 @@
|
||||
Instantiate an interface extension for the given wl_surface to
|
||||
request asynchronous page flips for presentation.
|
||||
|
||||
- If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ If the given wl_surface already has a gamescope_surface_tearing_control_v1
|
||||
object associated, the tearing_control_exists protocol error is raised.
|
||||
</description>
|
||||
|
||||
<arg name="id" type="new_id"
|
||||
- interface="zwp_surface_tearing_control_v1"
|
||||
+ interface="gamescope_surface_tearing_control_v1"
|
||||
summary="the new surface tearing interface id"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"
|
||||
summary="the surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
- <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_surface_tearing_control_v1" version="1">
|
||||
<description summary="per-surface tearing control request">
|
||||
An additional interface to a wl_surface object, which allows the client
|
||||
to hint to the compositor if and when it should use asynchronous page
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 6f1d57a42..5cbd767c9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
@@ -802,10 +802,10 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
// Josh: No support for VSync relaxed, this is something that should
|
||||
// be determined by a user setting in gamescope.
|
||||
if (xwl_window->tearing_control)
|
||||
- zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ gamescope_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
sync_flip
|
||||
- ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
- : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+ ? GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index e35861e46..2a025db18 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,7 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -458,8 +458,8 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
- xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ else if (strcmp(interface, "gamescope_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &gamescope_tearing_control_v1_interface, 1);
|
||||
}
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bf75278fd..d6b1a1d84 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,7 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
- struct zwp_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 7b3534385..d3bbe703d 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -923,7 +923,7 @@ ensure_surface_for_window(WindowPtr window)
|
||||
|
||||
if (xwl_screen->tearing_control) {
|
||||
xwl_window->tearing_control =
|
||||
- zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ gamescope_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
}
|
||||
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
@@ -1176,7 +1176,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
if (xwl_window->tearing_control) {
|
||||
- zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ gamescope_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
xwl_window->tearing_control = NULL;
|
||||
}
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 519d9394c..95f770c07 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,7 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
- struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_surface_tearing_control_v1 *tearing_control;
|
||||
struct wp_linux_drm_syncobj_surface_v1 *surface_sync;
|
||||
};
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From c799ef123d1ed4eddc7972451b1b313b14195935 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:36:04 -0800
|
||||
Subject: [PATCH 4/4] Fix missing sync_flip param
|
||||
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 5cbd767c9..f22e8f987 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -754,7 +754,7 @@ xwl_present_clear_window_flip(WindowPtr window)
|
||||
}
|
||||
|
||||
static Bool
|
||||
-xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
+xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage, Bool sync_flip)
|
||||
{
|
||||
WindowPtr present_window = vblank->window;
|
||||
PixmapPtr pixmap = vblank->pixmap;
|
||||
@@ -873,7 +873,7 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
} else
|
||||
damage = RegionDuplicate(&window->clipList);
|
||||
|
||||
- if (xwl_present_flip(vblank, damage)) {
|
||||
+ if (xwl_present_flip(vblank, damage, vblank->sync_flip)) {
|
||||
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(vblank->window);
|
||||
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
File diff suppressed because it is too large
Load Diff
729
spec_files/xorg-x11-server-Xwayland/old/0001-Valve.patch
Normal file
729
spec_files/xorg-x11-server-Xwayland/old/0001-Valve.patch
Normal file
@ -0,0 +1,729 @@
|
||||
From 0151613de184f0ac8bc2c685f37492919602e15f Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:22:32 -0800
|
||||
Subject: [PATCH 1/4] Revert "xwayland: add support for wp-tearing-control-v1"
|
||||
|
||||
This reverts commit 1ce2025822244c85826ab36febfa5945186b4a2a.
|
||||
---
|
||||
hw/xwayland/meson.build | 3 ---
|
||||
hw/xwayland/xwayland-present.c | 21 +++------------------
|
||||
hw/xwayland/xwayland-present.h | 1 -
|
||||
hw/xwayland/xwayland-screen.c | 5 -----
|
||||
hw/xwayland/xwayland-screen.h | 1 -
|
||||
hw/xwayland/xwayland-window.c | 9 ---------
|
||||
hw/xwayland/xwayland-window.h | 1 -
|
||||
7 files changed, 3 insertions(+), 38 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index 54529b64e..fbdbb2458 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -48,7 +48,6 @@ xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
-tearing_xml = join_paths(protodir, 'staging', 'tearing-control', 'tearing-control-v1.xml')
|
||||
|
||||
client_header = generator(scanner,
|
||||
output : '@BASENAME@-client-protocol.h',
|
||||
@@ -77,7 +76,6 @@ srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
-srcs += client_header.process(tearing_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
srcs += code.process(pointer_xml)
|
||||
srcs += code.process(gestures_xml)
|
||||
@@ -90,7 +88,6 @@ srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
-srcs += code.process(tearing_xml)
|
||||
|
||||
if build_ei
|
||||
xwayland_dep += libei_dep
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 941be06da..bb3310dc9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,9 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
-#define XWL_PRESENT_CAPS PresentCapabilityAsync | PresentCapabilityAsyncMayTear
|
||||
+#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
|
||||
/*
|
||||
@@ -797,16 +796,6 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
- if (xwl_window->tearing_control) {
|
||||
- uint32_t hint;
|
||||
- if (event->async_may_tear)
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC;
|
||||
- else
|
||||
- hint = WP_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC;
|
||||
-
|
||||
- wp_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control, hint);
|
||||
- }
|
||||
-
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
@@ -1010,15 +999,11 @@ xwl_present_pixmap(WindowPtr window,
|
||||
}
|
||||
|
||||
vblank->event_id = ++xwl_present_event_id;
|
||||
- event->async_may_tear = options & PresentOptionAsyncMayTear;
|
||||
|
||||
- /* Synchronous Xwayland presentations always complete (at least) one frame after they
|
||||
+ /* Xwayland presentations always complete (at least) one frame after they
|
||||
* are executed
|
||||
*/
|
||||
- if (event->async_may_tear)
|
||||
- vblank->exec_msc = vblank->target_msc;
|
||||
- else
|
||||
- vblank->exec_msc = vblank->target_msc - 1;
|
||||
+ vblank->exec_msc = vblank->target_msc - 1;
|
||||
|
||||
vblank->queued = TRUE;
|
||||
if (crtc_msc < vblank->exec_msc) {
|
||||
diff --git a/hw/xwayland/xwayland-present.h b/hw/xwayland/xwayland-present.h
|
||||
index 4fd1e579f..806272089 100644
|
||||
--- a/hw/xwayland/xwayland-present.h
|
||||
+++ b/hw/xwayland/xwayland-present.h
|
||||
@@ -59,7 +59,6 @@ struct xwl_present_event {
|
||||
present_vblank_rec vblank;
|
||||
|
||||
PixmapPtr pixmap;
|
||||
- Bool async_may_tear;
|
||||
};
|
||||
|
||||
Bool xwl_present_entered_for_each_frame_callback(void);
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index cc14e0771..2bc553b50 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -63,7 +63,6 @@
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
static DevPrivateKeyRec xwl_client_private_key;
|
||||
@@ -462,10 +461,6 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "wp_tearing_control_manager_v1") == 0) {
|
||||
- xwl_screen->tearing_control_manager =
|
||||
- wl_registry_bind(registry, id, &wp_tearing_control_manager_v1_interface, 1);
|
||||
- }
|
||||
#ifdef XWL_HAS_GLAMOR
|
||||
else if (xwl_screen->glamor) {
|
||||
xwl_glamor_init_wl_registry(xwl_screen, registry, id, interface,
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bd66dd681..656d2afde 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -110,7 +110,6 @@ struct xwl_screen {
|
||||
struct zxdg_output_manager_v1 *xdg_output_manager;
|
||||
struct wp_viewporter *viewporter;
|
||||
struct xwayland_shell_v1 *xwayland_shell;
|
||||
- struct wp_tearing_control_manager_v1 *tearing_control_manager;
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index a4f02a058..54ba9d896 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -46,7 +46,6 @@
|
||||
#include "xwayland-shm.h"
|
||||
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
-#include "tearing-control-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
@@ -941,11 +940,6 @@ ensure_surface_for_window(WindowPtr window)
|
||||
xwl_window_check_resolution_change_emulation(xwl_window);
|
||||
}
|
||||
|
||||
- if (xwl_screen->tearing_control_manager) {
|
||||
- xwl_window->tearing_control = wp_tearing_control_manager_v1_get_tearing_control(
|
||||
- xwl_screen->tearing_control_manager, xwl_window->surface);
|
||||
- }
|
||||
-
|
||||
return TRUE;
|
||||
|
||||
err:
|
||||
@@ -1156,9 +1150,6 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_present_for_each_frame_callback(xwl_window, xwl_present_unrealize_window);
|
||||
#endif
|
||||
|
||||
- if (xwl_window->tearing_control)
|
||||
- wp_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
-
|
||||
release_wl_surface_for_window(xwl_window);
|
||||
xorg_list_del(&xwl_window->link_damage);
|
||||
xorg_list_del(&xwl_window->link_window);
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 45ae16da0..92c700e41 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -121,7 +121,6 @@ struct xwl_window {
|
||||
struct xwl_dmabuf_feedback feedback;
|
||||
/* If TRUE, the window buffer format supports scanout with implicit modifier */
|
||||
Bool has_implicit_scanout_support;
|
||||
- struct wp_tearing_control_v1 *tearing_control;
|
||||
};
|
||||
|
||||
struct xwl_window *xwl_window_get(WindowPtr window);
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From 7e43bb1113e7732d587d783a8db7ae86aefdb04d Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 24 Aug 2022 23:16:24 +0000
|
||||
Subject: [PATCH 2/4] xwayland: Implement tearing protocol
|
||||
|
||||
---
|
||||
hw/xwayland/meson.build | 3 +
|
||||
.../tearing-control-unstable-v1.xml | 142 ++++++++++++++++++
|
||||
hw/xwayland/xwayland-present.c | 11 ++
|
||||
hw/xwayland/xwayland-screen.c | 4 +
|
||||
hw/xwayland/xwayland-screen.h | 1 +
|
||||
hw/xwayland/xwayland-window.c | 11 ++
|
||||
hw/xwayland/xwayland-window.h | 1 +
|
||||
7 files changed, 173 insertions(+)
|
||||
create mode 100644 hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index fbdbb2458..d29e55d7d 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,6 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
@@ -74,6 +75,7 @@ srcs += client_header.process(dmabuf_xml)
|
||||
srcs += client_header.process(viewporter_xml)
|
||||
srcs += client_header.process(xdg_shell_xml)
|
||||
srcs += client_header.process(drm_lease_xml)
|
||||
+srcs += client_header.process(tearing_xml)
|
||||
srcs += client_header.process(shortcuts_inhibit_xml)
|
||||
srcs += client_header.process(xwayland_shell_xml)
|
||||
srcs += code.process(relative_xml)
|
||||
@@ -86,6 +88,7 @@ srcs += code.process(dmabuf_xml)
|
||||
srcs += code.process(viewporter_xml)
|
||||
srcs += code.process(xdg_shell_xml)
|
||||
srcs += code.process(drm_lease_xml)
|
||||
+srcs += code.process(tearing_xml)
|
||||
srcs += code.process(shortcuts_inhibit_xml)
|
||||
srcs += code.process(xwayland_shell_xml)
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
new file mode 100644
|
||||
index 000000000..ce130718e
|
||||
--- /dev/null
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
@@ -0,0 +1,142 @@
|
||||
+<?xml version="1.0" encoding="UTF-8"?>
|
||||
+<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+
|
||||
+ <copyright>
|
||||
+ Copyright © 2021 Xaver Hugl
|
||||
+
|
||||
+ Permission is hereby granted, free of charge, to any person obtaining a
|
||||
+ copy of this software and associated documentation files (the "Software"),
|
||||
+ to deal in the Software without restriction, including without limitation
|
||||
+ the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
+ and/or sell copies of the Software, and to permit persons to whom the
|
||||
+ Software is furnished to do so, subject to the following conditions:
|
||||
+
|
||||
+ The above copyright notice and this permission notice (including the next
|
||||
+ paragraph) shall be included in all copies or substantial portions of the
|
||||
+ Software.
|
||||
+
|
||||
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
+ DEALINGS IN THE SOFTWARE.
|
||||
+ </copyright>
|
||||
+
|
||||
+ <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <description summary="protocol for tearing control">
|
||||
+ This global is a factory interface, allowing clients to request
|
||||
+ the compositor to use asynchronous page flips on a per-surface basis.
|
||||
+
|
||||
+ Graphics APIs, like EGL or Vulkan, that manage the buffer queue and
|
||||
+ commits of a wl_surface themselves, are likely to be using this
|
||||
+ extension internally. If a client is using such an API for a
|
||||
+ wl_surface, it should not directly use this extension on that surface,
|
||||
+ to avoid raising a tearing_control_exists protocol error.
|
||||
+
|
||||
+ Warning! The protocol described in this file is experimental and
|
||||
+ backward incompatible changes may be made. Backward compatible changes
|
||||
+ may be added together with the corresponding interface version bump.
|
||||
+ Backward incompatible changes are done by bumping the version number in
|
||||
+ the protocol and interface names and resetting the interface version.
|
||||
+ Once the protocol is to be declared stable, the 'z' prefix and the
|
||||
+ version number in the protocol and interface names are removed and the
|
||||
+ interface version number is reset.
|
||||
+ </description>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy tearing control factory object">
|
||||
+ Destroy this tearing control factory object. Other objects, including
|
||||
+ zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ shall not be affected by this request.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+
|
||||
+ <enum name="error">
|
||||
+ <entry name="tearing_control_exists" value="0"
|
||||
+ summary="the surface already has a tearing object associated"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="get_tearing_control">
|
||||
+ <description summary="extend surface interface for tearing control">
|
||||
+ Instantiate an interface extension for the given wl_surface to
|
||||
+ request asynchronous page flips for presentation.
|
||||
+
|
||||
+ If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ object associated, the tearing_control_exists protocol error is raised.
|
||||
+ </description>
|
||||
+
|
||||
+ <arg name="id" type="new_id"
|
||||
+ interface="zwp_surface_tearing_control_v1"
|
||||
+ summary="the new surface tearing interface id"/>
|
||||
+ <arg name="surface" type="object" interface="wl_surface"
|
||||
+ summary="the surface"/>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+ <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <description summary="per-surface tearing control request">
|
||||
+ An additional interface to a wl_surface object, which allows the client
|
||||
+ to hint to the compositor if and when it should use asynchronous page
|
||||
+ flips for presentation.
|
||||
+ </description>
|
||||
+
|
||||
+ <enum name="presentation_hint">
|
||||
+ <description summary="presentation hint values">
|
||||
+ This enum provides information for if and when submitted frames from
|
||||
+ the client may be presented with tearing. The possible values are:
|
||||
+
|
||||
+ VSYNC:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen.
|
||||
+
|
||||
+ VSYNC_RELAXED:
|
||||
+ Presentation should be synchronized to the vertical retrace by the
|
||||
+ display hardware so that tearing doesn't happen as long as the client
|
||||
+ submits new frame fast enough. If a frame is late for presentation,
|
||||
+ that is, if more than one vertical retrace has occurred since the last
|
||||
+ commit then the compositor should use asynchronous page flips to
|
||||
+ immediately present the frame. This may cause visible tearing.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after such a late commit to make sure clients have as much
|
||||
+ time as possible to render their next frame.
|
||||
+
|
||||
+ ASYNC:
|
||||
+ Presentation should not be synchronized to the vertical retrace,
|
||||
+ committed frames are meant to be immediately presented with asynchronous
|
||||
+ page flips with as little delay as possible. Tearing will be visible.
|
||||
+ The compositor is encouraged to send requested frame callbacks as soon
|
||||
+ as possible after every commit.
|
||||
+ </description>
|
||||
+ <entry name="vsync" value="0"
|
||||
+ summary="tearing-free presentation"/>
|
||||
+ <entry name="vsync_relaxed" value="1"
|
||||
+ summary="async pageflips on missed presentation deadline"/>
|
||||
+ <entry name="async" value="2"
|
||||
+ summary="async pageflips for all frames"/>
|
||||
+ </enum>
|
||||
+
|
||||
+ <request name="set_presentation_hint">
|
||||
+ <description summary="set presentation hint">
|
||||
+ Set the presentation hint for the associated wl_surface. See
|
||||
+ presentation_hint for the description. This state is double-buffered
|
||||
+ and is applied on the next wl_surface.commit.
|
||||
+
|
||||
+ The compositor is free to dynamically respect or ignore this hint based
|
||||
+ on various conditions, including GPU capabilities and surface window
|
||||
+ state.
|
||||
+ </description>
|
||||
+ <arg name="hint" type="uint" enum="presentation_hint"/>
|
||||
+ </request>
|
||||
+
|
||||
+ <request name="destroy" type="destructor">
|
||||
+ <description summary="destroy synchronization object">
|
||||
+ Destroy this surface tearing object and remove the presentation hint.
|
||||
+ The change will be applied on the next wl_surface.commit.
|
||||
+ </description>
|
||||
+ </request>
|
||||
+ </interface>
|
||||
+
|
||||
+</protocol>
|
||||
+
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index bb3310dc9..6f1d57a42 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,6 +34,8 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
|
||||
@@ -796,6 +798,15 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
damage_box->x2 - damage_box->x1,
|
||||
damage_box->y2 - damage_box->y1);
|
||||
|
||||
+
|
||||
+ // Josh: No support for VSync relaxed, this is something that should
|
||||
+ // be determined by a user setting in gamescope.
|
||||
+ if (xwl_window->tearing_control)
|
||||
+ zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ sync_flip
|
||||
+ ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
if (!vblank->sync_flip) {
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index 2bc553b50..e35861e46 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,6 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -457,6 +458,9 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
+ else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ }
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
wl_registry_bind(registry, id, &xwayland_shell_v1_interface, 1);
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index 656d2afde..bf75278fd 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,6 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
+ struct zwp_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 54ba9d896..527f41c90 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,6 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
+#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -894,6 +895,11 @@ ensure_surface_for_window(WindowPtr window)
|
||||
goto err;
|
||||
}
|
||||
|
||||
+ if (xwl_screen->tearing_control) {
|
||||
+ xwl_window->tearing_control =
|
||||
+ zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ }
|
||||
+
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
xwl_window->xwayland_surface = xwayland_shell_v1_get_xwayland_surface(
|
||||
xwl_screen->xwayland_shell, xwl_window->surface);
|
||||
@@ -1143,6 +1149,11 @@ xwl_unrealize_window(WindowPtr window)
|
||||
if (xwl_window_has_viewport_enabled(xwl_window))
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
+ if (xwl_window->tearing_control) {
|
||||
+ zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ xwl_window->tearing_control = NULL;
|
||||
+ }
|
||||
+
|
||||
xwl_dmabuf_feedback_destroy(&xwl_window->feedback);
|
||||
|
||||
#ifdef GLAMOR_HAS_GBM
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index 92c700e41..efbb1f2fc 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,6 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
+ struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From ac5a78ddabf16b6876bf286e93d770f50d8e9315 Mon Sep 17 00:00:00 2001
|
||||
From: Joshua Ashton <joshua@froggi.es>
|
||||
Date: Wed, 31 Aug 2022 12:57:09 +0000
|
||||
Subject: [PATCH 3/4] Use gamescope tearing protocol instead
|
||||
|
||||
Renamed to not clash
|
||||
---
|
||||
hw/xwayland/meson.build | 2 +-
|
||||
...xml => gamescope-tearing-control-unstable-v1.xml} | 12 ++++++------
|
||||
hw/xwayland/xwayland-present.c | 8 ++++----
|
||||
hw/xwayland/xwayland-screen.c | 6 +++---
|
||||
hw/xwayland/xwayland-screen.h | 2 +-
|
||||
hw/xwayland/xwayland-window.c | 6 +++---
|
||||
hw/xwayland/xwayland-window.h | 2 +-
|
||||
7 files changed, 19 insertions(+), 19 deletions(-)
|
||||
rename hw/xwayland/protocols/unstable/tearing-control/{tearing-control-unstable-v1.xml => gamescope-tearing-control-unstable-v1.xml} (93%)
|
||||
|
||||
diff --git a/hw/xwayland/meson.build b/hw/xwayland/meson.build
|
||||
index d29e55d7d..73f2bdd94 100644
|
||||
--- a/hw/xwayland/meson.build
|
||||
+++ b/hw/xwayland/meson.build
|
||||
@@ -46,7 +46,7 @@ dmabuf_xml = join_paths(protodir, 'unstable', 'linux-dmabuf', 'linux-dmabuf-unst
|
||||
viewporter_xml = join_paths(protodir, 'stable', 'viewporter', 'viewporter.xml')
|
||||
xdg_shell_xml = join_paths(protodir, 'stable', 'xdg-shell', 'xdg-shell.xml')
|
||||
drm_lease_xml = join_paths(protodir, 'staging', 'drm-lease', 'drm-lease-v1.xml')
|
||||
-tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'tearing-control-unstable-v1.xml')
|
||||
+tearing_xml = join_paths('protocols', 'unstable', 'tearing-control', 'gamescope-tearing-control-unstable-v1.xml')
|
||||
shortcuts_inhibit_xml = join_paths(protodir, 'unstable', 'keyboard-shortcuts-inhibit', 'keyboard-shortcuts-inhibit-unstable-v1.xml')
|
||||
xwayland_shell_xml = join_paths(protodir, 'staging', 'xwayland-shell', 'xwayland-shell-v1.xml')
|
||||
|
||||
diff --git a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
similarity index 93%
|
||||
rename from hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
rename to hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
index ce130718e..3c7cfb09e 100644
|
||||
--- a/hw/xwayland/protocols/unstable/tearing-control/tearing-control-unstable-v1.xml
|
||||
+++ b/hw/xwayland/protocols/unstable/tearing-control/gamescope-tearing-control-unstable-v1.xml
|
||||
@@ -1,5 +1,5 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
-<protocol name="zwp_tearing_control_unstable_v1">
|
||||
+<protocol name="gamescope_tearing_control_unstable_v1">
|
||||
|
||||
<copyright>
|
||||
Copyright © 2021 Xaver Hugl
|
||||
@@ -24,7 +24,7 @@
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
</copyright>
|
||||
|
||||
- <interface name="zwp_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_tearing_control_v1" version="1">
|
||||
<description summary="protocol for tearing control">
|
||||
This global is a factory interface, allowing clients to request
|
||||
the compositor to use asynchronous page flips on a per-surface basis.
|
||||
@@ -48,7 +48,7 @@
|
||||
<request name="destroy" type="destructor">
|
||||
<description summary="destroy tearing control factory object">
|
||||
Destroy this tearing control factory object. Other objects, including
|
||||
- zwp_surface_tearing_control_v1 objects created by this factory,
|
||||
+ gamescope_surface_tearing_control_v1 objects created by this factory,
|
||||
shall not be affected by this request.
|
||||
</description>
|
||||
</request>
|
||||
@@ -63,19 +63,19 @@
|
||||
Instantiate an interface extension for the given wl_surface to
|
||||
request asynchronous page flips for presentation.
|
||||
|
||||
- If the given wl_surface already has a zwp_surface_tearing_control_v1
|
||||
+ If the given wl_surface already has a gamescope_surface_tearing_control_v1
|
||||
object associated, the tearing_control_exists protocol error is raised.
|
||||
</description>
|
||||
|
||||
<arg name="id" type="new_id"
|
||||
- interface="zwp_surface_tearing_control_v1"
|
||||
+ interface="gamescope_surface_tearing_control_v1"
|
||||
summary="the new surface tearing interface id"/>
|
||||
<arg name="surface" type="object" interface="wl_surface"
|
||||
summary="the surface"/>
|
||||
</request>
|
||||
</interface>
|
||||
|
||||
- <interface name="zwp_surface_tearing_control_v1" version="1">
|
||||
+ <interface name="gamescope_surface_tearing_control_v1" version="1">
|
||||
<description summary="per-surface tearing control request">
|
||||
An additional interface to a wl_surface object, which allows the client
|
||||
to hint to the compositor if and when it should use asynchronous page
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 6f1d57a42..5cbd767c9 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -34,7 +34,7 @@
|
||||
#include "xwayland-pixmap.h"
|
||||
#include "glamor.h"
|
||||
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
|
||||
|
||||
#define XWL_PRESENT_CAPS PresentCapabilityAsync
|
||||
@@ -802,10 +802,10 @@ xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
// Josh: No support for VSync relaxed, this is something that should
|
||||
// be determined by a user setting in gamescope.
|
||||
if (xwl_window->tearing_control)
|
||||
- zwp_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
+ gamescope_surface_tearing_control_v1_set_presentation_hint(xwl_window->tearing_control,
|
||||
sync_flip
|
||||
- ? ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
- : ZWP_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
+ ? GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_VSYNC
|
||||
+ : GAMESCOPE_SURFACE_TEARING_CONTROL_V1_PRESENTATION_HINT_ASYNC);
|
||||
|
||||
wl_surface_commit(xwl_window->surface);
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-screen.c b/hw/xwayland/xwayland-screen.c
|
||||
index e35861e46..2a025db18 100644
|
||||
--- a/hw/xwayland/xwayland-screen.c
|
||||
+++ b/hw/xwayland/xwayland-screen.c
|
||||
@@ -62,7 +62,7 @@
|
||||
#include "xdg-output-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
static DevPrivateKeyRec xwl_screen_private_key;
|
||||
@@ -458,8 +458,8 @@ registry_global(void *data, struct wl_registry *registry, uint32_t id,
|
||||
else if (strcmp(interface, "wp_viewporter") == 0) {
|
||||
xwl_screen->viewporter = wl_registry_bind(registry, id, &wp_viewporter_interface, 1);
|
||||
}
|
||||
- else if (strcmp(interface, "zwp_tearing_control_v1") == 0) {
|
||||
- xwl_screen->tearing_control = wl_registry_bind(registry, id, &zwp_tearing_control_v1_interface, 1);
|
||||
+ else if (strcmp(interface, "gamescope_tearing_control_v1") == 0) {
|
||||
+ xwl_screen->tearing_control = wl_registry_bind(registry, id, &gamescope_tearing_control_v1_interface, 1);
|
||||
}
|
||||
else if (strcmp(interface, "xwayland_shell_v1") == 0 && xwl_screen->rootless) {
|
||||
xwl_screen->xwayland_shell =
|
||||
diff --git a/hw/xwayland/xwayland-screen.h b/hw/xwayland/xwayland-screen.h
|
||||
index bf75278fd..d6b1a1d84 100644
|
||||
--- a/hw/xwayland/xwayland-screen.h
|
||||
+++ b/hw/xwayland/xwayland-screen.h
|
||||
@@ -113,7 +113,7 @@ struct xwl_screen {
|
||||
struct xorg_list drm_lease_devices;
|
||||
struct xorg_list queued_drm_lease_devices;
|
||||
struct xorg_list drm_leases;
|
||||
- struct zwp_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_tearing_control_v1 *tearing_control;
|
||||
struct xwl_output *fixed_output;
|
||||
struct xorg_list pending_wl_surface_destroy;
|
||||
uint64_t surface_association_serial;
|
||||
diff --git a/hw/xwayland/xwayland-window.c b/hw/xwayland/xwayland-window.c
|
||||
index 527f41c90..3e42eb1c0 100644
|
||||
--- a/hw/xwayland/xwayland-window.c
|
||||
+++ b/hw/xwayland/xwayland-window.c
|
||||
@@ -48,7 +48,7 @@
|
||||
#include "linux-dmabuf-unstable-v1-client-protocol.h"
|
||||
#include "viewporter-client-protocol.h"
|
||||
#include "xdg-shell-client-protocol.h"
|
||||
-#include "tearing-control-unstable-v1-client-protocol.h"
|
||||
+#include "gamescope-tearing-control-unstable-v1-client-protocol.h"
|
||||
#include "xwayland-shell-v1-client-protocol.h"
|
||||
|
||||
#define DELAYED_WL_SURFACE_DESTROY 1000 /* ms */
|
||||
@@ -897,7 +897,7 @@ ensure_surface_for_window(WindowPtr window)
|
||||
|
||||
if (xwl_screen->tearing_control) {
|
||||
xwl_window->tearing_control =
|
||||
- zwp_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
+ gamescope_tearing_control_v1_get_tearing_control(xwl_screen->tearing_control, xwl_window->surface);
|
||||
}
|
||||
|
||||
if (xwl_screen->xwayland_shell) {
|
||||
@@ -1150,7 +1150,7 @@ xwl_unrealize_window(WindowPtr window)
|
||||
xwl_window_disable_viewport(xwl_window);
|
||||
|
||||
if (xwl_window->tearing_control) {
|
||||
- zwp_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
+ gamescope_surface_tearing_control_v1_destroy(xwl_window->tearing_control);
|
||||
xwl_window->tearing_control = NULL;
|
||||
}
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-window.h b/hw/xwayland/xwayland-window.h
|
||||
index efbb1f2fc..f62a7f1bd 100644
|
||||
--- a/hw/xwayland/xwayland-window.h
|
||||
+++ b/hw/xwayland/xwayland-window.h
|
||||
@@ -99,7 +99,7 @@ struct xwl_window {
|
||||
struct wp_viewport *viewport;
|
||||
float scale_x, scale_y;
|
||||
struct xdg_surface *xdg_surface;
|
||||
- struct zwp_surface_tearing_control_v1 *tearing_control;
|
||||
+ struct gamescope_surface_tearing_control_v1 *tearing_control;
|
||||
struct xdg_toplevel *xdg_toplevel;
|
||||
WindowPtr window;
|
||||
struct xorg_list link_damage;
|
||||
--
|
||||
2.42.0
|
||||
|
||||
|
||||
From c1451e6720b20505b7ce4fef3294a493fe4fe312 Mon Sep 17 00:00:00 2001
|
||||
From: Kyle Gospodnetich <me@kylegospodneti.ch>
|
||||
Date: Wed, 31 Jan 2024 17:36:04 -0800
|
||||
Subject: [PATCH 4/4] Fix missing sync_flip param
|
||||
|
||||
---
|
||||
hw/xwayland/xwayland-present.c | 4 ++--
|
||||
1 file changed, 2 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/hw/xwayland/xwayland-present.c b/hw/xwayland/xwayland-present.c
|
||||
index 5cbd767c9..f22e8f987 100644
|
||||
--- a/hw/xwayland/xwayland-present.c
|
||||
+++ b/hw/xwayland/xwayland-present.c
|
||||
@@ -754,7 +754,7 @@ xwl_present_clear_window_flip(WindowPtr window)
|
||||
}
|
||||
|
||||
static Bool
|
||||
-xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage)
|
||||
+xwl_present_flip(present_vblank_ptr vblank, RegionPtr damage, Bool sync_flip)
|
||||
{
|
||||
WindowPtr present_window = vblank->window;
|
||||
PixmapPtr pixmap = vblank->pixmap;
|
||||
@@ -873,7 +873,7 @@ xwl_present_execute(present_vblank_ptr vblank, uint64_t ust, uint64_t crtc_msc)
|
||||
} else
|
||||
damage = RegionDuplicate(&window->clipList);
|
||||
|
||||
- if (xwl_present_flip(vblank, damage)) {
|
||||
+ if (xwl_present_flip(vblank, damage, vblank->sync_flip)) {
|
||||
WindowPtr toplvl_window = xwl_present_toplvl_pixmap_window(vblank->window);
|
||||
PixmapPtr old_pixmap = screen->GetWindowPixmap(window);
|
||||
|
||||
--
|
||||
2.42.0
|
||||
|
@ -0,0 +1,279 @@
|
||||
%global commit 9a55c402aa803fb10e39ab4fd18a709d0cd06fd4
|
||||
%global shortcommit %(c=%{commit}; echo ${c:0:7})
|
||||
|
||||
#global gitdate 20230426
|
||||
%global pkgname %{?gitdate:xserver}%{!?gitdate:xwayland}
|
||||
|
||||
%global default_font_path "catalogue:/etc/X11/fontpath.d,built-ins"
|
||||
|
||||
Summary: Xwayland
|
||||
Name: xorg-x11-server-Xwayland
|
||||
%global xwayland_version 23.2.2
|
||||
Version: %{xwayland_version}.bazzite.{{{ git_dir_version }}}
|
||||
Release: 1%{?gitdate:.%{gitdate}git%{shortcommit}}%{?dist}
|
||||
|
||||
URL: http://www.x.org
|
||||
%if 0%{?gitdate}
|
||||
Source0: https://gitlab.freedesktop.org/xorg/%{pkgname}/-/archive/%{commit}/%{pkgname}-%{shortcommit}.tar.gz
|
||||
%else
|
||||
Source0: https://www.x.org/pub/individual/xserver/%{pkgname}-%{xwayland_version}.tar.xz
|
||||
%endif
|
||||
|
||||
Patch1: 0001-Valve.patch
|
||||
|
||||
License: MIT
|
||||
|
||||
Requires: xorg-x11-server-common
|
||||
Requires: libEGL
|
||||
Requires: libepoxy >= 1.5.5
|
||||
|
||||
BuildRequires: gcc
|
||||
BuildRequires: git-core
|
||||
BuildRequires: meson
|
||||
|
||||
BuildRequires: wayland-devel
|
||||
BuildRequires: desktop-file-utils
|
||||
|
||||
BuildRequires: pkgconfig(wayland-client) >= 1.21.0
|
||||
BuildRequires: pkgconfig(wayland-protocols) >= 1.30
|
||||
BuildRequires: pkgconfig(wayland-eglstream-protocols)
|
||||
|
||||
BuildRequires: pkgconfig(epoxy) >= 1.5.5
|
||||
BuildRequires: pkgconfig(fontenc)
|
||||
BuildRequires: pkgconfig(libdrm) >= 2.4.89
|
||||
BuildRequires: pkgconfig(libssl)
|
||||
BuildRequires: pkgconfig(libtirpc)
|
||||
BuildRequires: pkgconfig(pixman-1)
|
||||
BuildRequires: pkgconfig(x11)
|
||||
BuildRequires: pkgconfig(xau)
|
||||
BuildRequires: pkgconfig(xdmcp)
|
||||
BuildRequires: pkgconfig(xext)
|
||||
BuildRequires: pkgconfig(xfixes)
|
||||
BuildRequires: pkgconfig(xfont2)
|
||||
BuildRequires: pkgconfig(xi)
|
||||
BuildRequires: pkgconfig(xinerama)
|
||||
BuildRequires: pkgconfig(xkbfile)
|
||||
BuildRequires: pkgconfig(xmu)
|
||||
BuildRequires: pkgconfig(xorg-macros) >= 1.17
|
||||
BuildRequires: pkgconfig(xpm)
|
||||
BuildRequires: pkgconfig(xrender)
|
||||
BuildRequires: pkgconfig(xres)
|
||||
BuildRequires: pkgconfig(xshmfence) >= 1.1
|
||||
BuildRequires: pkgconfig(xtrans) >= 1.3.2
|
||||
BuildRequires: pkgconfig(xtst)
|
||||
BuildRequires: pkgconfig(xv)
|
||||
BuildRequires: pkgconfig(libxcvt)
|
||||
BuildRequires: pkgconfig(libdecor-0) >= 0.1.1
|
||||
BuildRequires: pkgconfig(liboeffis-1.0) >= 1.0.0
|
||||
BuildRequires: pkgconfig(libei-1.0) >= 1.0.0
|
||||
BuildRequires: xorg-x11-proto-devel >= 2023.2-1
|
||||
|
||||
BuildRequires: mesa-libGL-devel >= 9.2
|
||||
BuildRequires: mesa-libEGL-devel
|
||||
BuildRequires: mesa-libgbm-devel
|
||||
|
||||
BuildRequires: audit-libs-devel
|
||||
BuildRequires: libselinux-devel >= 2.0.86-1
|
||||
|
||||
# libunwind is Exclusive for the following arches
|
||||
%ifarch aarch64 %{arm} hppa ia64 mips ppc ppc64 %{ix86} x86_64
|
||||
%if !0%{?rhel}
|
||||
BuildRequires: libunwind-devel
|
||||
%endif
|
||||
%endif
|
||||
|
||||
BuildRequires: pkgconfig(xcb-aux)
|
||||
BuildRequires: pkgconfig(xcb-image)
|
||||
BuildRequires: pkgconfig(xcb-icccm)
|
||||
BuildRequires: pkgconfig(xcb-keysyms)
|
||||
BuildRequires: pkgconfig(xcb-renderutil)
|
||||
|
||||
%description
|
||||
Xwayland is an X server for running X clients under Wayland.
|
||||
|
||||
%package devel
|
||||
Summary: Development package
|
||||
Requires: pkgconfig
|
||||
Requires: %{name}%{?_isa} = %{xwayland_version}-%{release}
|
||||
|
||||
%description devel
|
||||
The development package provides the developmental files which are
|
||||
necessary for developing Wayland compositors using Xwayland.
|
||||
|
||||
%prep
|
||||
%autosetup -S git_am -n %{pkgname}-%{?gitdate:%{commit}}%{!?gitdate:%{xwayland_version}}
|
||||
|
||||
%build
|
||||
%meson \
|
||||
%{?gitdate:-Dxwayland=true -D{xorg,xnest,xvfb,udev}=false} \
|
||||
-Dxwayland_eglstream=true \
|
||||
-Ddefault_font_path=%{default_font_path} \
|
||||
-Dbuilder_string="Build ID: %{name} %{xwayland_version}-%{release}" \
|
||||
-Dxkb_output_dir=%{_localstatedir}/lib/xkb \
|
||||
-Dxcsecurity=true \
|
||||
-Dglamor=true \
|
||||
-Ddri3=true
|
||||
|
||||
%meson_build
|
||||
|
||||
%install
|
||||
%meson_install
|
||||
|
||||
# Remove unwanted files/dirs
|
||||
rm $RPM_BUILD_ROOT%{_mandir}/man1/Xserver.1*
|
||||
rm -Rf $RPM_BUILD_ROOT%{_libdir}/xorg
|
||||
rm -Rf $RPM_BUILD_ROOT%{_includedir}/xorg
|
||||
rm -Rf $RPM_BUILD_ROOT%{_datadir}/aclocal
|
||||
rm -Rf $RPM_BUILD_ROOT%{_localstatedir}/lib/xkb
|
||||
|
||||
%check
|
||||
desktop-file-validate %{buildroot}%{_datadir}/applications/*.desktop
|
||||
|
||||
%files
|
||||
%{_bindir}/Xwayland
|
||||
%{_mandir}/man1/Xwayland.1*
|
||||
%{_datadir}/applications/org.freedesktop.Xwayland.desktop
|
||||
|
||||
%files devel
|
||||
%{_libdir}/pkgconfig/xwayland.pc
|
||||
|
||||
%changelog
|
||||
* Thu Oct 26 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.2-1
|
||||
- xwayland 23.2.2 - (#2246029)
|
||||
|
||||
* Wed Oct 25 2023 Peter Hutterer <peter.hutterer@redhat.com> - 23.2.1-2
|
||||
- Fix for CVE-2023-5367
|
||||
|
||||
* Wed Sep 20 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.1-1
|
||||
- xwayland 23.2.1 - (#2239813)
|
||||
|
||||
* Mon Sep 11 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.0-2
|
||||
- migrated to SPDX license
|
||||
|
||||
* Wed Aug 16 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.2.0-1
|
||||
- xwayland 23.2.0
|
||||
|
||||
* Wed Aug 2 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.902-1
|
||||
- xwayland 23.1.99.902 (xwayland 23.2.0 rc2)
|
||||
|
||||
* Mon Jul 31 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.901-2
|
||||
- Fix devel package requires.
|
||||
|
||||
* Wed Jul 19 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.99.901-1
|
||||
- xwayland 23.1.99.901 (xwayland 23.2.0 rc1)
|
||||
|
||||
* Tue Jun 6 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.2-1
|
||||
- xwayland 23.1.2
|
||||
|
||||
* Thu Apr 27 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.1-2
|
||||
- Fix spec file to build from git upstream - (#2190211)
|
||||
|
||||
* Wed Mar 29 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.1-1
|
||||
- xwayland 23.1.1 - (#2182734)
|
||||
CVE fix for: CVE-2023-1393
|
||||
|
||||
* Wed Mar 22 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.1.0-1
|
||||
- xwayland 23.1.0 - (#2180913)
|
||||
|
||||
* Thu Mar 9 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.0.99.902-1
|
||||
- xwayland 23.0.99.902 (xwayland 23.1.0 rc2) - (#2172415, #2173201)
|
||||
|
||||
* Wed Feb 22 2023 Olivier Fourdan <ofourdan@redhat.com> - 23.0.99.901-1
|
||||
- xwayland 23.0.99.901 (xwayland 23.1.0 rc1) - (#2172415)
|
||||
|
||||
* Tue Feb 7 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.8-1
|
||||
- xwayland 22.1.8
|
||||
Fixes CVE-2023-0494 (#2165995, #2167566, #2167734)
|
||||
|
||||
* Sun Jan 29 2023 Stefan Bluhm <stefan.bluhm@clacee.eu> - 22.1.7-4
|
||||
- Updated conditional Fedora statement.
|
||||
|
||||
* Thu Jan 19 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-3
|
||||
- Use the recommended way to apply conditional patches without
|
||||
conditionalizing the sources (for byte-swapped clients).
|
||||
|
||||
* Tue Jan 17 2023 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-2
|
||||
- Disallow byte-swapped clients on Fedora 38 and above (#2159489)
|
||||
|
||||
* Mon Dec 19 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.7-1
|
||||
- xwayland 22.1.7
|
||||
|
||||
* Wed Dec 14 2022 Peter Hutterer <peter.hutterer@redhat.com> - 22.1.6-1
|
||||
- xwayland 22.1.6
|
||||
Fixes CVE-2022-46340, CVE-2022-46341, CVE-2022-46342, CVE-2022-46343,
|
||||
CVE-2022-46344, CVE-2022-4283
|
||||
|
||||
* Wed Nov 2 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.5-1
|
||||
- xwayland 22.1.5 (#2139387)
|
||||
|
||||
* Thu Oct 20 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.4-1
|
||||
- xwayland 22.1.4 (#2136518)
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 22.1.3-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Tue Jul 12 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.3-1
|
||||
- xwayland 22.1.3 - (#2106387)
|
||||
Fix CVE-2022-2319/ZDI-CAN-16062, CVE-2022-2320/ZDI-CAN-16070
|
||||
|
||||
* Wed May 25 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.2-1
|
||||
- xwayland 22.1.2 - (#2090172)
|
||||
|
||||
* Thu Mar 31 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.1-1
|
||||
- xwayland 22.1.1 - (#2070435)
|
||||
|
||||
* Wed Feb 16 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.1.0
|
||||
- xwayland 22.1.0 - (#2055270)
|
||||
|
||||
* Wed Feb 2 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.0.99.902
|
||||
- xwayland 22.0.99.902 (xwayland 22.1.0 rc2) - (#2042521)
|
||||
|
||||
* Tue Jan 25 2022 Olivier Fourdan <ofourdan@redhat.com> - 22.0.99.901
|
||||
- xwayland 22.0.99.901 (xwayland 22.1.0 rc1) - (#2042521)
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 21.1.4-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Tue Dec 14 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.4
|
||||
- xwayland 21.1.4
|
||||
|
||||
* Mon Nov 8 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.3
|
||||
- xwayland 21.1.3 - (#2016468)
|
||||
|
||||
* Thu Oct 21 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.2.901-1
|
||||
- xwayland 21.1.2.901 (aka 21.1.3 RC1) - (#2015413)
|
||||
|
||||
* Tue Sep 14 2021 Sahana Prasad <sahana@redhat.com> - 21.1.2-3
|
||||
- Rebuilt with OpenSSL 3.0.0
|
||||
|
||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 21.1.2-2
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Fri Jul 9 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.2-1
|
||||
- xwayland 21.1.2
|
||||
|
||||
* Thu Jul 1 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1.901-1
|
||||
- xwayland 21.1.1.901
|
||||
|
||||
* Mon Jun 21 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-3
|
||||
- Fix a use-after-free in the previous changes for GLX
|
||||
|
||||
* Thu Jun 10 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-2
|
||||
- Backport fixes for GLX and EGLstream (#1948003)
|
||||
|
||||
* Wed Apr 14 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.1-1
|
||||
- xwayland 21.1.1 (CVE-2021-3472 / ZDI-CAN-1259)
|
||||
|
||||
* Thu Mar 18 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.1.0-1
|
||||
- xwayland 21.1.0
|
||||
|
||||
* Thu Mar 4 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.0.99.902-1
|
||||
- xwayland 21.0.99.902
|
||||
- Remove xdmcp, udev, udev_kms build options
|
||||
- Stop overriding the vendor name, same as xorg-x11-server
|
||||
|
||||
* Thu Feb 18 2021 Olivier Fourdan <ofourdan@redhat.com> - 21.0.99.901-1
|
||||
- xwayland 21.0.99.901
|
||||
|
||||
* Mon Feb 1 2021 Olivier Fourdan <ofourdan@redhat.com> - 1.20.99.1-0.1.20210201git5429791
|
||||
- Initial import (#1912335).
|
@ -19,7 +19,6 @@ Source0: https://gitlab.freedesktop.org/xorg/%{pkgname}/-/archive/%{commit}/%{
|
||||
Source0: https://www.x.org/pub/individual/xserver/%{pkgname}-%{xwayland_version}.tar.xz
|
||||
%endif
|
||||
|
||||
Patch0: 967.patch
|
||||
Patch1: 0001-Valve.patch
|
||||
|
||||
License: MIT
|
||||
|
@ -9,7 +9,7 @@ screens:
|
||||
title: "Welcome to Bazzite (Steam Deck & HTPC Edition)"
|
||||
icon: "/usr/share/ublue-os/bazzite/logo.svg"
|
||||
description: |
|
||||
Configure your system to get started. Completion of this process is required for Game mode to function.
|
||||
Configure your system to get started. This utility can be re-opened at any time, so don't feel like you have to get it perfect your first go-through.
|
||||
configure-bazzite:
|
||||
source: yafti.screen.package
|
||||
values:
|
||||
|
@ -6,13 +6,13 @@ After=local-fs.target
|
||||
[Service]
|
||||
Type=oneshot
|
||||
# Copy if it doesn't exist
|
||||
ExecStartPre=/usr/bin/bash -c "[ -x /usr/local/bin/.sunshine ] || /usr/bin/cp $(readlink /usr/bin/sunshine) /usr/local/bin/.sunshine"
|
||||
ExecStartPre=/usr/bin/bash -c "[ -x /usr/local/bin/.sunshine ] || /usr/bin/cp $(readlink -f /usr/bin/sunshine) /usr/local/bin/.sunshine"
|
||||
# This is faster than using .mount unit. Also allows for the previous line/cleanup
|
||||
ExecStartPre=/usr/bin/mount --bind /usr/local/bin/.sunshine /usr/bin/sunshine
|
||||
ExecStartPre=/usr/bin/bash -c "/usr/bin/mount --bind /usr/local/bin/.sunshine $(readlink -f /usr/bin/sunshine)"
|
||||
# Fix caps
|
||||
ExecStart=/usr/sbin/setcap cap_sys_admin+p /usr/bin/sunshine
|
||||
ExecStart=/usr/bin/bash -c "/usr/sbin/setcap cap_sys_admin+p $(readlink -f /usr/bin/sunshine)"
|
||||
# Clean-up after ourselves
|
||||
ExecStop=/usr/bin/umount /usr/bin/sunshine
|
||||
ExecStop=/usr/bin/bash -c "/usr/bin/umount $(readlink -f /usr/bin/sunshine)"
|
||||
ExecStop=/usr/bin/rm /usr/local/bin/.sunshine
|
||||
RemainAfterExit=yes
|
||||
|
||||
|
@ -179,16 +179,15 @@ if [[ $IMAGE_NAME =~ "deck" || $IMAGE_NAME =~ "ally" || $IMAGE_NAME =~ "framegam
|
||||
|
||||
systemctl enable --now jupiter-fan-control.service
|
||||
systemctl enable --now vpower.service
|
||||
systemctl enable --now ds-inhibit.service
|
||||
else
|
||||
echo "Generic device detected. Performing setup..."
|
||||
if /usr/libexec/hardware/hhd-supported-hardware; then
|
||||
echo "HHD supported handheld detected, disabling handycon & ds-inhibit..."
|
||||
echo "HHD supported handheld detected, disabling handycon"
|
||||
systemctl disable --now handycon.service
|
||||
systemctl disable --now ds-inhibit.service
|
||||
elif /usr/libexec/hardware/handycon-supported-hardware; then
|
||||
echo "HandyGCCS supported handheld detected, enabling handycon & ds-inhibit..."
|
||||
echo "HandyGCCS supported handheld detected, enabling handycon"
|
||||
systemctl enable --now handycon.service
|
||||
systemctl enable --now ds-inhbit.service
|
||||
fi
|
||||
systemctl disable --now jupiter-fan-control.service
|
||||
systemctl disable --now vpower.service
|
||||
|
@ -9,7 +9,7 @@ screens:
|
||||
title: "Welcome to Bazzite"
|
||||
icon: "/usr/share/ublue-os/bazzite/logo.svg"
|
||||
description: |
|
||||
Configure your system to get started
|
||||
Configure your system to get started. This utility can be re-opened at any time, so don't feel like you have to get it perfect your first go-through.
|
||||
configure-bazzite:
|
||||
source: yafti.screen.package
|
||||
values:
|
||||
|
@ -1,6 +1,7 @@
|
||||
It is **always** better to install packages with Distrobox rather than layer them with rpm-ostree. `ujust distrobox` makes it easy! - [More about supported packages](https://universal-blue.discourse.group/docs?topic=35)
|
||||
Packages installed in Distrobox can be exported to appear like any other application - [View documentation](https://github.com/89luca89/distrobox/blob/main/docs/usage/distrobox-export.md).
|
||||
*Update break something?* You can roll back and pin the previous release or rebase by build date - [View our guide](https://universal-blue.discourse.group/docs?topic=36).
|
||||
*This isn't a distro*, this is a custom image built on Fedora technology - [View our mission](https://universal-blue.org/mission/)
|
||||
*This isn't a distro*, this is a custom image built on Fedora Atomic Desktop technology - [View our mission](https://universal-blue.org/mission/)
|
||||
*Looking to dual-boot with Windows?* [Check out our dual booting guide](https://universal-blue.discourse.group/docs?topic=129).
|
||||
**Support the app store!** [Donate to Flatpak](https://opencollective.com/flatpak)
|
||||
**H.264 hardware acceleration is supported out of the box.** No tweaks necessary!
|
||||
|
@ -8,5 +8,5 @@ Discover Overlay is preinstalled, allowing Discord to overlay your games during
|
||||
Bazzite uses ZSTD compression in BTRFS by default, and deduplicates files across your entire drive. **More space for your games!**
|
||||
*Have a large library of ROMs to manage?* ROM Properties Page shell extension is installed by default and makes it much easier, with thumbnails and additional info for all of your files.
|
||||
*Need more control over your Flatpaks?* Check out the Warehouse and Flatseal applications to manage them.
|
||||
*Want more tips and tricks?* - [View the Miscellaneous Documentation](https://universal-blue.discourse.group/docs?topic=287)
|
||||
*Want more tips and tricks?* - [View Documentation](https://universal-blue.discourse.group/docs?topic=287)
|
||||
*Desktop users: Want a to easily customize MangoHud and vkBasalt?* Use the GOverlay application as a graphical user interface to adjust settings.
|
||||
|
Loading…
x
Reference in New Issue
Block a user