summaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/vc4
diff options
context:
space:
mode:
authorEric Anholt <[email protected]>2015-03-23 17:26:40 -0700
committerEric Anholt <[email protected]>2015-03-24 10:39:12 -0700
commitaf3d7471943d54e692f2dd7448321a4f96e56ed2 (patch)
tree493052e8ab687b82cdf84ff638086b801e3c7ef9 /src/gallium/drivers/vc4
parent9bafcf630ab009b3b39bbe3c0f4370386bc5a6b2 (diff)
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.
Diffstat (limited to 'src/gallium/drivers/vc4')
-rw-r--r--src/gallium/drivers/vc4/vc4_bufmgr.c24
-rw-r--r--src/gallium/drivers/vc4/vc4_context.h6
-rw-r--r--src/gallium/drivers/vc4/vc4_resource.c10
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 8c5ee64224f..007786481e8 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 e3d797e02b8..fa1cc43ccd6 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 b8efa0da1a8..0dda0d86a69 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);