From: Chia-I Wu Date: Wed, 4 Mar 2015 19:02:12 +0000 (-0700) Subject: ilo: add some more winsys functions X-Git-Tag: android-x86-6.0-r1~11510 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=af4cff5d6f74460d34bc10f9dc3a9f91e4e11f2d;p=android-x86%2Fexternal-mesa.git ilo: add some more winsys functions Add intel_winsys_get_reset_stats(), intel_winsys_import_userptr(), and intel_bo_map_async(). The latter two are stubs, but we are not going to use them immediately either. --- diff --git a/src/gallium/drivers/ilo/intel_winsys.h b/src/gallium/drivers/ilo/intel_winsys.h index 4ee35d7f5a9..5a199e2e819 100644 --- a/src/gallium/drivers/ilo/intel_winsys.h +++ b/src/gallium/drivers/ilo/intel_winsys.h @@ -112,6 +112,17 @@ intel_winsys_read_reg(struct intel_winsys *winsys, uint32_t reg, uint64_t *val); /** + * Return the numbers of submissions lost due to GPU reset. + * + * \param active_lost Number of lost active/guilty submissions + * \param pending_lost Number of lost pending/innocent submissions + */ +int +intel_winsys_get_reset_stats(struct intel_winsys *winsys, + struct intel_context *ctx, + uint32_t *active_lost, + uint32_t *pending_lost); +/** * Allocate a buffer object. * * \param name Informative description of the bo. @@ -142,6 +153,19 @@ intel_winsys_alloc_buffer(struct intel_winsys *winsys, } /** + * Create a bo from a user memory pointer. Both \p userptr and (\p pitch * \p + * height) must be page aligned. + */ +struct intel_bo * +intel_winsys_import_userptr(struct intel_winsys *winsys, + const char *name, + void *userptr, + enum intel_tiling_mode tiling, + unsigned long pitch, + unsigned long height, + unsigned long flags); + +/** * Create a bo from a winsys handle. */ struct intel_bo * @@ -223,12 +247,16 @@ intel_bo_unreference(struct intel_bo *bo); * sequential writes, but reads would be very slow. Callers always have a * linear view of the bo. * - * map_gtt_async() is similar to map_gtt(), except that it does not block. + * map_async() and map_gtt_async() work similar to map() and map_gtt() + * respectively, except that they do not block. */ void * intel_bo_map(struct intel_bo *bo, bool write_enable); void * +intel_bo_map_async(struct intel_bo *bo); + +void * intel_bo_map_gtt(struct intel_bo *bo); void * diff --git a/src/gallium/winsys/intel/drm/intel_drm_winsys.c b/src/gallium/winsys/intel/drm/intel_drm_winsys.c index 9b94ac6b3a6..a41cbb04d72 100644 --- a/src/gallium/winsys/intel/drm/intel_drm_winsys.c +++ b/src/gallium/winsys/intel/drm/intel_drm_winsys.c @@ -55,6 +55,12 @@ struct intel_winsys { struct drm_intel_decode *decode; }; +static drm_intel_context * +gem_ctx(const struct intel_context *ctx) +{ + return (drm_intel_context *) ctx; +} + static drm_intel_bo * gem_bo(const struct intel_bo *bo) { @@ -244,7 +250,7 @@ void intel_winsys_destroy_context(struct intel_winsys *winsys, struct intel_context *ctx) { - drm_intel_gem_context_destroy((drm_intel_context *) ctx); + drm_intel_gem_context_destroy(gem_ctx(ctx)); } int @@ -254,6 +260,18 @@ intel_winsys_read_reg(struct intel_winsys *winsys, return drm_intel_reg_read(winsys->bufmgr, reg, val); } +int +intel_winsys_get_reset_stats(struct intel_winsys *winsys, + struct intel_context *ctx, + uint32_t *active_lost, + uint32_t *pending_lost) +{ + uint32_t reset_count; + + return drm_intel_get_reset_stats(gem_ctx(ctx), + &reset_count, active_lost, pending_lost); +} + struct intel_bo * intel_winsys_alloc_bo(struct intel_winsys *winsys, const char *name, @@ -308,6 +326,18 @@ intel_winsys_alloc_bo(struct intel_winsys *winsys, } struct intel_bo * +intel_winsys_import_userptr(struct intel_winsys *winsys, + const char *name, + void *userptr, + enum intel_tiling_mode tiling, + unsigned long pitch, + unsigned long height, + unsigned long flags) +{ + return NULL; +} + +struct intel_bo * intel_winsys_import_handle(struct intel_winsys *winsys, const char *name, const struct winsys_handle *handle, @@ -497,6 +527,12 @@ intel_bo_map(struct intel_bo *bo, bool write_enable) } void * +intel_bo_map_async(struct intel_bo *bo) +{ + return NULL; +} + +void * intel_bo_map_gtt(struct intel_bo *bo) { int err;