From f921131a5cebc233749a86cdd44b409c0cecc4ef Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Tue, 19 Aug 2014 10:02:35 +0100 Subject: [PATCH] ilo: fold drm_intel_get_aperture_sizes() within probe_winsys() ... and store the value in intel_winsys_info/ilo_dev_info. Suggested-by: Chia-I Wu Signed-off-by: Emil Velikov olv: check for errors and report raw values --- src/gallium/drivers/ilo/ilo_common.h | 2 ++ src/gallium/drivers/ilo/ilo_screen.c | 5 +++-- src/gallium/winsys/intel/drm/intel_drm_winsys.c | 16 ++++++---------- src/gallium/winsys/intel/intel_winsys.h | 7 ++++--- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/gallium/drivers/ilo/ilo_common.h b/src/gallium/drivers/ilo/ilo_common.h index dd31f749bbf..e4f28b38122 100644 --- a/src/gallium/drivers/ilo/ilo_common.h +++ b/src/gallium/drivers/ilo/ilo_common.h @@ -68,6 +68,8 @@ enum ilo_debug { struct ilo_dev_info { /* these mirror intel_winsys_info */ int devid; + size_t aperture_total; + size_t aperture_mappable; int max_batch_size; bool has_llc; bool has_address_swizzling; diff --git a/src/gallium/drivers/ilo/ilo_screen.c b/src/gallium/drivers/ilo/ilo_screen.c index ad59d6dfb94..72d66acf131 100644 --- a/src/gallium/drivers/ilo/ilo_screen.c +++ b/src/gallium/drivers/ilo/ilo_screen.c @@ -448,8 +448,7 @@ ilo_get_param(struct pipe_screen *screen, enum pipe_cap param) * assume that there's some fragmentation, and we start doing extra * flushing, etc. That's the big cliff apps will care about. */ - const int gpu_mappable_megabytes = - intel_winsys_get_aperture_size(is->winsys) * 3 / 4; + const uint64_t gpu_mappable_megabytes = is->dev.aperture_total * 3 / 4; uint64_t system_memory; if (!os_get_total_physical_memory(&system_memory)) @@ -638,6 +637,8 @@ static bool init_dev(struct ilo_dev_info *dev, const struct intel_winsys_info *info) { dev->devid = info->devid; + dev->aperture_total = info->aperture_total; + dev->aperture_mappable = info->aperture_mappable; dev->max_batch_size = info->max_batch_size; dev->has_llc = info->has_llc; dev->has_address_swizzling = info->has_address_swizzling; diff --git a/src/gallium/winsys/intel/drm/intel_drm_winsys.c b/src/gallium/winsys/intel/drm/intel_drm_winsys.c index b394e5fe756..f94a1cb9f33 100644 --- a/src/gallium/winsys/intel/drm/intel_drm_winsys.c +++ b/src/gallium/winsys/intel/drm/intel_drm_winsys.c @@ -139,6 +139,12 @@ probe_winsys(struct intel_winsys *winsys) info->devid = drm_intel_bufmgr_gem_get_devid(winsys->bufmgr); + if (drm_intel_get_aperture_sizes(winsys->fd, + &info->aperture_mappable, &info->aperture_total)) { + debug_error("failed to query aperture sizes"); + return false; + } + info->max_batch_size = BATCH_SZ; get_param(winsys, I915_PARAM_HAS_LLC, &val); @@ -223,16 +229,6 @@ intel_winsys_get_info(const struct intel_winsys *winsys) return &winsys->info; } -int -intel_winsys_get_aperture_size(const struct intel_winsys *winsys) -{ - size_t aper_size, mappable_size; - - drm_intel_get_aperture_sizes(winsys->fd, &mappable_size, &aper_size); - - return aper_size >> 20; -} - struct intel_context * intel_winsys_create_context(struct intel_winsys *winsys) { diff --git a/src/gallium/winsys/intel/intel_winsys.h b/src/gallium/winsys/intel/intel_winsys.h index 4bf9a16ee93..679f24817b8 100644 --- a/src/gallium/winsys/intel/intel_winsys.h +++ b/src/gallium/winsys/intel/intel_winsys.h @@ -69,6 +69,10 @@ struct intel_bo; struct intel_winsys_info { int devid; + /* the sizes of the aperture in bytes */ + size_t aperture_total; + size_t aperture_mappable; + int max_batch_size; bool has_llc; bool has_address_swizzling; @@ -91,9 +95,6 @@ intel_winsys_destroy(struct intel_winsys *winsys); const struct intel_winsys_info * intel_winsys_get_info(const struct intel_winsys *winsys); -int -intel_winsys_get_aperture_size(const struct intel_winsys *winsys); - /** * Create a logical context for use with the render ring. */