Added more call backs to abstract the driver back end
authorBenjamin Segovia <segovia.benjamin@gmail.com>
Thu, 29 Mar 2012 13:20:00 +0000 (13:20 +0000)
committerKeith Packard <keithp@keithp.com>
Fri, 10 Aug 2012 23:15:53 +0000 (16:15 -0700)
setup_fulsim_ivb.sh
src/CMakeLists.txt
src/cl_buffer.c
src/cl_buffer.h
src/cl_command_queue.c
src/cl_context.c
src/cl_mem.c
src/intel/intel_driver.c

index 9e355a0..9df9082 100644 (file)
@@ -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
 
index efa31eb..ce0279e 100644 (file)
@@ -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
index 53ceb15..ed2aaa0 100644 (file)
@@ -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;
 
index 391a2c7..ff9fa6f 100644 (file)
@@ -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;
index b5ec2f7..cef1485 100644 (file)
 #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 <assert.h>
 #include <stdio.h>
@@ -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
index c0fb80c..2e8ff24 100644 (file)
@@ -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);
 }
 
index ae5a78c..a1aa53b 100644 (file)
 #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"
index 336d3f1..e334232 100644 (file)
@@ -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)
 {