From ad7141efd07eff2acf24cf7586b0ed5f7ff9c6b5 Mon Sep 17 00:00:00 2001 From: K900 Date: Fri, 15 Dec 2023 17:24:14 +0300 Subject: [PATCH] mesa: backport patches to fix build on Darwin and 32-bit platforms --- ...dependencies-for-systems-using-non-s.patch | 56 ++++ ...-libdrm.h-stubs-to-allow-loader.c-to.patch | 103 +++++++ ...c-zink-fallback-loading-between-hw-a.patch | 53 ++++ ...2-Fix-AV1-video-encode-32-bits-build.patch | 270 ++++++++++++++++++ pkgs/development/libraries/mesa/default.nix | 20 +- 5 files changed, 492 insertions(+), 10 deletions(-) create mode 100644 pkgs/development/libraries/mesa/backports/0001-dri-added-build-dependencies-for-systems-using-non-s.patch create mode 100644 pkgs/development/libraries/mesa/backports/0002-util-Update-util-libdrm.h-stubs-to-allow-loader.c-to.patch create mode 100644 pkgs/development/libraries/mesa/backports/0003-glx-fix-automatic-zink-fallback-loading-between-hw-a.patch create mode 100644 pkgs/development/libraries/mesa/backports/0004-d3d12-Fix-AV1-video-encode-32-bits-build.patch diff --git a/pkgs/development/libraries/mesa/backports/0001-dri-added-build-dependencies-for-systems-using-non-s.patch b/pkgs/development/libraries/mesa/backports/0001-dri-added-build-dependencies-for-systems-using-non-s.patch new file mode 100644 index 000000000000..c0b239c92598 --- /dev/null +++ b/pkgs/development/libraries/mesa/backports/0001-dri-added-build-dependencies-for-systems-using-non-s.patch @@ -0,0 +1,56 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "duncan.hopkins" +Date: Tue, 17 Oct 2023 09:34:31 +0100 +Subject: [PATCH] dri: added build dependencies for systems using non-standard + prefixed X11 libs. + +To get MacOS to build, some extra dependencies need to be added to a couple of build targets. +This mainly shows up when not installing the dependencies in the default prefix locations. +On MacOS, this happens when using a custom build of brew to install the dependencies to 'odd' locations. + +Reviewed-by: Adam Jackson +Part-of: +--- + src/gallium/targets/dri/meson.build | 2 +- + src/glx/meson.build | 2 +- + src/loader/meson.build | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/src/gallium/targets/dri/meson.build b/src/gallium/targets/dri/meson.build +index 66619bba0db..6d3ef197e74 100644 +--- a/src/gallium/targets/dri/meson.build ++++ b/src/gallium/targets/dri/meson.build +@@ -49,7 +49,7 @@ libgallium_dri = shared_library( + link_depends : gallium_dri_link_depends, + link_with : [ + libdri, libmesa, libgalliumvl, +- libgallium, libglapi, libpipe_loader_static, libws_null, libwsw, libswdri, ++ libgallium, libglapi, libloader, libpipe_loader_static, libws_null, libwsw, libswdri, + libswkmsdri, + ], + dependencies : [ +diff --git a/src/glx/meson.build b/src/glx/meson.build +index 7ec3e3e0d88..1a5e9833956 100644 +--- a/src/glx/meson.build ++++ b/src/glx/meson.build +@@ -136,7 +136,7 @@ libglx = static_library( + ], + dependencies : [ + idep_mesautil, idep_xmlconfig, +- dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_glvnd, dep_xxf86vm, dep_xshmfence ++ dep_libdrm, dep_dri2proto, dep_glproto, dep_x11, dep_xext, dep_glvnd, dep_xxf86vm, dep_xshmfence + ], + ) + +diff --git a/src/loader/meson.build b/src/loader/meson.build +index 35f9991ba2f..043cc852112 100644 +--- a/src/loader/meson.build ++++ b/src/loader/meson.build +@@ -47,6 +47,6 @@ libloader = static_library( + c_args : loader_c_args, + gnu_symbol_visibility : 'hidden', + include_directories : [inc_include, inc_src, inc_util], +- dependencies : [dep_libdrm, dep_thread, dep_xcb_xrandr], ++ dependencies : [dep_libdrm, dep_thread, dep_xcb, dep_xcb_xrandr], + build_by_default : false, + ) diff --git a/pkgs/development/libraries/mesa/backports/0002-util-Update-util-libdrm.h-stubs-to-allow-loader.c-to.patch b/pkgs/development/libraries/mesa/backports/0002-util-Update-util-libdrm.h-stubs-to-allow-loader.c-to.patch new file mode 100644 index 000000000000..5a48ace8fbbc --- /dev/null +++ b/pkgs/development/libraries/mesa/backports/0002-util-Update-util-libdrm.h-stubs-to-allow-loader.c-to.patch @@ -0,0 +1,103 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "duncan.hopkins" +Date: Tue, 17 Oct 2023 14:36:39 +0100 +Subject: [PATCH] util: Update util/libdrm.h stubs to allow loader.c to compile + on MacOS. + +MacOS does not have the libdrm libraries so is missing xf86drm.h. +util/libdrm.h already has a collection of stubs for systems that do not support the libraries. + +A compile on MacOS will fail with the source that uses newer drm functions and structures. +Update adds in missing items that MacOS code needs to compile and run. +New code is copied from the public repository: https://gitlab.freedesktop.org/mesa/drm/-/blob/main/xf86drm.h + +Reviewed-by: Adam Jackson +Part-of: +--- + src/util/libdrm.h | 57 +++++++++++++++++++++++++++++++++++++++++++++++ + 1 file changed, 57 insertions(+) + +diff --git a/src/util/libdrm.h b/src/util/libdrm.h +index cc153cf88ab..e3af494b8d1 100644 +--- a/src/util/libdrm.h ++++ b/src/util/libdrm.h +@@ -44,22 +44,79 @@ + #define DRM_BUS_PLATFORM 2 + #define DRM_BUS_HOST1X 3 + ++typedef struct _drmPciDeviceInfo { ++ uint16_t vendor_id; ++ uint16_t device_id; ++ uint16_t subvendor_id; ++ uint16_t subdevice_id; ++ uint8_t revision_id; ++} drmPciDeviceInfo, *drmPciDeviceInfoPtr; ++ ++#define DRM_PLATFORM_DEVICE_NAME_LEN 512 ++ ++typedef struct _drmPlatformBusInfo { ++ char fullname[DRM_PLATFORM_DEVICE_NAME_LEN]; ++} drmPlatformBusInfo, *drmPlatformBusInfoPtr; ++ ++typedef struct _drmPlatformDeviceInfo { ++ char **compatible; /* NULL terminated list of compatible strings */ ++} drmPlatformDeviceInfo, *drmPlatformDeviceInfoPtr; ++ ++#define DRM_HOST1X_DEVICE_NAME_LEN 512 ++ ++typedef struct _drmHost1xBusInfo { ++ char fullname[DRM_HOST1X_DEVICE_NAME_LEN]; ++} drmHost1xBusInfo, *drmHost1xBusInfoPtr; ++ ++typedef struct _drmPciBusInfo { ++ uint16_t domain; ++ uint8_t bus; ++ uint8_t dev; ++ uint8_t func; ++} drmPciBusInfo, *drmPciBusInfoPtr; ++ + typedef struct _drmDevice { + char **nodes; /* DRM_NODE_MAX sized array */ + int available_nodes; /* DRM_NODE_* bitmask */ + int bustype; ++ union { ++ drmPciBusInfoPtr pci; ++ drmPlatformBusInfoPtr platform; ++ drmHost1xBusInfoPtr host1x; ++ } businfo; ++ union { ++ drmPciDeviceInfoPtr pci; ++ } deviceinfo; + /* ... */ + } drmDevice, *drmDevicePtr; + ++static inline int ++drmGetDevice2(int fd, uint32_t flags, drmDevicePtr *device) ++{ ++ return -ENOENT; ++} ++ + static inline int + drmGetDevices2(uint32_t flags, drmDevicePtr devices[], int max_devices) + { + return -ENOENT; + } + ++static inline int ++drmGetDeviceFromDevId(dev_t dev_id, uint32_t flags, drmDevicePtr *device) ++{ ++ return -ENOENT; ++} ++ ++static inline void ++drmFreeDevice(drmDevicePtr *device) {} ++ + static inline void + drmFreeDevices(drmDevicePtr devices[], int count) {} + ++static inline char* ++drmGetDeviceNameFromFd2(int fd) { return NULL;} ++ + typedef struct _drmVersion { + int version_major; /**< Major version */ + int version_minor; /**< Minor version */ diff --git a/pkgs/development/libraries/mesa/backports/0003-glx-fix-automatic-zink-fallback-loading-between-hw-a.patch b/pkgs/development/libraries/mesa/backports/0003-glx-fix-automatic-zink-fallback-loading-between-hw-a.patch new file mode 100644 index 000000000000..c7bde6411d8e --- /dev/null +++ b/pkgs/development/libraries/mesa/backports/0003-glx-fix-automatic-zink-fallback-loading-between-hw-a.patch @@ -0,0 +1,53 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: "duncan.hopkins" +Date: Wed, 1 Nov 2023 11:31:13 +0000 +Subject: [PATCH] glx: fix automatic zink fallback loading between hw and sw + drivers on MacOS + +The combination of defines used when compile the code on MacOS is hiding variables. +Patch allows basic MacOS build to compile and run. + +Reviewed-by: Adam Jackson +Part-of: +--- + src/glx/glxext.c | 10 ++++++++-- + 1 file changed, 8 insertions(+), 2 deletions(-) + +diff --git a/src/glx/glxext.c b/src/glx/glxext.c +index 7712e54c1d6..454f2c36a77 100644 +--- a/src/glx/glxext.c ++++ b/src/glx/glxext.c +@@ -878,12 +878,16 @@ __glXInitialize(Display * dpy) + + dpyPriv->glXDrawHash = __glxHashCreate(); + ++ Bool zink = False; ++ Bool try_zink = False; ++ + #if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + Bool glx_direct = !debug_get_bool_option("LIBGL_ALWAYS_INDIRECT", false); + Bool glx_accel = !debug_get_bool_option("LIBGL_ALWAYS_SOFTWARE", false); + const char *env = getenv("MESA_LOADER_DRIVER_OVERRIDE"); +- Bool zink = env && !strcmp(env, "zink"); +- Bool try_zink = False; ++ ++ zink = env && !strcmp(env, "zink"); ++ try_zink = False; + + dpyPriv->drawHash = __glxHashCreate(); + +@@ -928,12 +932,14 @@ __glXInitialize(Display * dpy) + + if (!AllocAndFetchScreenConfigs(dpy, dpyPriv, zink | try_zink)) { + Bool fail = True; ++#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL) + if (try_zink) { + free(dpyPriv->screens); + dpyPriv->driswDisplay->destroyDisplay(dpyPriv->driswDisplay); + dpyPriv->driswDisplay = driswCreateDisplay(dpy, false); + fail = !AllocAndFetchScreenConfigs(dpy, dpyPriv, False); + } ++#endif + if (fail) { + free(dpyPriv); + return NULL; diff --git a/pkgs/development/libraries/mesa/backports/0004-d3d12-Fix-AV1-video-encode-32-bits-build.patch b/pkgs/development/libraries/mesa/backports/0004-d3d12-Fix-AV1-video-encode-32-bits-build.patch new file mode 100644 index 000000000000..6152ad7c174e --- /dev/null +++ b/pkgs/development/libraries/mesa/backports/0004-d3d12-Fix-AV1-video-encode-32-bits-build.patch @@ -0,0 +1,270 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Sil Vilerino +Date: Wed, 6 Dec 2023 20:09:44 -0500 +Subject: [PATCH] d3d12: Fix AV1 video encode 32 bits build + +Reviewed-by: Jesse Natalie +Part-of: +--- + .../drivers/d3d12/d3d12_video_enc_av1.cpp | 58 +++++++++---------- + ...12_video_encoder_bitstream_builder_av1.cpp | 10 ++-- + ...2_video_encoder_references_manager_av1.cpp | 2 +- + 3 files changed, 35 insertions(+), 35 deletions(-) + +diff --git a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp +index 2c1964aa274..a5e2a2e3d39 100644 +--- a/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp ++++ b/src/gallium/drivers/d3d12/d3d12_video_enc_av1.cpp +@@ -2189,7 +2189,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + writtenTemporalDelimBytes // Bytes Written AFTER placingPositionStart arg above + ); + assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == writtenTemporalDelimBytes); +- debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes); ++ debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast(writtenTemporalDelimBytes)); + } + + size_t writtenSequenceBytes = 0; +@@ -2208,7 +2208,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + writtenSequenceBytes // Bytes Written AFTER placingPositionStart arg above + ); + assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == (writtenSequenceBytes + writtenTemporalDelimBytes)); +- debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", writtenSequenceBytes); ++ debug_printf("Written OBU_SEQUENCE_HEADER bytes: %" PRIu64 "\n", static_cast(writtenSequenceBytes)); + } + + // Only supported bitstream format is with obu_size for now. +@@ -2254,14 +2254,14 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above + ); + +- debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", writtenFrameBytes); ++ debug_printf("Written OBU_FRAME bytes: %" PRIu64 "\n", static_cast(writtenFrameBytes)); + + assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == + (writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes)); + + debug_printf("Uploading %" PRIu64 + " bytes from OBU sequence and/or picture headers to comp_bit_destination %p at offset 0\n", +- pD3D12Enc->m_BitstreamHeadersBuffer.size(), ++ static_cast(pD3D12Enc->m_BitstreamHeadersBuffer.size()), + associatedMetadata.comp_bit_destination); + + // Upload headers to the finalized compressed bitstream buffer +@@ -2330,13 +2330,13 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + writtenFrameBytes // Bytes Written AFTER placingPositionStart arg above + ); + +- debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", writtenFrameBytes); ++ debug_printf("Written OBU_FRAME_HEADER bytes: %" PRIu64 "\n", static_cast(writtenFrameBytes)); + + assert(pD3D12Enc->m_BitstreamHeadersBuffer.size() == + (writtenSequenceBytes + writtenTemporalDelimBytes + writtenFrameBytes)); + + debug_printf("Uploading %" PRIu64 " bytes from OBU headers to comp_bit_destination %p at offset 0\n", +- pD3D12Enc->m_BitstreamHeadersBuffer.size(), ++ static_cast(pD3D12Enc->m_BitstreamHeadersBuffer.size()), + associatedMetadata.comp_bit_destination); + + // Upload headers to the finalized compressed bitstream buffer +@@ -2361,7 +2361,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + debug_printf("Uploading tile group %d to comp_bit_destination %p at offset %" PRIu64 "\n", + tg_idx, + associatedMetadata.comp_bit_destination, +- comp_bitstream_offset); ++ static_cast(comp_bitstream_offset)); + + size_t tile_group_obu_size = 0; + size_t decode_tile_elements_size = 0; +@@ -2387,9 +2387,9 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + + debug_printf("Written %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() and " + "obu_size to staging_bitstream_buffer %p at offset %" PRIu64 "\n", +- writtenTileObuPrefixBytes, ++ static_cast(writtenTileObuPrefixBytes), + associatedMetadata.m_StagingBitstreamConstruction.data(), +- staging_bitstream_buffer_offset); ++ static_cast(staging_bitstream_buffer_offset)); + + writtenTileBytes += writtenTileObuPrefixBytes; + +@@ -2404,10 +2404,10 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + + debug_printf("Uploading %" PRIu64 " bytes for OBU_TILE_GROUP open_bitstream_unit() prefix with obu_header() " + "and obu_size: %" PRIu64 " to comp_bit_destination %p at offset %" PRIu64 "\n", +- writtenTileObuPrefixBytes, +- tile_group_obu_size, ++ static_cast(writtenTileObuPrefixBytes), ++ static_cast(tile_group_obu_size), + associatedMetadata.comp_bit_destination, +- comp_bitstream_offset); ++ static_cast(comp_bitstream_offset)); + + staging_bitstream_buffer_offset += writtenTileObuPrefixBytes; + +@@ -2517,7 +2517,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + // Add current pending frame being processed in the loop + extra_show_existing_frame_payload_bytes += writtenTemporalDelimBytes; + +- debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", writtenTemporalDelimBytes); ++ debug_printf("Written OBU_TEMPORAL_DELIMITER bytes: %" PRIu64 "\n", static_cast(writtenTemporalDelimBytes)); + + size_t writtenShowExistingFrameBytes = 0; + av1_pic_header_t showExistingPicHdr = {}; +@@ -2561,7 +2561,7 @@ d3d12_video_encoder_build_post_encode_codec_bitstream_av1(struct d3d12_video_enc + "in current frame ref_frame_idx[%" PRIu32 "]) bytes: %" PRIu64 "\n", + *pendingFrameIt /*PictureIndex*/, + showExistingPicHdr.frame_to_show_map_idx, +- writtenShowExistingFrameBytes); ++ static_cast(writtenShowExistingFrameBytes)); + + // Remove it from the list of pending frames + pendingFrameIt = +@@ -2628,7 +2628,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + tileGroup.tg_start, + tileGroup.tg_end, + comp_bit_destination, +- comp_bit_destination_offset); ++ static_cast(comp_bit_destination_offset)); + + debug_printf("[Tile group start %d to end %d] Using staging_bitstream_buffer %p at offset %" PRIu64 + " to write the tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end and " +@@ -2636,7 +2636,7 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + tileGroup.tg_start, + tileGroup.tg_end, + staging_bitstream_buffer.data(), +- staging_bitstream_buffer_offset); ++ static_cast(staging_bitstream_buffer_offset)); + + // Reserve space upfront in the scratch storage + // Do not modify anything before staging_bitstream_buffer_offset +@@ -2673,9 +2673,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + " for tile_obu_group() prefix syntax: tile_start_and_end_present_flag, tg_start, tg_end\n", + tileGroup.tg_start, + tileGroup.tg_end, +- bitstream_tile_group_obu_bytes, ++ static_cast(bitstream_tile_group_obu_bytes), + staging_bitstream_buffer.data(), +- staging_bitstream_buffer_offset); ++ static_cast(staging_bitstream_buffer_offset)); + + + // Save this to compare the final written destination byte size against the expected tile_group_obu_size +@@ -2699,11 +2699,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + " to comp_bit_destination %p at offset %" PRIu64 "\n", + tileGroup.tg_start, + tileGroup.tg_end, +- bitstream_tile_group_obu_bytes, ++ static_cast(bitstream_tile_group_obu_bytes), + staging_bitstream_buffer.data(), +- staging_bitstream_buffer_offset, ++ static_cast(staging_bitstream_buffer_offset), + comp_bit_destination, +- comp_bit_destination_offset); ++ static_cast(comp_bit_destination_offset)); + + comp_bit_destination_offset += bitstream_tile_group_obu_bytes; + written_bytes_to_staging_bitstream_buffer += bitstream_tile_group_obu_bytes; +@@ -2729,9 +2729,9 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + tileGroup.tg_start, + tileGroup.tg_end, + TileIdx, +- TileSizeBytes, ++ static_cast(TileSizeBytes), + staging_bitstream_buffer.data(), +- (written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset)); ++ static_cast(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset)); + + // Upload current tile_size_minus_1 + // Note: The buffer_subdata is queued in pD3D12Enc->base.context but doesn't execute immediately +@@ -2751,11 +2751,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + tileGroup.tg_start, + tileGroup.tg_end, + TileIdx, +- TileSizeBytes, ++ static_cast(TileSizeBytes), + staging_bitstream_buffer.data(), +- (written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset), ++ static_cast(written_bytes_to_staging_bitstream_buffer + staging_bitstream_buffer_offset), + comp_bit_destination, +- comp_bit_destination_offset); ++ static_cast(comp_bit_destination_offset)); + + comp_bit_destination_offset += TileSizeBytes; + written_bytes_to_staging_bitstream_buffer += TileSizeBytes; +@@ -2788,11 +2788,11 @@ upload_tile_group_obu(struct d3d12_video_encoder *pD3D12Enc, + tileGroup.tg_start, + tileGroup.tg_end, + TileIdx, +- tile_size, ++ static_cast(tile_size), + src_driver_bitstream, +- src_buf_tile_position, ++ static_cast(src_buf_tile_position), + comp_bit_destination, +- comp_bit_destination_offset); ++ static_cast(comp_bit_destination_offset)); + + comp_bit_destination_offset += tile_size; + } +diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp +index 25550a2b4fb..96b7e32eb8e 100644 +--- a/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp ++++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_bitstream_builder_av1.cpp +@@ -153,7 +153,7 @@ d3d12_video_bitstream_builder_av1::write_temporal_delimiter_obu(std::vector(bitstream_seq.get_byte_count()); ++ const uint64_t obu_size_in_bytes = bitstream_seq.get_byte_count(); + debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes); + pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes); + +@@ -802,7 +802,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS + debug_printf("frame_header_obu() bytes (without OBU_FRAME nor OBU_FRAME_HEADER alignment padding): %" PRId32 "\n", + bitstream_pic.get_byte_count()); // May be bit unaligned at this point (see padding below) + debug_printf("extra_obu_size_bytes (ie. tile_group_obu_size if writing OBU_FRAME ): %" PRIu64 "\n", +- extra_obu_size_bytes); ++ static_cast(extra_obu_size_bytes)); + + // Write the obu_header + constexpr uint32_t obu_extension_flag = 0; +@@ -825,7 +825,7 @@ d3d12_video_bitstream_builder_av1::write_frame_header(const av1_seq_header_t *pS + bitstream_pic.flush(); + + // Write the obu_size element +- const size_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes; ++ const uint64_t obu_size_in_bytes = bitstream_pic.get_byte_count() + extra_obu_size_bytes; + debug_printf("obu_size: %" PRIu64 "\n", obu_size_in_bytes); + pack_obu_header_size(&bitstream_full_obu, obu_size_in_bytes); + +@@ -913,7 +913,7 @@ d3d12_video_bitstream_builder_av1::write_obu_tile_group_header(size_t tile_group + + // Write the obu_size element + pack_obu_header_size(&bitstream_full_obu, tile_group_obu_size); +- debug_printf("obu_size: %" PRIu64 "\n", tile_group_obu_size); ++ debug_printf("obu_size: %" PRIu64 "\n", static_cast(tile_group_obu_size)); + + bitstream_full_obu.flush(); + +diff --git a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp +index 49892338984..2f4bcf0e1eb 100644 +--- a/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp ++++ b/src/gallium/drivers/d3d12/d3d12_video_encoder_references_manager_av1.cpp +@@ -213,7 +213,7 @@ d3d12_video_encoder_references_manager_av1::print_virtual_dpb_entries() + "Number of DPB virtual entries is %" PRIu64 " entries for frame with OrderHint " + "%d (PictureIndex %d) are: \n%s \n", + m_PhysicalAllocationsStorage.get_number_of_pics_in_dpb(), +- m_CurrentFrameReferencesData.pVirtualDPBEntries.size(), ++ static_cast(m_CurrentFrameReferencesData.pVirtualDPBEntries.size()), + m_CurrentFramePicParams.OrderHint, + m_CurrentFramePicParams.PictureIndex, + dpbContents.c_str()); diff --git a/pkgs/development/libraries/mesa/default.nix b/pkgs/development/libraries/mesa/default.nix index 4d8df1d9f078..d28b5434e845 100644 --- a/pkgs/development/libraries/mesa/default.nix +++ b/pkgs/development/libraries/mesa/default.nix @@ -121,17 +121,17 @@ self = stdenv.mkDerivation { ./opencl.patch ./disk_cache-include-dri-driver-path-in-cache-key.patch - ] ++ lib.optionals stdenv.isDarwin [ + + # Backports to fix build + # FIXME: remove when applied upstream + # Fix build on macOS - # Last two commits from https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25992 - (fetchpatch { - url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/c8b64452c076c1768beb23280de25faf2bcbe2c8.diff"; - hash = "sha256-mqivdzyoLtkfkAb+r57gjPwg8d7whgFAahiUhGVOOvo="; - }) - (fetchpatch { - url = "https://gitlab.freedesktop.org/mesa/mesa/-/commit/96d55d784cb4f047a4b58cd08330f42208641ea7.diff"; - hash = "sha256-SkWdvqltfByFiKlhr9YILA6qWQxuyKz/YTanVp/NMzg="; - }) + ./backports/0001-dri-added-build-dependencies-for-systems-using-non-s.patch + ./backports/0002-util-Update-util-libdrm.h-stubs-to-allow-loader.c-to.patch + ./backports/0003-glx-fix-automatic-zink-fallback-loading-between-hw-a.patch + + # Fix build on i686 + ./backports/0004-d3d12-Fix-AV1-video-encode-32-bits-build.patch ]; postPatch = ''