Mesa (master): vc4: Make a new #define for making code conditional on the simulator.

Eric Anholt anholt at kemper.freedesktop.org
Tue Mar 24 17:39:47 UTC 2015


Module: Mesa
Branch: master
Commit: af3d7471943d54e692f2dd7448321a4f96e56ed2
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=af3d7471943d54e692f2dd7448321a4f96e56ed2

Author: Eric Anholt <eric at anholt.net>
Date:   Mon Mar 23 17:26:40 2015 -0700

vc4: Make a new #define for making code conditional on the simulator.

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   |   24 ++++++++++++++----------
 src/gallium/drivers/vc4/vc4_context.h  |    6 ++++++
 src/gallium/drivers/vc4/vc4_resource.c |   10 +++++-----
 3 files changed, 25 insertions(+), 15 deletions(-)

diff --git a/src/gallium/drivers/vc4/vc4_bufmgr.c b/src/gallium/drivers/vc4/vc4_bufmgr.c
index 8c5ee64..0077864 100644
--- a/src/gallium/drivers/vc4/vc4_bufmgr.c
+++ b/src/gallium/drivers/vc4/vc4_bufmgr.c
@@ -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 *
diff --git a/src/gallium/drivers/vc4/vc4_context.h b/src/gallium/drivers/vc4/vc4_context.h
index e3d797e..fa1cc43 100644
--- a/src/gallium/drivers/vc4/vc4_context.h
+++ b/src/gallium/drivers/vc4/vc4_context.h
@@ -38,6 +38,12 @@
 #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)
diff --git a/src/gallium/drivers/vc4/vc4_resource.c b/src/gallium/drivers/vc4/vc4_resource.c
index b8efa0d..0dda0d8 100644
--- a/src/gallium/drivers/vc4/vc4_resource.c
+++ b/src/gallium/drivers/vc4/vc4_resource.c
@@ -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);




More information about the mesa-commit mailing list