From da2d05ab3747f80f8379a64300ec356cf496d940 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 15 Apr 2023 09:56:41 -0500 Subject: [PATCH] mesa: Updates for 23.1.0 * Update patch to more correctly solve GLView.h depend * Upstreamed via mesa PR 22512 * Cleanup mesa packages --- sys-libs/mesa/mesa-23.1.0_rc1.recipe | 34 +++- sys-libs/mesa/patches/mesa-23.1.0.patchset | 211 +++++++++++++++++---- 2 files changed, 196 insertions(+), 49 deletions(-) diff --git a/sys-libs/mesa/mesa-23.1.0_rc1.recipe b/sys-libs/mesa/mesa-23.1.0_rc1.recipe index 19c329686..3f08ee386 100644 --- a/sys-libs/mesa/mesa-23.1.0_rc1.recipe +++ b/sys-libs/mesa/mesa-23.1.0_rc1.recipe @@ -6,7 +6,7 @@ providing 3D rendering to Haiku applications." HOMEPAGE="https://www.mesa3d.org/" COPYRIGHT="1999-2022 Brian Paul" LICENSE="MIT" -REVISION="1" +REVISION="3" SOURCE_URI="https://mesa.freedesktop.org/archive/mesa-23.1.0-rc1.tar.xz" # -rc1 vs _rc1 #SOURCE_URI="https://mesa.freedesktop.org/archive/mesa-${portVersion}.tar.xz" CHECKSUM_SHA256="a119a04e14a6dbae9df170de9c7d0047e11df1dc020cc6db00666654a71fe41a" @@ -15,6 +15,8 @@ SOURCE_DIR="mesa-23.1.0-rc1" # -rc1 vs _rc1 #PATCHES="mesa-$portVersion.patchset" PATCHES="mesa-23.1.0.patchset" # -rc1 vs _rc1 +ADDITIONAL_FILES="50_mesa.json" + ARCHITECTURES="?all !x86_gcc2" SECONDARY_ARCHITECTURES="?x86" @@ -51,7 +53,7 @@ DESCRIPTION_eglvnd="This glvnd rendering driver package provides \ software pipe rendering (with LLVM-bosted performance)." PROVIDES_eglvnd=" - mesa${secondaryArchSuffix}_swpipe = $portVersion + mesa${secondaryArchSuffix}_eglvnd = $portVersion " REQUIRES_eglvnd=" mesa$secondaryArchSuffix == $portVersion base @@ -132,11 +134,17 @@ INSTALL() # Mesa's EGL render driver mkdir -p $addOnsDir/opengl/egl_vendor.d - mv $(find $libDir -name 'libEGL_mesa.so.0') \ - "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" - ln -sr "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0.0.0" + mv $libDir/libEGL_mesa.so* "$addOnsDir/opengl/egl_vendor.d/" + + # Vulkan lavapipe driver mv $libDir/libvulkan_lvp.so \ "$addOnsDir/vulkan/icd.d" + + # remove stock glvnd json + rm -rf $dataDir/glvnd + # remove dri stuff + rm -rf $dataDir/drirc.d + rm -rf $libDir/haiku # Configure Mesa EGL Vendor Renderer @@ -144,7 +152,7 @@ INSTALL() # Set some nice version info appVersion=${portVersion//\./ } - setversion "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" -app $appVersion -long \ + setversion "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0.0.0" -app $appVersion -long \ "Mesa EGL rendering drivers" setversion "$addOnsDir/vulkan/icd.d/libvulkan_lvp.so" -app $appVersion -long \ "Vulkan software rasteriser driver" @@ -160,16 +168,22 @@ INSTALL() $developDir # swpipe renderer package - packageEntries swpipe \ - "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" \ + packageEntries eglvnd \ "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0.0.0" \ + "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so.0" \ + "$addOnsDir/opengl/egl_vendor.d/libEGL_mesa.so" \ "$addOnsDir/opengl/egl_vendor.d/50_mesa.json" # lavapipe renderer package packageEntries lavapipe \ - "$addOnsDir/vulkan/icd.d/libvulkan_lvp.so" + "$addOnsDir/vulkan/icd.d/libvulkan_lvp.so" \ + "$addOnsDir/vulkan/icd.d/lvp_icd.x86_64.json" - rmdir "$addOnsDir"/opengl + # Remove empty directories from mesa package + rmdir "$addOnsDir/vulkan/icd.d" + rmdir "$addOnsDir/vulkan" + rmdir "$addOnsDir/opengl/egl_vendor.d" + rmdir "$addOnsDir/opengl" } TEST() diff --git a/sys-libs/mesa/patches/mesa-23.1.0.patchset b/sys-libs/mesa/patches/mesa-23.1.0.patchset index 9b7f0453c..8ec30343c 100644 --- a/sys-libs/mesa/patches/mesa-23.1.0.patchset +++ b/sys-libs/mesa/patches/mesa-23.1.0.patchset @@ -1,40 +1,75 @@ -From 73e30222bdce9ac66e16c0e2b524856f2cf5aa38 Mon Sep 17 00:00:00 2001 +From a0c384a6165b7e5ad021cb974a6c9c9fe391b492 Mon Sep 17 00:00:00 2001 From: Alexander von Gluck IV Date: Sat, 15 Apr 2023 08:08:43 -0500 -Subject: [PATCH] gallium/frontends/hgl: Convert to system GLView.h. +Subject: [PATCH] hgl: Redefine visual options in hgl_context.h -* This is needed for our BGL_INDEX, BGL_ALPHA, BGL_DEPTH, etc. +* For now, move the visual mask flags into hgl_context.h +* This removes an un-needed dependency on GLView.h from glvnd +* Eventually, these need converted into normal EGL parameters --- - meson.build | 1 + - src/gallium/frontends/hgl/hgl.c | 3 +-- - src/gallium/frontends/hgl/meson.build | 1 + - 3 files changed, 3 insertions(+), 2 deletions(-) + src/egl/drivers/haiku/egl_haiku.cpp | 21 +++------------------ + src/gallium/frontends/hgl/hgl.c | 18 ++++++++---------- + src/gallium/frontends/hgl/hgl_context.h | 16 ++++++++++++++++ + 3 files changed, 27 insertions(+), 28 deletions(-) -diff --git a/meson.build b/meson.build -index c7a4be82e59..7610defb896 100644 ---- a/meson.build -+++ b/meson.build -@@ -1524,6 +1524,7 @@ endif +diff --git a/src/egl/drivers/haiku/egl_haiku.cpp b/src/egl/drivers/haiku/egl_haiku.cpp +index 3069c7edb42..94866e12315 100644 +--- a/src/egl/drivers/haiku/egl_haiku.cpp ++++ b/src/egl/drivers/haiku/egl_haiku.cpp +@@ -53,21 +53,6 @@ extern "C" { + #include "target-helpers/inline_sw_helper.h" + } - if with_platform_haiku - dep_network = cc.find_library('network') -+ dep_glkit = dependency('gl', version : '>= 1.0') - endif +-#define BGL_RGB 0 +-#define BGL_INDEX 1 +-#define BGL_SINGLE 0 +-#define BGL_DOUBLE 2 +-#define BGL_DIRECT 0 +-#define BGL_INDIRECT 4 +-#define BGL_ACCUM 8 +-#define BGL_ALPHA 16 +-#define BGL_DEPTH 32 +-#define BGL_OVERLAY 64 +-#define BGL_UNDERLAY 128 +-#define BGL_STENCIL 512 +-#define BGL_SHARE_CONTEXT 1024 +- +- + #ifdef DEBUG + # define TRACE(x...) printf("egl_haiku: " x) + # define CALLED() TRACE("CALLED: %s\n", __PRETTY_FUNCTION__) +@@ -121,7 +106,7 @@ haiku_create_window_surface(_EGLDisplay *disp, _EGLConfig *conf, void *native_wi + } - dep_futex = null_dep + struct st_visual visual; +- hgl_get_st_visual(&visual, BGL_DOUBLE|BGL_DEPTH); ++ hgl_get_st_visual(&visual, HGL_DOUBLE|HGL_DEPTH); + + wgl_surf->fb = hgl_create_st_framebuffer(hgl_dpy->disp, &visual, native_window); + if (!wgl_surf->fb) { +@@ -158,7 +143,7 @@ haiku_create_pbuffer_surface(_EGLDisplay *disp, _EGLConfig *conf, const EGLint * + + + struct st_visual visual; +- hgl_get_st_visual(&visual, BGL_DOUBLE|BGL_DEPTH); ++ hgl_get_st_visual(&visual, HGL_DOUBLE|HGL_DEPTH); + + wgl_surf->fb = hgl_create_st_framebuffer(hgl_dpy->disp, &visual, NULL); + if (!wgl_surf->fb) { +@@ -429,7 +414,7 @@ haiku_create_context(_EGLDisplay *disp, _EGLConfig *conf, + struct haiku_egl_display *hgl_dpy = haiku_egl_display(disp); + + struct st_visual visual; +- hgl_get_st_visual(&visual, BGL_DOUBLE|BGL_DEPTH); ++ hgl_get_st_visual(&visual, HGL_DOUBLE|HGL_DEPTH); + + struct haiku_egl_context* context = (struct haiku_egl_context*) calloc(1, sizeof (*context)); + if (!context) { diff --git a/src/gallium/frontends/hgl/hgl.c b/src/gallium/frontends/hgl/hgl.c -index 7fd5745d90f..a730593ba04 100644 +index 7fd5745d90f..8392f2ad2f7 100644 --- a/src/gallium/frontends/hgl/hgl.c +++ b/src/gallium/frontends/hgl/hgl.c -@@ -10,6 +10,7 @@ - #include "hgl_context.h" - - #include -+#include - - #include "util/format/u_formats.h" - #include "util/u_atomic.h" -@@ -18,8 +19,6 @@ +@@ -18,8 +18,6 @@ #include "util/u_inlines.h" #include "state_tracker/st_context.h" @@ -43,18 +78,116 @@ index 7fd5745d90f..a730593ba04 100644 #ifdef DEBUG # define TRACE(x...) printf("hgl:frontend: " x) -diff --git a/src/gallium/frontends/hgl/meson.build b/src/gallium/frontends/hgl/meson.build -index 3b6348db338..ac4540558c4 100644 ---- a/src/gallium/frontends/hgl/meson.build -+++ b/src/gallium/frontends/hgl/meson.build -@@ -31,6 +31,7 @@ endif - libsthgl = static_library( - 'sthgl', - files_libsthgl, -+ dependencies : [dep_glkit], - include_directories : [ - inc_include, inc_util, inc_mesa, inc_mapi, inc_src, - inc_gallium, inc_gallium_aux +@@ -321,39 +319,39 @@ hgl_get_st_visual(struct st_visual* visual, ulong options) + assert(visual); + + // Determine color format +- if ((options & BGL_INDEX) != 0) { ++ if ((options & HGL_INDEX) != 0) { + // Index color + visual->color_format = PIPE_FORMAT_B5G6R5_UNORM; + // TODO: Indexed color depth buffer? + visual->depth_stencil_format = PIPE_FORMAT_NONE; + } else { + // RGB color +- visual->color_format = (options & BGL_ALPHA) ++ visual->color_format = (options & HGL_ALPHA) + ? PIPE_FORMAT_BGRA8888_UNORM : PIPE_FORMAT_BGRX8888_UNORM; + // TODO: Determine additional stencil formats +- visual->depth_stencil_format = (options & BGL_DEPTH) ++ visual->depth_stencil_format = (options & HGL_DEPTH) + ? PIPE_FORMAT_Z24_UNORM_S8_UINT : PIPE_FORMAT_NONE; + } + +- visual->accum_format = (options & BGL_ACCUM) ++ visual->accum_format = (options & HGL_ACCUM) + ? PIPE_FORMAT_R16G16B16A16_SNORM : PIPE_FORMAT_NONE; + + visual->buffer_mask |= ST_ATTACHMENT_FRONT_LEFT_MASK; + +- if ((options & BGL_DOUBLE) != 0) { ++ if ((options & HGL_DOUBLE) != 0) { + TRACE("double buffer enabled\n"); + visual->buffer_mask |= ST_ATTACHMENT_BACK_LEFT_MASK; + } + + #if 0 +- if ((options & BGL_STEREO) != 0) { ++ if ((options & HGL_STEREO) != 0) { + visual->buffer_mask |= ST_ATTACHMENT_FRONT_RIGHT_MASK; +- if ((options & BGL_DOUBLE) != 0) ++ if ((options & HGL_DOUBLE) != 0) + visual->buffer_mask |= ST_ATTACHMENT_BACK_RIGHT_MASK; + } + #endif + +- if ((options & BGL_DEPTH) || (options & BGL_STENCIL)) ++ if ((options & HGL_DEPTH) || (options & HGL_STENCIL)) + visual->buffer_mask |= ST_ATTACHMENT_DEPTH_STENCIL_MASK; + + TRACE("%s: Visual color format: %s\n", __func__, +diff --git a/src/gallium/frontends/hgl/hgl_context.h b/src/gallium/frontends/hgl/hgl_context.h +index 03e567af2de..6c36bf93474 100644 +--- a/src/gallium/frontends/hgl/hgl_context.h ++++ b/src/gallium/frontends/hgl/hgl_context.h +@@ -17,6 +17,22 @@ + #include "frontend/api.h" + + ++// visual options ++#define HGL_RGB 0 ++#define HGL_INDEX 1 ++#define HGL_SINGLE 0 ++#define HGL_DOUBLE 2 ++#define HGL_DIRECT 0 ++#define HGL_INDIRECT 4 ++#define HGL_ACCUM 8 ++#define HGL_ALPHA 16 ++#define HGL_DEPTH 32 ++#define HGL_OVERLAY 64 ++#define HGL_UNDERLAY 128 ++#define HGL_STENCIL 512 ++#define HGL_SHARE_CONTEXT 1024 ++ ++ + #ifdef __cplusplus + extern "C" { + #endif +-- +2.37.3 + +From 9f063a17d5149b963b7e6a25659373dac9f9c905 Mon Sep 17 00:00:00 2001 +From: Alexander von Gluck IV +Date: Sat, 15 Apr 2023 10:06:37 -0500 +Subject: [PATCH] egl/haiku: Drop some dead cleanup code + +--- + src/egl/drivers/haiku/egl_haiku.cpp | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/src/egl/drivers/haiku/egl_haiku.cpp b/src/egl/drivers/haiku/egl_haiku.cpp +index 94866e12315..c01be7b0f5e 100644 +--- a/src/egl/drivers/haiku/egl_haiku.cpp ++++ b/src/egl/drivers/haiku/egl_haiku.cpp +@@ -314,7 +314,6 @@ static EGLBoolean + haiku_initialize_impl(_EGLDisplay *disp, void *platformDisplay) + { + struct haiku_egl_display *hgl_dpy; +- const char* err; + + hgl_dpy = (struct haiku_egl_display*)calloc(1, sizeof(struct haiku_egl_display)); + if (!hgl_dpy) +@@ -355,10 +354,6 @@ haiku_initialize_impl(_EGLDisplay *disp, void *platformDisplay) + haiku_add_configs_for_visuals(disp); + + return EGL_TRUE; +- +-cleanup: +- haiku_display_destroy(disp); +- return _eglError(EGL_NOT_INITIALIZED, err); + } + + -- 2.37.3