configure.ac | 18 debian/changelog | 8 debian/libdrm2.symbols | 10 debian/patches/Fix-headers-inclusion-in-xf86drmMode.c.diff | 29 - debian/rules | 2 debian/upstream/signing-key.asc | 52 ++ exynos/exynos_fimg2d.c | 23 - include/drm/drm.h | 10 include/drm/drm_mode.h | 37 + include/drm/nouveau_drm.h | 1 intel/intel_chipset.h | 11 nouveau/abi16.c | 3 nouveau/nouveau.h | 1 nouveau/pushbuf.c | 4 radeon/r600_pci_ids.h | 1 tests/exynos/exynos_fimg2d_test.c | 112 ----- tests/kmstest/main.c | 1 tests/modetest/buffers.c | 30 - tests/modetest/modetest.c | 49 +- xf86drm.c | 14 xf86drmMode.c | 289 ++++++++++++- xf86drmMode.h | 24 + 22 files changed, 534 insertions(+), 195 deletions(-)
New commits: commit ba14218105057fe79c3b2a8f5c7b851e57aca1f4 Author: Sven Joachim <svenj...@gmx.de> Date: Wed Jul 1 17:23:02 2015 +0200 Close bug #789759 Fixed in commit 812e8fe6ce46d733c30207ee26c788c61f546294. diff --git a/debian/changelog b/debian/changelog index 6938ef8..d2756b9 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ libdrm (2.4.62-1) UNRELEASED; urgency=medium [ Sven Joachim ] * New upstream release. + - nouveau: restore check that avoids multiple user bos per kernel bo + (Closes: #789759). * Update symbols file and bump shlibs for libdrm2. * Refresh the patch from 2.4.60-3 after upstream changes. * Remove duplicate Section fields from debian/control. commit c30399694a21845bf0f36c29c97cd38351b96b88 Author: Sven Joachim <svenj...@gmx.de> Date: Wed Jul 1 17:17:30 2015 +0200 Update debian/upstream/signing-key.asc Add Emil Velikov's key 2CEB490D. diff --git a/debian/changelog b/debian/changelog index 06c7d69..6938ef8 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ libdrm (2.4.62-1) UNRELEASED; urgency=medium * Update symbols file and bump shlibs for libdrm2. * Refresh the patch from 2.4.60-3 after upstream changes. * Remove duplicate Section fields from debian/control. + * Update debian/upstream/signing-key.asc. * Bump Standards-Version to 3.9.6, no changes needed. [ Julien Cristau ] diff --git a/debian/upstream/signing-key.asc b/debian/upstream/signing-key.asc index 7e70a30..a99bceb 100644 --- a/debian/upstream/signing-key.asc +++ b/debian/upstream/signing-key.asc @@ -139,3 +139,55 @@ xjRzzOuOtaxMftMlZwRNXm1zh5CTzMOYpXeetPXrLwUOSF5VeN8AK//gGlbjZt1o iQyTzgz/F98QzHzNrRk8DdK4kxVkpvk= =G7Eh -----END PGP PUBLIC KEY BLOCK----- +-----BEGIN PGP PUBLIC KEY BLOCK----- +Version: GnuPG v1 + +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 +Omj3BC4KcQ== +=XQbm +-----END PGP PUBLIC KEY BLOCK----- commit f23099414099b65feb8bd2b3555035b2893552fd Author: Sven Joachim <svenj...@gmx.de> Date: Wed Jul 1 17:15:20 2015 +0200 Update symbols file and bump shlibs for libdrm2 again diff --git a/debian/libdrm2.symbols b/debian/libdrm2.symbols index 3e1259e..8c65b19 100644 --- a/debian/libdrm2.symbols +++ b/debian/libdrm2.symbols @@ -80,10 +80,20 @@ libdrm.so.2 libdrm2 #MINVER# drmMarkBufs@Base 2.3.1 drmModeAddFB2@Base 2.4.30 drmModeAddFB@Base 2.4.3 + drmModeAtomicAddProperty@Base 2.4.62 + drmModeAtomicAlloc@Base 2.4.62 + drmModeAtomicCommit@Base 2.4.62 + drmModeAtomicDuplicate@Base 2.4.62 + drmModeAtomicFree@Base 2.4.62 + drmModeAtomicGetCursor@Base 2.4.62 + drmModeAtomicMerge@Base 2.4.62 + drmModeAtomicSetCursor@Base 2.4.62 drmModeAttachMode@Base 2.4.3 drmModeConnectorSetProperty@Base 2.4.3 + drmModeCreatePropertyBlob@Base 2.4.62 drmModeCrtcGetGamma@Base 2.4.3 drmModeCrtcSetGamma@Base 2.4.3 + drmModeDestroyPropertyBlob@Base 2.4.62 drmModeDetachMode@Base 2.4.3 drmModeDirtyFB@Base 2.4.17 drmModeFreeConnector@Base 2.4.3 diff --git a/debian/rules b/debian/rules index ee521ec..f712b4a 100755 --- a/debian/rules +++ b/debian/rules @@ -92,7 +92,7 @@ endif dh_strip -s --remaining-packages override_dh_makeshlibs: - dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.61)' --add-udeb=libdrm2-udeb -- -c4 + dh_makeshlibs -plibdrm2 -V'libdrm2 (>= 2.4.62)' --add-udeb=libdrm2-udeb -- -c4 ifeq ($(INTEL), yes) dh_makeshlibs -plibdrm-intel1 -V'libdrm-intel1 (>= 2.4.60)' -- -c4 endif commit 7353c27f8bd04fda896ba706cd64d4920a8f0d79 Author: Sven Joachim <svenj...@gmx.de> Date: Wed Jul 1 17:03:42 2015 +0200 Refresh patch Fix-headers-inclusion-in-xf86drmMode.c.diff Part of it has been applied upstream in commit 5f76273d51fee5c176. diff --git a/debian/changelog b/debian/changelog index 2dc48c0..06c7d69 100644 --- a/debian/changelog +++ b/debian/changelog @@ -3,6 +3,7 @@ libdrm (2.4.62-1) UNRELEASED; urgency=medium [ Sven Joachim ] * New upstream release. * Update symbols file and bump shlibs for libdrm2. + * Refresh the patch from 2.4.60-3 after upstream changes. * Remove duplicate Section fields from debian/control. * Bump Standards-Version to 3.9.6, no changes needed. diff --git a/debian/patches/Fix-headers-inclusion-in-xf86drmMode.c.diff b/debian/patches/Fix-headers-inclusion-in-xf86drmMode.c.diff index c87d661..4489de5 100644 --- a/debian/patches/Fix-headers-inclusion-in-xf86drmMode.c.diff +++ b/debian/patches/Fix-headers-inclusion-in-xf86drmMode.c.diff @@ -3,40 +3,23 @@ From: Julien Cristau <jcris...@debian.org> Date: Sun, 26 Apr 2015 11:53:02 +0200 Subject: [PATCH] Fix headers inclusion in xf86drmMode.c -- config.h needs to be included first - add sys/sysctl.h to get sysctlbyname declaration on kFreeBSD --- - xf86drmMode.c | 8 ++++---- - 1 file changed, 4 insertions(+), 4 deletions(-) + xf86drmMode.c | 1 + + 1 file changed, 1 insertion(+) diff --git a/xf86drmMode.c b/xf86drmMode.c -index 61d5e01..de37548 100644 +index f4b8d14..b7e0116 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c -@@ -32,6 +32,9 @@ - * IN THE SOFTWARE. - * - */ -+#ifdef HAVE_CONFIG_H -+#include "config.h" -+#endif - - /* - * TODO the types we are after are defined in diffrent headers on diffrent -@@ -39,12 +42,9 @@ - */ +@@ -46,6 +46,7 @@ #include <stdint.h> + #include <stdlib.h> #include <sys/ioctl.h> +#include <sys/sysctl.h> #include <stdio.h> + #include <stdbool.h> --#ifdef HAVE_CONFIG_H --#include "config.h" --#endif -- - #include "xf86drmMode.h" - #include "xf86drm.h" - #include <drm.h> -- 2.1.4 commit 77fdb7b74322a40281a8d807168a9b567e0e89c3 Author: Sven Joachim <svenj...@gmx.de> Date: Wed Jul 1 16:50:27 2015 +0200 New upstream release diff --git a/debian/changelog b/debian/changelog index 848e9e2..2dc48c0 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,7 +1,7 @@ -libdrm (2.4.61-1) UNRELEASED; urgency=medium +libdrm (2.4.62-1) UNRELEASED; urgency=medium [ Sven Joachim ] - * New upstream version. + * New upstream release. * Update symbols file and bump shlibs for libdrm2. * Remove duplicate Section fields from debian/control. * Bump Standards-Version to 3.9.6, no changes needed. commit ba4b5ac010ab85406ec52e3906e13d58cd9aa782 Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Mon Jun 29 19:25:35 2015 +0100 configure.ac: bump version to 2.4.62 for release Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index 32d034e..1456b90 100644 --- a/configure.ac +++ b/configure.ac @@ -20,7 +20,7 @@ AC_PREREQ([2.63]) AC_INIT([libdrm], - [2.4.61], + [2.4.62], [https://bugs.freedesktop.org/enter_bug.cgi?product=DRI], [libdrm]) commit 2bf0d5bf63cda5a0abd79f2fd4b5737cb852b476 Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:14 2015 +0200 tests/exynos: handle G2D_IMGBUF_COLOR in switch statements This fixes a compiler warning about missing handling of enum values in the switch statements. Also remove the silent mapping to G2D_IMGBUF_GEM when an unknown buffer type is encountered. We have full control about the type here, and if it's unknown then we obviously have a bug in the code. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index 59de4ba..8794dac 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -270,9 +270,10 @@ static int g2d_copy_test(struct exynos_device *dev, struct exynos_bo *src, src_img.user_ptr[0].userptr = userptr; src_img.user_ptr[0].size = size; break; + case G2D_IMGBUF_COLOR: default: - type = G2D_IMGBUF_GEM; - break; + ret = -EFAULT; + goto fail; } printf("copy test with %s.\n", @@ -306,6 +307,7 @@ err_free_userptr: if (userptr) free((void *)userptr); +fail: g2d_fini(ctx); return ret; @@ -349,9 +351,10 @@ static int g2d_copy_with_scale_test(struct exynos_device *dev, src_img.user_ptr[0].userptr = userptr; src_img.user_ptr[0].size = size; break; + case G2D_IMGBUF_COLOR: default: - type = G2D_IMGBUF_GEM; - break; + ret = -EFAULT; + goto fail; } printf("copy and scale test with %s.\n", @@ -390,6 +393,7 @@ err_free_userptr: if (userptr) free((void *)userptr); +fail: g2d_fini(ctx); return 0; @@ -435,9 +439,10 @@ static int g2d_blend_test(struct exynos_device *dev, src_img.user_ptr[0].userptr = userptr; src_img.user_ptr[0].size = size; break; + case G2D_IMGBUF_COLOR: default: - type = G2D_IMGBUF_GEM; - break; + ret = -EFAULT; + goto fail; } printf("blend test with %s.\n", @@ -487,6 +492,7 @@ err_free_userptr: if (userptr) free((void *)userptr); +fail: g2d_fini(ctx); return 0; @@ -532,6 +538,7 @@ static int g2d_checkerboard_test(struct exynos_device *dev, src_img.user_ptr[0].userptr = (unsigned long)checkerboard; src_img.user_ptr[0].size = img_w * img_h * 4; break; + case G2D_IMGBUF_COLOR: default: ret = -EFAULT; goto fail; commit b26c8efb6566e78d12a93fee7c01f6857e07f611 Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:13 2015 +0200 tests/exynos: remove connector_find_plane No test uses DRM planes at the moment so this function is never called. Inspection of the git history shows that DRM planes were also never used in these tests in the past. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index 1ec7340..59de4ba 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -112,37 +112,6 @@ static void connector_find_mode(int fd, struct connector *c, c->crtc = c->encoder->crtc_id; } -static int connector_find_plane(int fd, unsigned int *plane_id) -{ - drmModePlaneRes *plane_resources; - drmModePlane *ovr; - int i; - - plane_resources = drmModeGetPlaneResources(fd); - if (!plane_resources) { - fprintf(stderr, "drmModeGetPlaneResources failed: %s\n", - strerror(errno)); - return -1; - } - - for (i = 0; i < plane_resources->count_planes; i++) { - plane_id[i] = 0; - - ovr = drmModeGetPlane(fd, plane_resources->planes[i]); - if (!ovr) { - fprintf(stderr, "drmModeGetPlane failed: %s\n", - strerror(errno)); - continue; - } - - if (ovr->possible_crtcs & (1 << 0)) - plane_id[i] = ovr->plane_id; - drmModeFreePlane(ovr); - } - - return 0; -} - static int drm_set_crtc(struct exynos_device *dev, struct connector *c, unsigned int fb_id) { commit 13ad10afc306a76f9a61e6a339e412a34a59bfe4 Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:12 2015 +0200 tests/exynos: simplify drm_set_crtc We can just return 'ret' here, the goto serves no purpose. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index de6a2b7..1ec7340 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -150,14 +150,9 @@ static int drm_set_crtc(struct exynos_device *dev, struct connector *c, ret = drmModeSetCrtc(dev->fd, c->crtc, fb_id, 0, 0, &c->id, 1, c->mode); - if (ret) { + if (ret) drmMsg("failed to set mode: %s\n", strerror(errno)); - goto err; - } - - return 0; -err: return ret; } commit 28d896c763e0cc2ab8f9679ee75b756bdd587da7 Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:11 2015 +0200 tests/exynos: remove struct fimg2d_test_case It doesn't make sense to keep this structure, since we can just call all tests directly. An inspection of the git history shows that no code ever used this abstraction in the past. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index 080d178..de6a2b7 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -37,30 +37,6 @@ static unsigned int screen_width, screen_height; -/* - * A structure to test fimg2d hw. - * - * @solid_fill: fill given color data to source buffer. - * @copy: copy source to destination buffer. - * @copy_with_scale: copy source to destination buffer scaling up or - * down properly. - * @blend: blend source to destination buffer. - */ -struct fimg2d_test_case { - int (*solid_fill)(struct exynos_device *dev, struct exynos_bo *dst); - int (*copy)(struct exynos_device *dev, struct exynos_bo *src, - struct exynos_bo *dst, enum e_g2d_buf_type); - int (*copy_with_scale)(struct exynos_device *dev, - struct exynos_bo *src, struct exynos_bo *dst, - enum e_g2d_buf_type); - int (*blend)(struct exynos_device *dev, - struct exynos_bo *src, struct exynos_bo *dst, - enum e_g2d_buf_type); - int (*checkerboard)(struct exynos_device *dev, - struct exynos_bo *src, struct exynos_bo *dst, - enum e_g2d_buf_type); -}; - struct connector { uint32_t id; char mode_str[64]; @@ -630,14 +606,6 @@ fail: return ret; } -static struct fimg2d_test_case test_case = { - .solid_fill = &g2d_solid_fill_test, - .copy = &g2d_copy_test, - .copy_with_scale = &g2d_copy_with_scale_test, - .blend = &g2d_blend_test, - .checkerboard = &g2d_checkerboard_test, -}; - static void usage(char *name) { fprintf(stderr, "usage: %s [-s]\n", name); @@ -747,7 +715,7 @@ int main(int argc, char **argv) if (ret < 0) goto err_rm_fb; - ret = test_case.solid_fill(dev, bo); + ret = g2d_solid_fill_test(dev, bo); if (ret < 0) { fprintf(stderr, "failed to solid fill operation.\n"); goto err_rm_fb; @@ -761,7 +729,7 @@ int main(int argc, char **argv) goto err_rm_fb; } - ret = test_case.copy(dev, src, bo, G2D_IMGBUF_GEM); + ret = g2d_copy_test(dev, src, bo, G2D_IMGBUF_GEM); if (ret < 0) { fprintf(stderr, "failed to test copy operation.\n"); goto err_free_src; @@ -769,7 +737,7 @@ int main(int argc, char **argv) wait_for_user_input(0); - ret = test_case.copy_with_scale(dev, src, bo, G2D_IMGBUF_GEM); + ret = g2d_copy_with_scale_test(dev, src, bo, G2D_IMGBUF_GEM); if (ret < 0) { fprintf(stderr, "failed to test copy and scale operation.\n"); goto err_free_src; @@ -777,7 +745,7 @@ int main(int argc, char **argv) wait_for_user_input(0); - ret = test_case.checkerboard(dev, src, bo, G2D_IMGBUF_GEM); + ret = g2d_checkerboard_test(dev, src, bo, G2D_IMGBUF_GEM); if (ret < 0) { fprintf(stderr, "failed to issue checkerboard test.\n"); goto err_free_src; @@ -794,7 +762,7 @@ int main(int argc, char **argv) * Disable the test for now, until the kernel code has been sanitized. */ #if 0 - ret = test_case.blend(dev, src, bo, G2D_IMGBUF_USERPTR); + ret = g2d_blend_test(dev, src, bo, G2D_IMGBUF_USERPTR); if (ret < 0) fprintf(stderr, "failed to test blend operation.\n"); commit 3aeea6198d3c62bab2ce98450f47ff91e402784b Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:10 2015 +0200 tests/exynos: remove unused define It doesn't make sense to limit the number of test cases anyway. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index 6af9277..080d178 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -34,7 +34,6 @@ #include "exynos_fimg2d.h" #define DRM_MODULE_NAME "exynos" -#define MAX_TEST_CASE 8 static unsigned int screen_width, screen_height; commit 0536d33f077ef92b5e9577c32a8772dd79f31c43 Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:09 2015 +0200 tests/exynos: clean struct connector Remove all unused struct members. An inspection of the git history shows that these members were also never used in the past. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index 64dacfa..6af9277 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -65,17 +65,9 @@ struct fimg2d_test_case { struct connector { uint32_t id; char mode_str[64]; - char format_str[5]; - unsigned int fourcc; drmModeModeInfo *mode; drmModeEncoder *encoder; int crtc; - int pipe; - int plane_zpos; - unsigned int fb_id[2], current_fb_id; - struct timeval start; - - int swap_count; }; static void connector_find_mode(int fd, struct connector *c, @@ -750,8 +742,6 @@ int main(int argc, char **argv) if (ret < 0) goto err_destroy_buffer; - con.plane_zpos = -1; - memset(bo->vaddr, 0xff, screen_width * screen_height * 4); ret = drm_set_crtc(dev, &con, fb_id); commit 53b1081da1b05e6225d93d4a6890fba4eba8313e Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:08 2015 +0200 exynos/fimg2d: simplify g2d_fini() free()ing a nullptr is a noop, so remove the check. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c index 5ea42e6..24a06d0 100644 --- a/exynos/exynos_fimg2d.c +++ b/exynos/exynos_fimg2d.c @@ -254,8 +254,7 @@ struct g2d_context *g2d_init(int fd) void g2d_fini(struct g2d_context *ctx) { - if (ctx) - free(ctx); + free(ctx); } /** commit 8d8bbbb9722c3eed3e2736da95d2fef4613d97fb Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:07 2015 +0200 tests/exynos: replace return by break The 'usage' function already does exit(0), so that this 'return -EINVAL' is never called. Just put a break there to avoid confusion. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/tests/exynos/exynos_fimg2d_test.c b/tests/exynos/exynos_fimg2d_test.c index e64bb32..64dacfa 100644 --- a/tests/exynos/exynos_fimg2d_test.c +++ b/tests/exynos/exynos_fimg2d_test.c @@ -689,7 +689,7 @@ int main(int argc, char **argv) break; default: usage(argv[0]); - return -EINVAL; + break; } } commit 7da8f07274cfe57cfd157e184f1f0b4c15405b9e Author: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Date: Fri Jun 12 20:15:06 2015 +0200 exynos: fimg2d: fix return codes Even if flushing the command buffer doesn't succeed, the G2D calls would still return zero. Fix this by just passing the flush return code. In fact error handling currently ignores the fact that g2d_add_cmd() can fail. This is going to be handled in a later patch. Signed-off-by: Tobias Jakobi <tjak...@math.uni-bielefeld.de> Acked-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/exynos/exynos_fimg2d.c b/exynos/exynos_fimg2d.c index 86ae898..5ea42e6 100644 --- a/exynos/exynos_fimg2d.c +++ b/exynos/exynos_fimg2d.c @@ -330,9 +330,7 @@ g2d_solid_fill(struct g2d_context *ctx, struct g2d_image *img, bitblt.data.fast_solid_color_fill_en = 1; g2d_add_cmd(ctx, BITBLT_COMMAND_REG, bitblt.val); - g2d_flush(ctx); - - return 0; + return g2d_flush(ctx); } /** @@ -415,9 +413,7 @@ g2d_copy(struct g2d_context *ctx, struct g2d_image *src, rop4.data.unmasked_rop3 = G2D_ROP3_SRC; g2d_add_cmd(ctx, ROP4_REG, rop4.val); - g2d_flush(ctx); - - return 0; + return g2d_flush(ctx); } /** @@ -527,9 +523,7 @@ g2d_copy_with_scale(struct g2d_context *ctx, struct g2d_image *src, pt.data.y = dst_y + dst_h; g2d_add_cmd(ctx, DST_RIGHT_BOTTOM_REG, pt.val); - g2d_flush(ctx); - - return 0; + return g2d_flush(ctx); } /** @@ -636,9 +630,7 @@ g2d_blend(struct g2d_context *ctx, struct g2d_image *src, pt.data.y = dst_y + h; g2d_add_cmd(ctx, DST_RIGHT_BOTTOM_REG, pt.val); - g2d_flush(ctx); - - return 0; + return g2d_flush(ctx); } /** @@ -766,7 +758,5 @@ g2d_scale_and_blend(struct g2d_context *ctx, struct g2d_image *src, pt.data.y = dst_y + dst_h; g2d_add_cmd(ctx, DST_RIGHT_BOTTOM_REG, pt.val); - g2d_flush(ctx); - - return 0; + return g2d_flush(ctx); } commit 47a2de27a0f087908e3063fdd6dfdececd2db75b Author: Matt Turner <matts...@gmail.com> Date: Mon Jun 22 09:56:33 2015 -0700 configure: Add flag to disable valgrind support. v2 [Emil Velikov]: Autodetect valgrind. Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/configure.ac b/configure.ac index 78a0010..32d034e 100644 --- a/configure.ac +++ b/configure.ac @@ -403,11 +403,25 @@ else fi AM_CONDITIONAL([HAVE_MANPAGES_STYLESHEET], [test "x$HAVE_MANPAGES_STYLESHEET" = "xyes"]) +AC_ARG_ENABLE(valgrind, + [AS_HELP_STRING([--enable-valgrind], + [Build libdrm with valgrind support (default: auto)])], + [VALGRIND=$enableval], [VALGRIND=yes]) PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no]) -if test "x$have_valgrind" = "xyes"; then +AC_MSG_CHECKING([whether to enable Valgrind support]) +if test "x$VALGRIND" = xauto; then + VALGRIND="$have_valgrind" +fi + +if test "x$VALGRIND" = "xyes"; then + if ! test "x$have_valgrind" = xyes; then + AC_MSG_ERROR([Valgrind support required but not present]) + fi AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings]) fi +AC_MSG_RESULT([$VALGRIND]) + AC_ARG_WITH([kernel-source], [AS_HELP_STRING([--with-kernel-source], [specify path to linux kernel source])], commit 5f76273d51fee5c176302ae5f57673461b80333b Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Mon Jun 29 17:32:21 2015 +0100 xf86drmMode: include config.h before anything else Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/xf86drmMode.c b/xf86drmMode.c index 206d1c2..f4b8d14 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -37,6 +37,11 @@ * TODO the types we are after are defined in diffrent headers on diffrent * platforms find which headers to include to get uint32_t */ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + #include <limits.h> #include <stdint.h> #include <stdlib.h> @@ -44,10 +49,6 @@ #include <stdio.h> #include <stdbool.h> -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - #include "xf86drmMode.h" #include "xf86drm.h" #include <drm.h> commit 8426967d4e34ef5924a30166662c60d1003072bd Author: Emil Velikov <emil.l.veli...@gmail.com> Date: Mon Jun 22 17:58:05 2015 +0000 xf86drmMode: remove unused valgrind(VG) macros Signed-off-by: Emil Velikov <emil.l.veli...@gmail.com> diff --git a/xf86drmMode.c b/xf86drmMode.c index 73c8695..206d1c2 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -56,14 +56,6 @@ #include <unistd.h> #include <errno.h> -#ifdef HAVE_VALGRIND -#include <valgrind.h> -#include <memcheck.h> -#define VG(x) x -#else -#define VG(x) -#endif - #define memclear(s) memset(&s, 0, sizeof(s)) #define U642VOID(x) ((void *)(unsigned long)(x)) commit 32471b265c6fbce6d519f0420a0ffeb608296502 Author: Daniel Stone <dani...@collabora.com> Date: Mon Jun 22 17:26:03 2015 +0100 Add blob property create/destroy ioctl wrappers v2: Use memclear to zero out structure. Signed-off-by: Daniel Stone <dani...@collabora.com> Reviewed-by: Rob Clark <robcl...@freedesktop.org> diff --git a/include/drm/drm.h b/include/drm/drm.h index d1dc3e3..167b7b8 100644 --- a/include/drm/drm.h +++ b/include/drm/drm.h @@ -766,6 +766,8 @@ struct drm_prime_handle { #define DRM_IOCTL_MODE_OBJ_SETPROPERTY DRM_IOWR(0xBA, struct drm_mode_obj_set_property) #define DRM_IOCTL_MODE_CURSOR2 DRM_IOWR(0xBB, struct drm_mode_cursor2) #define DRM_IOCTL_MODE_ATOMIC DRM_IOWR(0xBC, struct drm_mode_atomic) +#define DRM_IOCTL_MODE_CREATEPROPBLOB DRM_IOWR(0xBD, struct drm_mode_create_blob) +#define DRM_IOCTL_MODE_DESTROYPROPBLOB DRM_IOWR(0xBE, struct drm_mode_destroy_blob) /** * Device specific ioctls should only be in their respective headers diff --git a/include/drm/drm_mode.h b/include/drm/drm_mode.h index 66f856f..69c1ac3 100644 --- a/include/drm/drm_mode.h +++ b/include/drm/drm_mode.h @@ -523,4 +523,25 @@ struct drm_mode_atomic { __u64 user_data; }; +/** + * Create a new 'blob' data property, copying length bytes from data pointer, + * and returning new blob ID. + */ +struct drm_mode_create_blob { + /** Pointer to data to copy. */ + __u64 data; + /** Length of data to copy. */ + __u32 length; + /** Return: new property ID. */ + __u32 blob_id; +}; + +/** + * Destroy a user-created blob property. + */ +struct drm_mode_destroy_blob { + __u32 blob_id; +}; + + #endif diff --git a/xf86drmMode.c b/xf86drmMode.c index a75eca3..73c8695 100644 --- a/xf86drmMode.c +++ b/xf86drmMode.c @@ -1387,3 +1387,37 @@ out: return ret; } + +int +drmModeCreatePropertyBlob(int fd, const void *data, size_t length, uint32_t *id) +{ + struct drm_mode_create_blob create; + int ret; + + if (length >= 0xffffffff) + return -ERANGE; + + memclear(create); + + create.length = length; + create.data = (uintptr_t) data; + create.blob_id = 0; + *id = 0; + + ret = DRM_IOCTL(fd, DRM_IOCTL_MODE_CREATEPROPBLOB, &create); + if (ret != 0) + return ret; + + *id = create.blob_id; + return 0; +} + +int +drmModeDestroyPropertyBlob(int fd, uint32_t id) +{ + struct drm_mode_destroy_blob destroy; + + memclear(destroy); + destroy.blob_id = id; + return DRM_IOCTL(fd, DRM_IOCTL_MODE_DESTROYPROPBLOB, &destroy); +} diff --git a/xf86drmMode.h b/xf86drmMode.h index 317ea23..1c10023 100644 --- a/xf86drmMode.h +++ b/xf86drmMode.h @@ -503,6 +503,11 @@ extern int drmModeAtomicCommit(int fd, uint32_t flags, void *user_data); +extern int drmModeCreatePropertyBlob(int fd, const void *data, size_t size, + uint32_t *id); +extern int drmModeDestroyPropertyBlob(int fd, uint32_t id); + + #if defined(__cplusplus) || defined(c_plusplus) } #endif commit ed44e0b9585c563905447eceed12af9c1c7ca8d4 Author: Ville Syrjälä <ville.syrj...@linux.intel.com> Date: Mon Jun 22 17:26:02 2015 +0100 -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: https://lists.debian.org/e1zajyh-0000u6...@moszumanska.debian.org