From: "Zhigang Gong" <zhigang.gong@linux.intel.com>
To: jeff.mcgee@intel.com, beignet@lists.freedesktop.org
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Beignet] [PATCH 1/2] Add driver callback for updating device info
Date: Mon, 9 Mar 2015 08:21:18 +0800 [thread overview]
Message-ID: <016101d059fe$f78aac10$e6a00430$@linux.intel.com> (raw)
In-Reply-To: <1425339759-19027-1-git-send-email-jeff.mcgee@intel.com>
This patchset is a must for beignet to support CHV. One comment is that we should
put the usage of these new libdrm APIs to conditional block thus we don't break the
build on old system.
For the other parts of the patchset:
Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Thanks,
Zhigang Gong.
> -----Original Message-----
> From: Beignet [mailto:beignet-bounces@lists.freedesktop.org] On Behalf Of
> jeff.mcgee@intel.com
> Sent: Tuesday, March 3, 2015 7:43 AM
> To: beignet@lists.freedesktop.org
> Cc: intel-gfx@lists.freedesktop.org; dri-devel@lists.freedesktop.org
> Subject: [Beignet] [PATCH 1/2] Add driver callback for updating device info
>
> From: Jeff McGee <jeff.mcgee@intel.com>
>
> We need to update some fields of the device's cl_device_id struct at runtime
> using driver-specific methods. It is best to group all such updates into a single
> driver callback to avoid opening/initing and deiniting/closing the device multiple
> times.
>
> Signed-off-by: Jeff McGee <jeff.mcgee@intel.com>
> ---
> src/cl_device_id.c | 20 ++------------------
> src/cl_driver.h | 4 ++++
> src/cl_driver_defs.c | 1 +
> src/intel/intel_driver.c | 36 ++++++++++++++++++++++++++++++++++++
> 4 files changed, 43 insertions(+), 18 deletions(-)
>
> diff --git a/src/cl_device_id.c b/src/cl_device_id.c index 4e01c9f..fefcef3 100644
> --- a/src/cl_device_id.c
> +++ b/src/cl_device_id.c
> @@ -506,24 +506,8 @@ skl_gt4_break:
> ret->profile_sz = strlen(ret->profile) + 1;
> }
>
> -#ifdef HAS_USERPTR
> - cl_driver dummy = cl_driver_new(NULL);
> - cl_buffer_mgr bufmgr = cl_driver_get_bufmgr(dummy);
> -
> - const size_t sz = 4096;
> - void* host_ptr = cl_aligned_malloc(sz, 4096);;
> - if (host_ptr != NULL) {
> - cl_buffer bo = cl_buffer_alloc_userptr(bufmgr, "CL memory object",
> host_ptr, sz, 0);
> - if (bo == NULL)
> - ret->host_unified_memory = CL_FALSE;
> - else
> - cl_buffer_unreference(bo);
> - cl_free(host_ptr);
> - }
> - else
> - ret->host_unified_memory = CL_FALSE;
> - cl_driver_delete(dummy);
> -#endif
> + /* Apply any driver-dependent updates to the device info */
> + cl_driver_update_device_info(ret);
>
> struct sysinfo info;
> if (sysinfo(&info) == 0) {
> diff --git a/src/cl_driver.h b/src/cl_driver.h index 16f8bba..3f54a27 100644
> --- a/src/cl_driver.h
> +++ b/src/cl_driver.h
> @@ -376,6 +376,10 @@ extern cl_buffer_get_tiling_align_cb
> *cl_buffer_get_tiling_align; typedef int (cl_driver_get_device_id_cb)(void);
> extern cl_driver_get_device_id_cb *cl_driver_get_device_id;
>
> +/* Update the device info */
> +typedef void (cl_driver_update_device_info_cb)(cl_device_id device);
> +extern cl_driver_update_device_info_cb *cl_driver_update_device_info;
> +
>
> /***************************************************************
> ***********
> * cl_khr_gl_sharing.
>
> ****************************************************************
> **********/
> diff --git a/src/cl_driver_defs.c b/src/cl_driver_defs.c index 2b68539..9a47210
> 100644
> --- a/src/cl_driver_defs.c
> +++ b/src/cl_driver_defs.c
> @@ -26,6 +26,7 @@ LOCAL cl_driver_delete_cb *cl_driver_delete = NULL;
> LOCAL cl_driver_get_bufmgr_cb *cl_driver_get_bufmgr = NULL; LOCAL
> cl_driver_get_ver_cb *cl_driver_get_ver = NULL; LOCAL
> cl_driver_get_device_id_cb *cl_driver_get_device_id = NULL;
> +LOCAL cl_driver_update_device_info_cb *cl_driver_update_device_info =
> +NULL;
>
> /* Buffer */
> LOCAL cl_buffer_alloc_cb *cl_buffer_alloc = NULL; diff --git
> a/src/intel/intel_driver.c b/src/intel/intel_driver.c index ff0cf27..d61988c
> 100644
> --- a/src/intel/intel_driver.c
> +++ b/src/intel/intel_driver.c
> @@ -754,6 +754,41 @@ static int intel_buffer_set_tiling(cl_buffer bo,
> return ret;
> }
>
> +static void
> +intel_update_device_info(cl_device_id device) { #ifdef HAS_USERPTR
> + intel_driver_t *driver;
> + const size_t sz = 4096;
> + void *host_ptr;
> +
> + driver = intel_driver_new();
> + assert(driver != NULL);
> + if (intel_driver_open(driver, NULL) != CL_SUCCESS) {
> + intel_driver_delete(driver);
> + return;
> + }
> +
> + host_ptr = cl_aligned_malloc(sz, 4096); if (host_ptr != NULL) {
> + cl_buffer bo = intel_buffer_alloc_userptr((cl_buffer_mgr)driver->bufmgr,
> + "CL memory object", host_ptr, sz, 0);
> + if (bo == NULL)
> + device->host_unified_memory = CL_FALSE;
> + else
> + drm_intel_bo_unreference((drm_intel_bo*)bo);
> + cl_free(host_ptr);
> + }
> + else
> + device->host_unified_memory = CL_FALSE;
> +
> + intel_driver_context_destroy(driver);
> + intel_driver_close(driver);
> + intel_driver_terminate(driver);
> + intel_driver_delete(driver);
> +#endif
> +}
> +
> LOCAL void
> intel_setup_callbacks(void)
> {
> @@ -762,6 +797,7 @@ intel_setup_callbacks(void)
> cl_driver_get_ver = (cl_driver_get_ver_cb *) intel_driver_get_ver;
> cl_driver_get_bufmgr = (cl_driver_get_bufmgr_cb *)
> intel_driver_get_bufmgr;
> cl_driver_get_device_id = (cl_driver_get_device_id_cb *)
> intel_get_device_id;
> + cl_driver_update_device_info = (cl_driver_update_device_info_cb *)
> + intel_update_device_info;
> cl_buffer_alloc = (cl_buffer_alloc_cb *) drm_intel_bo_alloc;
> cl_buffer_alloc_userptr = (cl_buffer_alloc_userptr_cb*)
> intel_buffer_alloc_userptr;
> cl_buffer_set_tiling = (cl_buffer_set_tiling_cb *) intel_buffer_set_tiling;
> --
> 2.3.0
>
> _______________________________________________
> Beignet mailing list
> Beignet@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/beignet
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx
prev parent reply other threads:[~2015-03-09 0:21 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-03-02 23:42 [PATCH 1/2] Add driver callback for updating device info jeff.mcgee
2015-03-02 23:42 ` [PATCH 2/2] Query the driver directly for compute units and subslice jeff.mcgee
2015-03-09 23:35 ` [PATCH 2/2 v2] " jeff.mcgee
2015-03-12 2:08 ` [Beignet] " Zhigang Gong
2015-03-12 20:52 ` Jeff McGee
2015-03-09 0:21 ` Zhigang Gong [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='016101d059fe$f78aac10$e6a00430$@linux.intel.com' \
--to=zhigang.gong@linux.intel.com \
--cc=beignet@lists.freedesktop.org \
--cc=dri-devel@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=jeff.mcgee@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).