Hello community, here is the log from the commit of package libdrm for openSUSE:Factory checked in at 2017-10-25 17:45:14 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libdrm (Old) and /work/SRC/openSUSE:Factory/.libdrm.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libdrm" Wed Oct 25 17:45:14 2017 rev:130 rq:536263 version:2.4.85 Changes: -------- --- /work/SRC/openSUSE:Factory/libdrm/libdrm.changes 2017-10-23 16:36:22.436191327 +0200 +++ /work/SRC/openSUSE:Factory/.libdrm.new/libdrm.changes 2017-10-25 17:45:16.573737374 +0200 @@ -1,0 +2,12 @@ +Mon Oct 23 18:08:43 UTC 2017 - tobias.johannes.klausm...@mni.thm.de + +- Update to version 2.4.85: + + Add const qualifier to arguments of drmModeAddFB2() + + amdgpu: implement context priority for amdgpu_cs_ctx_create2 v3 + + amdgpu: add padding to the fence to handle ioctl + + headers: Sync amdgpu_drm.h with drm-next + + modetest: Decode IN_FORMATS plane blob property + + modetest: Allow full testing of primary planes +- Fix changelog entry for version 2.4.84 + +------------------------------------------------------------------- @@ -5,18 +17,18 @@ - amdgpu: Add deadlock detection test suit. - amdgpu: make userptr unit test more interesting - amdgpu: Do not write beyond allocated memory when parsing ids - amdgpu: print error messages when amdgpu_device_initialize is failing - amdgpu: add sync_file import and export functions - amdgpu: add amdgpu_cs_syncobj_wait - amdgpu: add amdgpu_cs_fence_to_handle - Android: move libraries to /vendor - drm: add drmSyncobjWait wrapper - etnaviv: prevent deadlock in error path - freedreno/kgsl: fix pointer-to-int cast - headers: sync syncobj ioctl defines. - headers: sync DRM_MODE_ROTATE/REFLECT defines from kernel v4.14-rc1 - intel: Change a KBL pci id to GT2 from GT1.5 - include: sync drm.h and amdgpu_drm.h with airlied/drm-next - tests/amdgpu: add missing header to SOURCES - tests/amdgpu: add new uvd enc support check - tests/amdgpu: fix uvd enc data corruption issue + + amdgpu: Add deadlock detection test suit. + + amdgpu: make userptr unit test more interesting + + amdgpu: Do not write beyond allocated memory when parsing ids + + amdgpu: print error messages when amdgpu_device_initialize is failing + + amdgpu: add sync_file import and export functions + + amdgpu: add amdgpu_cs_syncobj_wait + + amdgpu: add amdgpu_cs_fence_to_handle + + Android: move libraries to /vendor + + drm: add drmSyncobjWait wrapper + + etnaviv: prevent deadlock in error path + + freedreno/kgsl: fix pointer-to-int cast + + headers: sync syncobj ioctl defines. + + headers: sync DRM_MODE_ROTATE/REFLECT defines from kernel v4.14-rc1 + + intel: Change a KBL pci id to GT2 from GT1.5 + + include: sync drm.h and amdgpu_drm.h with airlied/drm-next + + tests/amdgpu: add missing header to SOURCES + + tests/amdgpu: add new uvd enc support check + + tests/amdgpu: fix uvd enc data corruption issue Old: ---- libdrm-2.4.84.tar.bz2 New: ---- libdrm-2.4.85.tar.bz2 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libdrm.spec ++++++ --- /var/tmp/diff_new_pack.Z8a7kg/_old 2017-10-25 17:45:17.257705273 +0200 +++ /var/tmp/diff_new_pack.Z8a7kg/_new 2017-10-25 17:45:17.261705085 +0200 @@ -17,7 +17,7 @@ Name: libdrm -Version: 2.4.84 +Version: 2.4.85 Release: 0 Summary: Userspace Interface for Kernel DRM Services License: MIT ++++++ libdrm-2.4.84.tar.bz2 -> libdrm-2.4.85.tar.bz2 ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/amdgpu/amdgpu-symbol-check new/libdrm-2.4.85/amdgpu/amdgpu-symbol-check --- old/libdrm-2.4.84/amdgpu/amdgpu-symbol-check 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/amdgpu/amdgpu-symbol-check 2017-10-21 00:48:16.000000000 +0200 @@ -30,6 +30,7 @@ amdgpu_cs_create_semaphore amdgpu_cs_create_syncobj amdgpu_cs_ctx_create +amdgpu_cs_ctx_create2 amdgpu_cs_ctx_free amdgpu_cs_destroy_semaphore amdgpu_cs_destroy_syncobj diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/amdgpu/amdgpu.h new/libdrm-2.4.85/amdgpu/amdgpu.h --- old/libdrm-2.4.84/amdgpu/amdgpu.h 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/amdgpu/amdgpu.h 2017-10-21 00:48:16.000000000 +0200 @@ -798,8 +798,9 @@ * context will always be executed in order (first come, first serve). * * - * \param dev - \c [in] Device handle. See #amdgpu_device_initialize() - * \param context - \c [out] GPU Context handle + * \param dev - \c [in] Device handle. See #amdgpu_device_initialize() + * \param priority - \c [in] Context creation flags. See AMDGPU_CTX_PRIORITY_* + * \param context - \c [out] GPU Context handle * * \return 0 on success\n * <0 - Negative POSIX Error code @@ -807,6 +808,18 @@ * \sa amdgpu_cs_ctx_free() * */ +int amdgpu_cs_ctx_create2(amdgpu_device_handle dev, + uint32_t priority, + amdgpu_context_handle *context); +/** + * Create GPU execution Context + * + * Refer to amdgpu_cs_ctx_create2 for full documentation. This call + * is missing the priority parameter. + * + * \sa amdgpu_cs_ctx_create2() + * +*/ int amdgpu_cs_ctx_create(amdgpu_device_handle dev, amdgpu_context_handle *context); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/amdgpu/amdgpu_cs.c new/libdrm-2.4.85/amdgpu/amdgpu_cs.c --- old/libdrm-2.4.84/amdgpu/amdgpu_cs.c 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/amdgpu/amdgpu_cs.c 2017-10-21 00:48:16.000000000 +0200 @@ -46,13 +46,14 @@ /** * Create command submission context * - * \param dev - \c [in] amdgpu device handle - * \param context - \c [out] amdgpu context handle + * \param dev - \c [in] Device handle. See #amdgpu_device_initialize() + * \param priority - \c [in] Context creation flags. See AMDGPU_CTX_PRIORITY_* + * \param context - \c [out] GPU Context handle * * \return 0 on success otherwise POSIX Error code */ -int amdgpu_cs_ctx_create(amdgpu_device_handle dev, - amdgpu_context_handle *context) +int amdgpu_cs_ctx_create2(amdgpu_device_handle dev, uint32_t priority, + amdgpu_context_handle *context) { struct amdgpu_context *gpu_context; union drm_amdgpu_ctx args; @@ -75,6 +76,8 @@ /* Create the context */ memset(&args, 0, sizeof(args)); args.in.op = AMDGPU_CTX_OP_ALLOC_CTX; + args.in.priority = priority; + r = drmCommandWriteRead(dev->fd, DRM_AMDGPU_CTX, &args, sizeof(args)); if (r) goto error; @@ -94,6 +97,12 @@ return r; } +int amdgpu_cs_ctx_create(amdgpu_device_handle dev, + amdgpu_context_handle *context) +{ + return amdgpu_cs_ctx_create2(dev, AMDGPU_CTX_PRIORITY_NORMAL, context); +} + /** * Release command submission context * diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/configure new/libdrm-2.4.85/configure --- old/libdrm-2.4.84/configure 2017-10-12 20:54:15.000000000 +0200 +++ new/libdrm-2.4.85/configure 2017-10-21 00:48:21.000000000 +0200 @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for libdrm 2.4.84. +# Generated by GNU Autoconf 2.69 for libdrm 2.4.85. # # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=DRI>. # @@ -591,8 +591,8 @@ # Identity of this package. PACKAGE_NAME='libdrm' PACKAGE_TARNAME='libdrm' -PACKAGE_VERSION='2.4.84' -PACKAGE_STRING='libdrm 2.4.84' +PACKAGE_VERSION='2.4.85' +PACKAGE_STRING='libdrm 2.4.85' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=DRI' PACKAGE_URL='' @@ -1433,7 +1433,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures libdrm 2.4.84 to adapt to many kinds of systems. +\`configure' configures libdrm 2.4.85 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1504,7 +1504,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of libdrm 2.4.84:";; + short | recursive ) echo "Configuration of libdrm 2.4.85:";; esac cat <<\_ACEOF @@ -1676,7 +1676,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -libdrm configure 2.4.84 +libdrm configure 2.4.85 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2099,7 +2099,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by libdrm $as_me 2.4.84, which was +It was created by libdrm $as_me 2.4.85, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -3458,7 +3458,7 @@ # Define the identity of the package. PACKAGE='libdrm' - VERSION='2.4.84' + VERSION='2.4.85' cat >>confdefs.h <<_ACEOF @@ -15294,7 +15294,7 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by libdrm $as_me 2.4.84, which was +This file was extended by libdrm $as_me 2.4.85, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -15360,7 +15360,7 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -libdrm config.status 2.4.84 +libdrm config.status 2.4.85 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/configure.ac new/libdrm-2.4.85/configure.ac --- old/libdrm-2.4.84/configure.ac 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/configure.ac 2017-10-21 00:48:16.000000000 +0200 @@ -20,7 +20,7 @@ AC_PREREQ([2.63]) AC_INIT([libdrm], - [2.4.84], + [2.4.85], [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI], [libdrm]) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/include/drm/amdgpu_drm.h new/libdrm-2.4.85/include/drm/amdgpu_drm.h --- old/libdrm-2.4.84/include/drm/amdgpu_drm.h 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/include/drm/amdgpu_drm.h 2017-10-21 00:48:16.000000000 +0200 @@ -53,6 +53,7 @@ #define DRM_AMDGPU_WAIT_FENCES 0x12 #define DRM_AMDGPU_VM 0x13 #define DRM_AMDGPU_FENCE_TO_HANDLE 0x14 +#define DRM_AMDGPU_SCHED 0x15 #define DRM_IOCTL_AMDGPU_GEM_CREATE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_CREATE, union drm_amdgpu_gem_create) #define DRM_IOCTL_AMDGPU_GEM_MMAP DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_GEM_MMAP, union drm_amdgpu_gem_mmap) @@ -69,6 +70,7 @@ #define DRM_IOCTL_AMDGPU_WAIT_FENCES DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_WAIT_FENCES, union drm_amdgpu_wait_fences) #define DRM_IOCTL_AMDGPU_VM DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_VM, union drm_amdgpu_vm) #define DRM_IOCTL_AMDGPU_FENCE_TO_HANDLE DRM_IOWR(DRM_COMMAND_BASE + DRM_AMDGPU_FENCE_TO_HANDLE, union drm_amdgpu_fence_to_handle) +#define DRM_IOCTL_AMDGPU_SCHED DRM_IOW(DRM_COMMAND_BASE + DRM_AMDGPU_SCHED, union drm_amdgpu_sched) #define AMDGPU_GEM_DOMAIN_CPU 0x1 #define AMDGPU_GEM_DOMAIN_GTT 0x2 @@ -91,6 +93,8 @@ #define AMDGPU_GEM_CREATE_VRAM_CONTIGUOUS (1 << 5) /* Flag that BO is always valid in this VM */ #define AMDGPU_GEM_CREATE_VM_ALWAYS_VALID (1 << 6) +/* Flag that BO sharing will be explicitly synchronized */ +#define AMDGPU_GEM_CREATE_EXPLICIT_SYNC (1 << 7) struct drm_amdgpu_gem_create_in { /** the requested memory size */ @@ -166,13 +170,22 @@ /* unknown cause */ #define AMDGPU_CTX_UNKNOWN_RESET 3 +/* Context priority level */ +#define AMDGPU_CTX_PRIORITY_UNSET -2048 +#define AMDGPU_CTX_PRIORITY_VERY_LOW -1023 +#define AMDGPU_CTX_PRIORITY_LOW -512 +#define AMDGPU_CTX_PRIORITY_NORMAL 0 +/* Selecting a priority above NORMAL requires CAP_SYS_NICE or DRM_MASTER */ +#define AMDGPU_CTX_PRIORITY_HIGH 512 +#define AMDGPU_CTX_PRIORITY_VERY_HIGH 1023 + struct drm_amdgpu_ctx_in { /** AMDGPU_CTX_OP_* */ __u32 op; /** For future use, no flags defined so far */ __u32 flags; __u32 ctx_id; - __u32 _pad; + __s32 priority; }; union drm_amdgpu_ctx_out { @@ -216,6 +229,21 @@ struct drm_amdgpu_vm_out out; }; +/* sched ioctl */ +#define AMDGPU_SCHED_OP_PROCESS_PRIORITY_OVERRIDE 1 + +struct drm_amdgpu_sched_in { + /* AMDGPU_SCHED_OP_* */ + __u32 op; + __u32 fd; + __s32 priority; + __u32 flags; +}; + +union drm_amdgpu_sched { + struct drm_amdgpu_sched_in in; +}; + /* * This is not a reliable API and you should expect it to fail for any * number of reasons and have fallback path that do not use userptr to @@ -525,6 +553,7 @@ struct { struct drm_amdgpu_fence fence; __u32 what; + __u32 pad; } in; struct { __u32 handle; @@ -629,6 +658,7 @@ #define AMDGPU_INFO_SENSOR_VDDGFX 0x7 /* Number of VRAM page faults on CPU access. */ #define AMDGPU_INFO_NUM_VRAM_CPU_PAGE_FAULTS 0x1E +#define AMDGPU_INFO_VRAM_LOST_COUNTER 0x1F #define AMDGPU_INFO_MMR_SE_INDEX_SHIFT 0 #define AMDGPU_INFO_MMR_SE_INDEX_MASK 0xff diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/tests/modetest/modetest.c new/libdrm-2.4.85/tests/modetest/modetest.c --- old/libdrm-2.4.84/tests/modetest/modetest.c 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/tests/modetest/modetest.c 2017-10-21 00:48:16.000000000 +0200 @@ -251,6 +251,89 @@ drmModeFreePropertyBlob(blob); } +static const char *modifier_to_string(uint64_t modifier) +{ + switch (modifier) { + case DRM_FORMAT_MOD_INVALID: + return "INVALID"; + case DRM_FORMAT_MOD_LINEAR: + return "LINEAR"; + case I915_FORMAT_MOD_X_TILED: + return "X_TILED"; + case I915_FORMAT_MOD_Y_TILED: + return "Y_TILED"; + case I915_FORMAT_MOD_Yf_TILED: + return "Yf_TILED"; + case I915_FORMAT_MOD_Y_TILED_CCS: + return "Y_TILED_CCS"; + case I915_FORMAT_MOD_Yf_TILED_CCS: + return "Yf_TILED_CCS"; + case DRM_FORMAT_MOD_SAMSUNG_64_32_TILE: + return "SAMSUNG_64_32_TILE"; + case DRM_FORMAT_MOD_VIVANTE_TILED: + return "VIVANTE_TILED"; + case DRM_FORMAT_MOD_VIVANTE_SUPER_TILED: + return "VIVANTE_SUPER_TILED"; + case DRM_FORMAT_MOD_VIVANTE_SPLIT_TILED: + return "VIVANTE_SPLIT_TILED"; + case DRM_FORMAT_MOD_VIVANTE_SPLIT_SUPER_TILED: + return "VIVANTE_SPLIT_SUPER_TILED"; + case NV_FORMAT_MOD_TEGRA_TILED: + return "MOD_TEGRA_TILED"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(0): + return "MOD_TEGRA_16BX2_BLOCK(0)"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(1): + return "MOD_TEGRA_16BX2_BLOCK(1)"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(2): + return "MOD_TEGRA_16BX2_BLOCK(2)"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(3): + return "MOD_TEGRA_16BX2_BLOCK(3)"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(4): + return "MOD_TEGRA_16BX2_BLOCK(4)"; + case NV_FORMAT_MOD_TEGRA_16BX2_BLOCK(5): + return "MOD_TEGRA_16BX2_BLOCK(5)"; + case DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED: + return "MOD_BROADCOM_VC4_T_TILED"; + default: + return "(UNKNOWN MODIFIER)"; + } +} + +static void dump_in_formats(struct device *dev, uint32_t blob_id) +{ + uint32_t i, j; + drmModePropertyBlobPtr blob; + struct drm_format_modifier_blob *header; + uint32_t *formats; + struct drm_format_modifier *modifiers; + + printf("\t\tin_formats blob decoded:\n"); + blob = drmModeGetPropertyBlob(dev->fd, blob_id); + if (!blob) { + printf("\n"); + return; + } + + header = blob->data; + formats = (uint32_t *) ((char *) header + header->formats_offset); + modifiers = (struct drm_format_modifier *) + ((char *) header + header->modifiers_offset); + + for (i = 0; i < header->count_formats; i++) { + printf("\t\t\t"); + dump_fourcc(formats[i]); + printf(": "); + for (j = 0; j < header->count_modifiers; j++) { + uint64_t mask = 1ULL << i; + if (modifiers[j].formats & mask) + printf(" %s", modifier_to_string(modifiers[j].modifier)); + } + printf("\n"); + } + + drmModeFreePropertyBlob(blob); +} + static void dump_prop(struct device *dev, drmModePropertyPtr prop, uint32_t prop_id, uint64_t value) { @@ -328,6 +411,9 @@ printf(" %"PRId64"\n", value); else printf(" %"PRIu64"\n", value); + + if (strcmp(prop->name, "IN_FORMATS") == 0) + dump_in_formats(dev, value); } static void dump_connectors(struct device *dev) @@ -1005,7 +1091,8 @@ if (!format_support(ovr, p->fourcc)) continue; - if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id) { + if ((ovr->possible_crtcs & (1 << pipe)) && + (ovr->crtc_id == 0 || ovr->crtc_id == p->crtc_id)) { plane_id = ovr->plane_id; break; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/xf86drmMode.c new/libdrm-2.4.85/xf86drmMode.c --- old/libdrm-2.4.84/xf86drmMode.c 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/xf86drmMode.c 2017-10-21 00:48:16.000000000 +0200 @@ -271,9 +271,9 @@ } int drmModeAddFB2WithModifiers(int fd, uint32_t width, uint32_t height, - uint32_t pixel_format, uint32_t bo_handles[4], - uint32_t pitches[4], uint32_t offsets[4], - uint64_t modifier[4], uint32_t *buf_id, uint32_t flags) + uint32_t pixel_format, const uint32_t bo_handles[4], + const uint32_t pitches[4], const uint32_t offsets[4], + const uint64_t modifier[4], uint32_t *buf_id, uint32_t flags) { struct drm_mode_fb_cmd2 f; int ret; @@ -297,8 +297,8 @@ } int drmModeAddFB2(int fd, uint32_t width, uint32_t height, - uint32_t pixel_format, uint32_t bo_handles[4], - uint32_t pitches[4], uint32_t offsets[4], + uint32_t pixel_format, const uint32_t bo_handles[4], + const uint32_t pitches[4], const uint32_t offsets[4], uint32_t *buf_id, uint32_t flags) { return drmModeAddFB2WithModifiers(fd, width, height, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/libdrm-2.4.84/xf86drmMode.h new/libdrm-2.4.85/xf86drmMode.h --- old/libdrm-2.4.84/xf86drmMode.h 2017-10-12 20:54:10.000000000 +0200 +++ new/libdrm-2.4.85/xf86drmMode.h 2017-10-21 00:48:16.000000000 +0200 @@ -369,15 +369,16 @@ uint32_t *buf_id); /* ...with a specific pixel format */ extern int drmModeAddFB2(int fd, uint32_t width, uint32_t height, - uint32_t pixel_format, uint32_t bo_handles[4], - uint32_t pitches[4], uint32_t offsets[4], + uint32_t pixel_format, const uint32_t bo_handles[4], + const uint32_t pitches[4], const uint32_t offsets[4], uint32_t *buf_id, uint32_t flags); /* ...with format modifiers */ int drmModeAddFB2WithModifiers(int fd, uint32_t width, uint32_t height, - uint32_t pixel_format, uint32_t bo_handles[4], - uint32_t pitches[4], uint32_t offsets[4], - uint64_t modifier[4], uint32_t *buf_id, uint32_t flags); + uint32_t pixel_format, const uint32_t bo_handles[4], + const uint32_t pitches[4], const uint32_t offsets[4], + const uint64_t modifier[4], uint32_t *buf_id, + uint32_t flags); /** * Destroies the given framebuffer.