From: <eve...@ke...> - 2015-05-28 16:03:23
|
tests/kmstest/main.c | 1 tests/modetest/buffers.c | 30 ++++++++++++++-------------- tests/modetest/modetest.c | 49 ++++++++++++++++++++++++---------------------- xf86drm.c | 14 +++++-------- 4 files changed, 48 insertions(+), 46 deletions(-) New commits: commit 97be70b45eccc37e98a1cecf360593f36956ea42 Author: Boris BREZILLON <bor...@fr...> Date: Thu May 28 10:07:43 2015 +0200 tests/kmstest: support atmel-hlcdc Signed-off-by: Boris BREZILLON <bor...@fr...> diff --git a/tests/kmstest/main.c b/tests/kmstest/main.c index 7d50f5b..19ce570 100644 --- a/tests/kmstest/main.c +++ b/tests/kmstest/main.c @@ -64,6 +64,7 @@ static const char *drivers[] = { "exynos", "imx-drm", "rockchip", + "atmel-hlcdc", NULL }; commit e6a10649298312cf0e35284b76f1442886bc9db2 Author: Boris BREZILLON <bor...@fr...> Date: Thu May 28 10:07:42 2015 +0200 modetest: add atmel-hlcdc driver support Signed-off-by: Boris BREZILLON <bor...@fr...> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 19ea173..4eb9eac 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -1495,7 +1495,7 @@ int main(int argc, char **argv) int drop_master = 0; int test_vsync = 0; int test_cursor = 0; - const char *modules[] = { "i915", "radeon", "nouveau", "vmwgfx", "omapdrm", "exynos", "tilcdc", "msm", "sti", "tegra", "imx-drm", "rockchip" }; + const char *modules[] = { "i915", "radeon", "nouveau", "vmwgfx", "omapdrm", "exynos", "tilcdc", "msm", "sti", "tegra", "imx-drm", "rockchip", "atmel-hlcdc" }; char *device = NULL; char *module = NULL; unsigned int i; commit 360a7eacd4961ceab72554d36917f031a05ed030 Author: Tobias Jakobi <tj...@ma...> Date: Wed May 6 14:29:33 2015 +0200 modetest: only select plane with matching format Don't assume that a plane supports any kind of pixelformat but do a check first. v2: Simplify the format check. Signed-off-by: Tobias Jakobi <tj...@ma...> Reviewed-by: Emil Velikov <emi...@gm...> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 57be810..19ea173 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -960,6 +960,18 @@ page_flip_handler(int fd, unsigned int frame, } } +static bool format_support(const drmModePlanePtr ovr, uint32_t fmt) +{ + unsigned int i; + + for (i = 0; i < ovr->count_formats; ++i) { + if (ovr->formats[i] == fmt) + return true; + } + + return false; +} + static int set_plane(struct device *dev, struct plane_arg *p) { drmModePlane *ovr; @@ -990,7 +1002,7 @@ static int set_plane(struct device *dev, struct plane_arg *p) for (i = 0; i < dev->resources->plane_res->count_planes && !plane_id; i++) { ovr = dev->resources->planes[i].plane; - if (!ovr) + if (!ovr || !format_support(ovr, p->fourcc)) continue; if ((ovr->possible_crtcs & (1 << pipe)) && !ovr->crtc_id) commit 85ede61136d541038a941c1eee90379af33e987f Author: Tobias Jakobi <tj...@ma...> Date: Wed May 6 14:22:03 2015 +0200 modetest: make middle SMPTE colors transparent This enables us to check for overlay planes which are located 'below' the primary plane. Since the alpha value only has an effect when creating surfaces with an alpha-pixelformat this doesn't affect the regular XRGB8888 primary surface. Signed-off-by: Tobias Jakobi <tj...@ma...> Acked-by: Emil Velikov <emi...@gm...> diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c index 0b09cfc..ebb14ef 100644 --- a/tests/modetest/buffers.c +++ b/tests/modetest/buffers.c @@ -423,13 +423,13 @@ fill_smpte_rgb16(const struct rgb_info *rgb, unsigned char *mem, MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ }; const uint16_t colors_middle[] = { - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ + MAKE_RGBA(rgb, 0, 0, 192, 127), /* blue */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 192, 0, 192, 127), /* magenta */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 0, 192, 192, 127), /* cyan */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 192, 192, 192, 127), /* grey */ }; const uint16_t colors_bottom[] = { MAKE_RGBA(rgb, 0, 33, 76, 255), /* in-phase */ @@ -547,13 +547,13 @@ fill_smpte_rgb32(const struct rgb_info *rgb, unsigned char *mem, MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ }; const uint32_t colors_middle[] = { - MAKE_RGBA(rgb, 0, 0, 192, 255), /* blue */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 0, 192, 255), /* magenta */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 0, 192, 192, 255), /* cyan */ - MAKE_RGBA(rgb, 19, 19, 19, 255), /* black */ - MAKE_RGBA(rgb, 192, 192, 192, 255), /* grey */ + MAKE_RGBA(rgb, 0, 0, 192, 127), /* blue */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 192, 0, 192, 127), /* magenta */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 0, 192, 192, 127), /* cyan */ + MAKE_RGBA(rgb, 19, 19, 19, 127), /* black */ + MAKE_RGBA(rgb, 192, 192, 192, 127), /* grey */ }; const uint32_t colors_bottom[] = { MAKE_RGBA(rgb, 0, 33, 76, 255), /* in-phase */ commit 4bca42fc504a2051964030daaa49b5ac49bb64d3 Author: Guillaume Desmottes <gui...@co...> Date: Wed Apr 29 10:16:22 2015 +0200 drmPrime*: initialize output args to 0 Fix Valgrind errors because those memory was uninitialized. https://bugs.freedesktop.org/show_bug.cgi?id=90194 Signed-off-by: Guillaume Desmottes <gui...@co...> v2: Explicitly zero the whole struct using memclear. Signed-off-by: Emil Velikov <emi...@gm...> diff --git a/xf86drm.c b/xf86drm.c index 0a66a4a..49da9c7 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -2721,6 +2721,8 @@ int drmPrimeHandleToFD(int fd, uint32_t handle, uint32_t flags, int *prime_fd) struct drm_prime_handle args; int ret; + memclear(args); + args.fd = -1; args.handle = handle; args.flags = flags; ret = drmIoctl(fd, DRM_IOCTL_PRIME_HANDLE_TO_FD, &args); @@ -2736,8 +2738,8 @@ int drmPrimeFDToHandle(int fd, int prime_fd, uint32_t *handle) struct drm_prime_handle args; int ret; + memclear(args); args.fd = prime_fd; - args.flags = 0; ret = drmIoctl(fd, DRM_IOCTL_PRIME_FD_TO_HANDLE, &args); if (ret) return ret; commit 454b14949452c4e44990a8f455bcc307306181bc Author: Jammy Zhou <Jam...@am...> Date: Mon Apr 27 10:29:55 2015 +0800 Fix one warning (v2) xf86drm.c:356:2: warning: comparison of unsigned expression >= 0 is always true [-Wtype-limits] group = (serv_group >= 0) ? serv_group : DRM_DEV_GID; ^ v2: do 'int' cast to fix the warning Signed-off-by: Jammy Zhou <Jam...@am...> Reviewed-by: Jan Vesely <jan...@ru...> Reviewed-by: Emil Velikov <emi...@gm...> diff --git a/xf86drm.c b/xf86drm.c index 2245f99..0a66a4a 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -349,7 +349,7 @@ static int drmOpenDevice(dev_t dev, int minor, int type) } if (drm_server_info) { - group = (serv_group >= 0) ? serv_group : DRM_DEV_GID; + group = ((int)serv_group >= 0) ? serv_group : DRM_DEV_GID; chown_check_return(buf, user, group); chmod(buf, devmode); } commit d0e592d4e9b59d9cc185f1d63b3c1dd818e95098 Author: Emil Velikov <emi...@gm...> Date: Tue Apr 28 13:33:46 2015 +0100 xf86drm: simplify drmMalloc/drmFree Signed-off-by: Emil Velikov <emi...@gm...> Reviewed-by: Alex Deucher <ale...@am...> diff --git a/xf86drm.c b/xf86drm.c index b5a174b..2245f99 100644 --- a/xf86drm.c +++ b/xf86drm.c @@ -141,16 +141,12 @@ void *drmGetHashTable(void) void *drmMalloc(int size) { - void *pt; - if ((pt = malloc(size))) - memset(pt, 0, size); - return pt; + return calloc(1, size); } void drmFree(void *pt) { - if (pt) - free(pt); + free(pt); } /** commit 128344c2cf22385dedece5a3d774d3a24527d2de Author: Emil Velikov <emi...@gm...> Date: Tue Apr 28 13:25:24 2015 +0100 modetest: replace malloc + memset with calloc Signed-off-by: Emil Velikov <emi...@gm...> Reviewed-by: Alex Deucher <ale...@am...> diff --git a/tests/modetest/buffers.c b/tests/modetest/buffers.c index 7e214e8..0b09cfc 100644 --- a/tests/modetest/buffers.c +++ b/tests/modetest/buffers.c @@ -1022,7 +1022,7 @@ bo_create_dumb(int fd, unsigned int width, unsigned int height, unsigned int bpp struct bo *bo; int ret; - bo = malloc(sizeof(*bo)); + bo = calloc(1, sizeof(*bo)); if (bo == NULL) { fprintf(stderr, "failed to allocate buffer object\n"); return NULL; diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index e4a8bbc..57be810 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -561,12 +561,10 @@ static struct resources *get_resources(struct device *dev) struct resources *res; int i; - res = malloc(sizeof *res); + res = calloc(1, sizeof(*res)); if (res == 0) return NULL; - memset(res, 0, sizeof *res); - drmSetClientCap(dev->fd, DRM_CLIENT_CAP_UNIVERSAL_PLANES, 1); res->res = drmModeGetResources(dev->fd); @@ -576,19 +574,14 @@ static struct resources *get_resources(struct device *dev) goto error; } - res->crtcs = malloc(res->res->count_crtcs * sizeof *res->crtcs); - res->encoders = malloc(res->res->count_encoders * sizeof *res->encoders); - res->connectors = malloc(res->res->count_connectors * sizeof *res->connectors); - res->fbs = malloc(res->res->count_fbs * sizeof *res->fbs); + res->crtcs = calloc(res->res->count_crtcs, sizeof(*res->crtcs)); + res->encoders = calloc(res->res->count_encoders, sizeof(*res->encoders)); + res->connectors = calloc(res->res->count_connectors, sizeof(*res->connectors)); + res->fbs = calloc(res->res->count_fbs, sizeof(*res->fbs)); if (!res->crtcs || !res->encoders || !res->connectors || !res->fbs) goto error; - memset(res->crtcs , 0, res->res->count_crtcs * sizeof *res->crtcs); - memset(res->encoders, 0, res->res->count_encoders * sizeof *res->encoders); - memset(res->connectors, 0, res->res->count_connectors * sizeof *res->connectors); - memset(res->fbs, 0, res->res->count_fbs * sizeof *res->fbs); - #define get_resource(_res, __res, type, Type) \ do { \ int i; \ @@ -623,8 +616,8 @@ static struct resources *get_resources(struct device *dev) strerror(errno)); \ continue; \ } \ - obj->props_info = malloc(obj->props->count_props * \ - sizeof *obj->props_info); \ + obj->props_info = calloc(obj->props->count_props, \ + sizeof(*obj->props_info)); \ if (!obj->props_info) \ continue; \ for (j = 0; j < obj->props->count_props; ++j) \ @@ -646,12 +639,10 @@ static struct resources *get_resources(struct device *dev) return res; } - res->planes = malloc(res->plane_res->count_planes * sizeof *res->planes); + res->planes = calloc(res->plane_res->count_planes, sizeof(*res->planes)); if (!res->planes) goto error; - memset(res->planes, 0, res->plane_res->count_planes * sizeof *res->planes); - get_resource(res, plane_res, plane, Plane); get_properties(res, plane_res, plane, PLANE); @@ -1313,7 +1304,7 @@ static int parse_connector(struct pipe_arg *pipe, const char *arg) pipe->num_cons++; } - pipe->con_ids = malloc(pipe->num_cons * sizeof *pipe->con_ids); + pipe->con_ids = calloc(pipe->num_cons, sizeof(*pipe->con_ids)); if (pipe->con_ids == NULL) return -1; commit c78917ee4fe6c787a5de9aaccc5319fdffc9a354 Author: Emil Velikov <emi...@gm...> Date: Tue Apr 28 14:20:30 2015 +0100 modetest: explicitly zero the newly allocated memory Signed-off-by: Emil Velikov <emi...@gm...> Reviewed-by: Alex Deucher <ale...@am...> diff --git a/tests/modetest/modetest.c b/tests/modetest/modetest.c index 7f0c1cc..e4a8bbc 100644 --- a/tests/modetest/modetest.c +++ b/tests/modetest/modetest.c @@ -1368,8 +1368,6 @@ static int parse_plane(struct plane_arg *plane, const char *p) { char *end; - memset(plane, 0, sizeof *plane); - plane->crtc_id = strtoul(p, &end, 10); if (*end != ':') return -EINVAL; @@ -1541,11 +1539,11 @@ int main(int argc, char **argv) fprintf(stderr, "memory allocation failed\n"); return 1; } + memset(&plane_args[plane_count], 0, sizeof(*plane_args)); if (parse_plane(&plane_args[plane_count], optarg) < 0) usage(argv[0]); - plane_args[plane_count].fb_id = 0; plane_count++; break; case 'p': @@ -1559,6 +1557,7 @@ int main(int argc, char **argv) fprintf(stderr, "memory allocation failed\n"); return 1; } + memset(&pipe_args[count], 0, sizeof(*pipe_args)); if (parse_connector(&pipe_args[count], optarg) < 0) usage(argv[0]); @@ -1578,6 +1577,7 @@ int main(int argc, char **argv) fprintf(stderr, "memory allocation failed\n"); return 1; } + memset(&prop_args[prop_count], 0, sizeof(*prop_args)); if (parse_property(&prop_args[prop_count], optarg) < 0) usage(argv[0]); |