diff options
author | Eric Anholt <[email protected]> | 2015-03-23 17:26:40 -0700 |
---|---|---|
committer | Eric Anholt <[email protected]> | 2015-03-24 10:39:12 -0700 |
commit | af3d7471943d54e692f2dd7448321a4f96e56ed2 (patch) | |
tree | 493052e8ab687b82cdf84ff638086b801e3c7ef9 /src/gallium/drivers/vc4 | |
parent | 9bafcf630ab009b3b39bbe3c0f4370386bc5a6b2 (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.c | 24 | ||||
-rw-r--r-- | src/gallium/drivers/vc4/vc4_context.h | 6 | ||||
-rw-r--r-- | 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); |