From af3d7471943d54e692f2dd7448321a4f96e56ed2 Mon Sep 17 00:00:00 2001 From: Eric Anholt Date: Mon, 23 Mar 2015 17:26:40 -0700 Subject: [PATCH] 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 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); -- 2.30.2