vc4: Make a new #define for making code conditional on the simulator.
authorEric Anholt <eric@anholt.net>
Tue, 24 Mar 2015 00:26:40 +0000 (17:26 -0700)
committerEric Anholt <eric@anholt.net>
Tue, 24 Mar 2015 17:39:12 +0000 (10:39 -0700)
I'd like to compile as much of the device-specific code as possible
when building for simulator, and using if (using_simulator) instead of
ifdefs helps.

src/gallium/drivers/vc4/vc4_bufmgr.c
src/gallium/drivers/vc4/vc4_context.h
src/gallium/drivers/vc4/vc4_resource.c

index 8c5ee64224fbacab026f76def5e5df98072da062..007786481e86bb6bab77f4a20fff936e8304da39 100644 (file)
@@ -318,13 +318,19 @@ vc4_wait_seqno(struct vc4_screen *screen, uint64_t seqno, uint64_t timeout_ns)
         if (screen->finished_seqno >= seqno)
                 return true;
 
-#ifndef USE_VC4_SIMULATOR
         struct drm_vc4_wait_seqno wait;
         memset(&wait, 0, sizeof(wait));
         wait.seqno = seqno;
         wait.timeout_ns = timeout_ns;
 
-        int ret = drmIoctl(screen->fd, DRM_IOCTL_VC4_WAIT_SEQNO, &wait);
+        int ret;
+        if (!using_vc4_simulator)
+                ret = drmIoctl(screen->fd, DRM_IOCTL_VC4_WAIT_SEQNO, &wait);
+        else {
+                wait.seqno = screen->finished_seqno;
+                ret = 0;
+        }
+
         if (ret == -ETIME) {
                 return false;
         } else if (ret != 0) {
@@ -334,15 +340,11 @@ vc4_wait_seqno(struct vc4_screen *screen, uint64_t seqno, uint64_t timeout_ns)
                 screen->finished_seqno = wait.seqno;
                 return true;
         }
-#else
-        return true;
-#endif
 }
 
 bool
 vc4_bo_wait(struct vc4_bo *bo, uint64_t timeout_ns)
 {
-#ifndef USE_VC4_SIMULATOR
         struct vc4_screen *screen = bo->screen;
 
         struct drm_vc4_wait_bo wait;
@@ -350,7 +352,12 @@ vc4_bo_wait(struct vc4_bo *bo, uint64_t timeout_ns)
         wait.handle = bo->handle;
         wait.timeout_ns = timeout_ns;
 
-        int ret = drmIoctl(screen->fd, DRM_IOCTL_VC4_WAIT_BO, &wait);
+        int ret;
+        if (!using_vc4_simulator)
+                ret = drmIoctl(screen->fd, DRM_IOCTL_VC4_WAIT_BO, &wait);
+        else
+                ret = 0;
+
         if (ret == -ETIME) {
                 return false;
         } else if (ret != 0) {
@@ -359,9 +366,6 @@ vc4_bo_wait(struct vc4_bo *bo, uint64_t timeout_ns)
         } else {
                 return true;
         }
-#else
-        return true;
-#endif
 }
 
 void *
index e3d797e02b8c71653ae47d0a733d3d0d05ee01c6..fa1cc43ccd6f71874a534eb7b81d727e9e64d5c7 100644 (file)
 #include "vc4_cl.h"
 #include "vc4_qir.h"
 
+#ifdef USE_VC4_SIMULATOR
+#define using_vc4_simulator true
+#else
+#define using_vc4_simulator false
+#endif
+
 #define VC4_DIRTY_BLEND         (1 <<  0)
 #define VC4_DIRTY_RASTERIZER    (1 <<  1)
 #define VC4_DIRTY_ZSA           (1 <<  2)
index b8efa0da1a83b6f8cf5eacd8867df07767856ced..0dda0d86a69e493ecbcfd5c075a5a97dcdea71ad 100644 (file)
@@ -404,11 +404,11 @@ vc4_resource_from_handle(struct pipe_screen *pscreen,
         if (!rsc->bo)
                 goto fail;
 
-#ifdef USE_VC4_SIMULATOR
-        slice->stride = align(prsc->width0 * rsc->cpp, 16);
-#else
-        slice->stride = handle->stride;
-#endif
+        if (!using_vc4_simulator)
+                slice->stride = handle->stride;
+        else
+                slice->stride = align(prsc->width0 * rsc->cpp, 16);
+
         slice->tiling = VC4_TILING_FORMAT_LINEAR;
 
         rsc->vc4_format = get_resource_texture_format(prsc);