diff --git a/src/mesa/drivers/dri/i965/brw_bufmgr.c b/src/mesa/drivers/dri/i965/brw_bufmgr.c index 469895ed6b0..bd46035c37c 100644 --- a/src/mesa/drivers/dri/i965/brw_bufmgr.c +++ b/src/mesa/drivers/dri/i965/brw_bufmgr.c @@ -84,8 +84,6 @@ #define VG_DEFINED(ptr, size) VG(VALGRIND_MAKE_MEM_DEFINED(ptr, size)) #define VG_NOACCESS(ptr, size) VG(VALGRIND_MAKE_MEM_NOACCESS(ptr, size)) -#define memclear(s) memset(&s, 0, sizeof(s)) - #define PAGE_SIZE 4096 #define FILE_DEBUG_FLAG DEBUG_BUFMGR @@ -226,13 +224,9 @@ int brw_bo_busy(struct brw_bo *bo) { struct brw_bufmgr *bufmgr = bo->bufmgr; - struct drm_i915_gem_busy busy; - int ret; + struct drm_i915_gem_busy busy = { .handle = bo->gem_handle }; - memclear(busy); - busy.handle = bo->gem_handle; - - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_BUSY, &busy); + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_BUSY, &busy); if (ret == 0) { bo->idle = !busy.busy; return busy.busy; @@ -243,12 +237,12 @@ brw_bo_busy(struct brw_bo *bo) int brw_bo_madvise(struct brw_bo *bo, int state) { - struct drm_i915_gem_madvise madv; + struct drm_i915_gem_madvise madv = { + .handle = bo->gem_handle, + .madv = state, + .retained = 1, + }; - memclear(madv); - madv.handle = bo->gem_handle; - madv.madv = state; - madv.retained = 1; drmIoctl(bo->bufmgr->fd, DRM_IOCTL_I915_GEM_MADVISE, &madv); return madv.retained; @@ -366,8 +360,6 @@ retry: } if (!alloc_from_cache) { - struct drm_i915_gem_create create; - bo = calloc(1, sizeof(*bo)); if (!bo) goto err; @@ -375,8 +367,7 @@ retry: bo->size = bo_size; bo->idle = true; - memclear(create); - create.size = bo_size; + struct drm_i915_gem_create create = { .size = bo_size }; /* All new BOs we get from the kernel are zeroed, so we don't need to * worry about that here. @@ -500,9 +491,6 @@ brw_bo_gem_create_from_name(struct brw_bufmgr *bufmgr, const char *name, unsigned int handle) { struct brw_bo *bo; - int ret; - struct drm_gem_open open_arg; - struct drm_i915_gem_get_tiling get_tiling; /* At the moment most applications only have a few named bo. * For instance, in a DRI client only the render buffers passed @@ -517,9 +505,8 @@ brw_bo_gem_create_from_name(struct brw_bufmgr *bufmgr, goto out; } - memclear(open_arg); - open_arg.name = handle; - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_OPEN, &open_arg); + struct drm_gem_open open_arg = { .name = handle }; + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_OPEN, &open_arg); if (ret != 0) { DBG("Couldn't reference %s handle 0x%08x: %s\n", name, handle, strerror(errno)); @@ -554,8 +541,7 @@ brw_bo_gem_create_from_name(struct brw_bufmgr *bufmgr, _mesa_hash_table_insert(bufmgr->handle_table, &bo->gem_handle, bo); _mesa_hash_table_insert(bufmgr->name_table, &bo->global_name, bo); - memclear(get_tiling); - get_tiling.handle = bo->gem_handle; + struct drm_i915_gem_get_tiling get_tiling = { .handle = bo->gem_handle }; ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling); if (ret != 0) goto err_unref; @@ -579,8 +565,6 @@ static void bo_free(struct brw_bo *bo) { struct brw_bufmgr *bufmgr = bo->bufmgr; - struct drm_gem_close close; - int ret; if (bo->map_cpu) { VG_NOACCESS(bo->map_cpu, bo->size); @@ -608,9 +592,8 @@ bo_free(struct brw_bo *bo) } /* Close this object */ - memclear(close); - close.handle = bo->gem_handle; - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_CLOSE, &close); + struct drm_gem_close close = { .handle = bo->gem_handle }; + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_CLOSE, &close); if (ret != 0) { DBG("DRM_IOCTL_GEM_CLOSE %d failed (%s): %s\n", bo->gem_handle, bo->name, strerror(errno)); @@ -739,14 +722,12 @@ brw_bo_map_cpu(struct brw_context *brw, struct brw_bo *bo, unsigned flags) assert(bo->cache_coherent || !(flags & MAP_WRITE)); if (!bo->map_cpu) { - struct drm_i915_gem_mmap mmap_arg; - void *map; - DBG("brw_bo_map_cpu: %d (%s)\n", bo->gem_handle, bo->name); - memclear(mmap_arg); - mmap_arg.handle = bo->gem_handle; - mmap_arg.size = bo->size; + struct drm_i915_gem_mmap mmap_arg = { + .handle = bo->gem_handle, + .size = bo->size, + }; int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg); if (ret != 0) { ret = -errno; @@ -754,7 +735,7 @@ brw_bo_map_cpu(struct brw_context *brw, struct brw_bo *bo, unsigned flags) __FILE__, __LINE__, bo->gem_handle, bo->name, strerror(errno)); return NULL; } - map = (void *) (uintptr_t) mmap_arg.addr_ptr; + void *map = (void *) (uintptr_t) mmap_arg.addr_ptr; VG_DEFINED(map, bo->size); if (p_atomic_cmpxchg(&bo->map_cpu, NULL, map)) { @@ -804,15 +785,13 @@ brw_bo_map_wc(struct brw_context *brw, struct brw_bo *bo, unsigned flags) return NULL; if (!bo->map_wc) { - struct drm_i915_gem_mmap mmap_arg; - void *map; - DBG("brw_bo_map_wc: %d (%s)\n", bo->gem_handle, bo->name); - memclear(mmap_arg); - mmap_arg.handle = bo->gem_handle; - mmap_arg.size = bo->size; - mmap_arg.flags = I915_MMAP_WC; + struct drm_i915_gem_mmap mmap_arg = { + .handle = bo->gem_handle, + .size = bo->size, + .flags = I915_MMAP_WC, + }; int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_MMAP, &mmap_arg); if (ret != 0) { ret = -errno; @@ -821,7 +800,7 @@ brw_bo_map_wc(struct brw_context *brw, struct brw_bo *bo, unsigned flags) return NULL; } - map = (void *) (uintptr_t) mmap_arg.addr_ptr; + void *map = (void *) (uintptr_t) mmap_arg.addr_ptr; VG_DEFINED(map, bo->size); if (p_atomic_cmpxchg(&bo->map_wc, NULL, map)) { @@ -870,13 +849,9 @@ brw_bo_map_gtt(struct brw_context *brw, struct brw_bo *bo, unsigned flags) /* Get a mapping of the buffer if we haven't before. */ if (bo->map_gtt == NULL) { - struct drm_i915_gem_mmap_gtt mmap_arg; - void *map; - DBG("bo_map_gtt: mmap %d (%s)\n", bo->gem_handle, bo->name); - memclear(mmap_arg); - mmap_arg.handle = bo->gem_handle; + struct drm_i915_gem_mmap_gtt mmap_arg = { .handle = bo->gem_handle }; /* Get the fake offset back... */ int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_MMAP_GTT, &mmap_arg); @@ -887,8 +862,8 @@ brw_bo_map_gtt(struct brw_context *brw, struct brw_bo *bo, unsigned flags) } /* and mmap it. */ - map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, - MAP_SHARED, bufmgr->fd, mmap_arg.offset); + void *map = drm_mmap(0, bo->size, PROT_READ | PROT_WRITE, + MAP_SHARED, bufmgr->fd, mmap_arg.offset); if (map == MAP_FAILED) { DBG("%s:%d: Error mapping buffer %d (%s): %s .\n", __FILE__, __LINE__, bo->gem_handle, bo->name, strerror(errno)); @@ -990,15 +965,15 @@ brw_bo_subdata(struct brw_bo *bo, uint64_t offset, uint64_t size, const void *data) { struct brw_bufmgr *bufmgr = bo->bufmgr; - struct drm_i915_gem_pwrite pwrite; - int ret; - memclear(pwrite); - pwrite.handle = bo->gem_handle; - pwrite.offset = offset; - pwrite.size = size; - pwrite.data_ptr = (uint64_t) (uintptr_t) data; - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_PWRITE, &pwrite); + struct drm_i915_gem_pwrite pwrite = { + .handle = bo->gem_handle, + .offset = offset, + .size = size, + .data_ptr = (uint64_t) (uintptr_t) data, + }; + + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_PWRITE, &pwrite); if (ret != 0) { ret = -errno; DBG("%s:%d: Error writing data to buffer %d: " @@ -1050,17 +1025,16 @@ int brw_bo_wait(struct brw_bo *bo, int64_t timeout_ns) { struct brw_bufmgr *bufmgr = bo->bufmgr; - struct drm_i915_gem_wait wait; - int ret; /* If we know it's idle, don't bother with the kernel round trip */ if (bo->idle && !bo->external) return 0; - memclear(wait); - wait.bo_handle = bo->gem_handle; - wait.timeout_ns = timeout_ns; - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_WAIT, &wait); + struct drm_i915_gem_wait wait = { + .bo_handle = bo->gem_handle, + .timeout_ns = timeout_ns, + }; + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_WAIT, &wait); if (ret == -1) return -errno; @@ -1136,13 +1110,11 @@ brw_bo_get_tiling(struct brw_bo *bo, uint32_t *tiling_mode, struct brw_bo * brw_bo_gem_create_from_prime(struct brw_bufmgr *bufmgr, int prime_fd) { - int ret; uint32_t handle; struct brw_bo *bo; - struct drm_i915_gem_get_tiling get_tiling; mtx_lock(&bufmgr->lock); - ret = drmPrimeFDToHandle(bufmgr->fd, prime_fd, &handle); + int ret = drmPrimeFDToHandle(bufmgr->fd, prime_fd, &handle); if (ret) { DBG("create_from_prime: failed to obtain handle from fd: %s\n", strerror(errno)); @@ -1185,8 +1157,7 @@ brw_bo_gem_create_from_prime(struct brw_bufmgr *bufmgr, int prime_fd) bo->reusable = false; bo->external = true; - memclear(get_tiling); - get_tiling.handle = bo->gem_handle; + struct drm_i915_gem_get_tiling get_tiling = { .handle = bo->gem_handle }; if (drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_GET_TILING, &get_tiling)) goto err; @@ -1249,10 +1220,8 @@ brw_bo_flink(struct brw_bo *bo, uint32_t *name) struct brw_bufmgr *bufmgr = bo->bufmgr; if (!bo->global_name) { - struct drm_gem_flink flink; + struct drm_gem_flink flink = { .handle = bo->gem_handle }; - memclear(flink); - flink.handle = bo->gem_handle; if (drmIoctl(bufmgr->fd, DRM_IOCTL_GEM_FLINK, &flink)) return -errno; @@ -1330,11 +1299,8 @@ init_cache_buckets(struct brw_bufmgr *bufmgr) uint32_t brw_create_hw_context(struct brw_bufmgr *bufmgr) { - struct drm_i915_gem_context_create create; - int ret; - - memclear(create); - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create); + struct drm_i915_gem_context_create create = { }; + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create); if (ret != 0) { DBG("DRM_IOCTL_I915_GEM_CONTEXT_CREATE failed: %s\n", strerror(errno)); return 0; @@ -1365,7 +1331,7 @@ brw_hw_context_set_priority(struct brw_bufmgr *bufmgr, void brw_destroy_hw_context(struct brw_bufmgr *bufmgr, uint32_t ctx_id) { - struct drm_i915_gem_context_destroy d = {.ctx_id = ctx_id }; + struct drm_i915_gem_context_destroy d = { .ctx_id = ctx_id }; if (ctx_id != 0 && drmIoctl(bufmgr->fd, DRM_IOCTL_I915_GEM_CONTEXT_DESTROY, &d) != 0) { @@ -1377,13 +1343,8 @@ brw_destroy_hw_context(struct brw_bufmgr *bufmgr, uint32_t ctx_id) int brw_reg_read(struct brw_bufmgr *bufmgr, uint32_t offset, uint64_t *result) { - struct drm_i915_reg_read reg_read; - int ret; - - memclear(reg_read); - reg_read.offset = offset; - - ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_REG_READ, ®_read); + struct drm_i915_reg_read reg_read = { .offset = offset }; + int ret = drmIoctl(bufmgr->fd, DRM_IOCTL_I915_REG_READ, ®_read); *result = reg_read.val; return ret; @@ -1392,12 +1353,9 @@ brw_reg_read(struct brw_bufmgr *bufmgr, uint32_t offset, uint64_t *result) static int gem_param(int fd, int name) { - drm_i915_getparam_t gp; int v = -1; /* No param uses (yet) the sign bit, reserve it for errors */ - memset(&gp, 0, sizeof(gp)); - gp.param = name; - gp.value = &v; + struct drm_i915_getparam gp = { .param = name, .value = &v }; if (drmIoctl(fd, DRM_IOCTL_I915_GETPARAM, &gp)) return -1;