From 0616e00b7f018335d874126d5843ffd25a089286 Mon Sep 17 00:00:00 2001 From: Benjamin Segovia Date: Thu, 29 Mar 2012 13:20:00 +0000 Subject: [PATCH] Added more call backs to abstract the driver back end --- setup_fulsim_ivb.sh | 2 +- src/CMakeLists.txt | 2 ++ src/cl_buffer.c | 2 ++ src/cl_buffer.h | 19 +++++++++++++++++++ src/cl_command_queue.c | 18 ++++-------------- src/cl_context.c | 4 ++-- src/cl_mem.c | 5 +---- src/intel/intel_driver.c | 14 -------------- 8 files changed, 31 insertions(+), 35 deletions(-) diff --git a/setup_fulsim_ivb.sh b/setup_fulsim_ivb.sh index 9e355a0..9df9082 100644 --- a/setup_fulsim_ivb.sh +++ b/setup_fulsim_ivb.sh @@ -1,5 +1,5 @@ export INTEL_DEVID_OVERRIDE=0x0166 # or, 0x0112 export DEVICE=ivb_m_gt2 # snb_gt2 for SNB GT2 desktop -export OCL_FULSIM_RUN=1 +export OCL_SIMULATOR=1 # 0 -> HW, 1 -> fulsim, 2 -> perfsim export OCL_FULSIM_DEBUG_MODE=$1 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index efa31eb..ce0279e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -19,7 +19,9 @@ SET(OPENCL_SRC cl_command_queue.c cl_command_queue_gen7.c cl_buffer.c + cl_buffer.cpp sim/sim_buffer.c + intel/intel_buffer.c intel/intel_gpgpu.c intel/intel_batchbuffer.c intel/intel_driver.c diff --git a/src/cl_buffer.c b/src/cl_buffer.c index 53ceb15..ed2aaa0 100644 --- a/src/cl_buffer.c +++ b/src/cl_buffer.c @@ -28,4 +28,6 @@ cl_buffer_pin_cb *cl_buffer_pin = NULL; cl_buffer_unpin_cb *cl_buffer_unpin = NULL; cl_buffer_subdata_cb *cl_buffer_subdata = NULL; cl_buffer_emit_reloc_cb *cl_buffer_emit_reloc = NULL; +cl_driver_get_bufmgr_cb *cl_driver_get_bufmgr = NULL; +cl_driver_get_ver_cb *cl_driver_get_ver = NULL; diff --git a/src/cl_buffer.h b/src/cl_buffer.h index 391a2c7..ff9fa6f 100644 --- a/src/cl_buffer.h +++ b/src/cl_buffer.h @@ -33,6 +33,25 @@ typedef struct cl_buffer cl_buffer; /* Encapsulates buffer manager */ typedef struct cl_buffer_mgr cl_buffer_mgr; +/* Encapsulates the driver backend functionalities */ +typedef struct cl_driver cl_driver; + +/* Create a new driver */ +typedef cl_driver* (cl_driver_new_cb)(void); +extern cl_driver_new_cb cl_driver_new; + +/* Delete the driver */ +typedef cl_driver* (cl_driver_delete_cb)(void); +extern cl_driver_delete_cb cl_driver_delete; + +/* Get the buffer manager from the driver */ +typedef cl_buffer_mgr* (cl_driver_get_bufmgr_cb)(cl_driver*); +extern cl_driver_get_bufmgr_cb *cl_driver_get_bufmgr; + +/* Get the Gen version from the driver */ +typedef uint32_t (cl_driver_get_ver_cb)(cl_driver*); +extern cl_driver_get_ver_cb *cl_driver_get_ver; + /* Allocate a buffer */ typedef cl_buffer* (cl_buffer_alloc_cb)(cl_buffer_mgr*, const char*, unsigned long, unsigned long); extern cl_buffer_alloc_cb *cl_buffer_alloc; diff --git a/src/cl_command_queue.c b/src/cl_command_queue.c index b5ec2f7..cef1485 100644 --- a/src/cl_command_queue.c +++ b/src/cl_command_queue.c @@ -25,13 +25,8 @@ #include "cl_mem.h" #include "cl_utils.h" #include "cl_alloc.h" - -#ifdef _PLASMA -#include "plasma/plasma_export.h" -#else #include "intel_bufmgr.h" #include "intel/intel_gpgpu.h" -#endif #include #include @@ -224,16 +219,11 @@ extern void aub_exec_dump_raw_file(drm_intel_bo*, size_t offset, size_t sz); static void cl_run_fulsim(void) { - const char *run_it = getenv("OCL_FULSIM_RUN"); + const char *run_it = getenv("OCL_SIMULATOR"); const char *debug_mode = getenv("OCL_FULSIM_DEBUG_MODE"); - if (run_it == NULL || strcmp(run_it, "1")) - return; -#if EMULATE_GEN == 6 /* SNB */ - if (debug_mode == NULL || strcmp(debug_mode, "1")) - system("wine AubLoad.exe dump.aub -device sbrB0"); - else - system("wine AubLoad.exe dump.aub -device sbrB0 -debug"); -#elif EMULATE_GEN == 7 /* IVB */ + if (run_it == NULL || strcmp(run_it, "1")) return; + +#if EMULATE_GEN == 7 /* IVB */ if (debug_mode == NULL || strcmp(debug_mode, "1")) system("wine AubLoad.exe dump.aub -device ivbB0"); else diff --git a/src/cl_context.c b/src/cl_context.c index c0fb80c..2e8ff24 100644 --- a/src/cl_context.c +++ b/src/cl_context.c @@ -36,7 +36,7 @@ /* Do not include the full dependency */ struct intel_driver; /* Get the command buffer interface */ -extern struct _drm_intel_bufmgr* intel_driver_get_buf(struct intel_driver*); +extern struct _drm_intel_bufmgr* intel_driver_get_bufmgr(struct intel_driver*); /* Get the Gen HW version */ extern uint32_t intel_driver_get_ver(struct intel_driver*); @@ -205,6 +205,6 @@ error: struct _drm_intel_bufmgr* cl_context_get_intel_bufmgr(cl_context ctx) { - return intel_driver_get_buf((struct intel_driver*) ctx->intel_drv); + return intel_driver_get_bufmgr((struct intel_driver*) ctx->intel_drv); } diff --git a/src/cl_mem.c b/src/cl_mem.c index ae5a78c..a1aa53b 100644 --- a/src/cl_mem.c +++ b/src/cl_mem.c @@ -24,13 +24,10 @@ #include "cl_alloc.h" #include "cl_device_id.h" -#ifdef _PLASMA -#include "plasma/plasma_export.h" -#else #include "intel/intel_driver.h" #include "intel/intel_gpgpu.h" #include "intel_bufmgr.h" /* libdrm_intel */ -#endif +#include "cl_buffer.h" #include "CL/cl.h" #include "CL/cl_intel.h" diff --git a/src/intel/intel_driver.c b/src/intel/intel_driver.c index 336d3f1..e334232 100644 --- a/src/intel/intel_driver.c +++ b/src/intel/intel_driver.c @@ -287,20 +287,6 @@ intel_driver_shared_name(intel_driver_t *driver, dri_bo *bo) return name; } -extern drm_intel_bufmgr* intel_driver_get_buf(intel_driver_t*); - -LOCAL drm_intel_bufmgr* -intel_driver_get_buf(intel_driver_t *drv) -{ - return drv->bufmgr; -} - -LOCAL uint32_t -intel_driver_get_ver(struct intel_driver *drv) -{ - return drv->gen_ver; -} - LOCAL int cl_intel_get_device_id(void) { -- 2.7.4