Explorar el Código

gallium: cleanup fence_signalled and fence_finish

So that they don't have the driver-specific param and return type.
tags/android-x86-2.2-r2
Marek Olšák hace 14 años
padre
commit
bfe88e6998

+ 3
- 4
src/gallium/drivers/cell/ppu/cell_fence.c Ver fichero

@@ -47,8 +47,7 @@ cell_fence_init(struct cell_fence *fence)

boolean
cell_fence_signalled(const struct cell_context *cell,
const struct cell_fence *fence,
unsigned flags)
const struct cell_fence *fence)
{
uint i;
for (i = 0; i < cell->num_spus; i++) {
@@ -60,10 +59,9 @@ cell_fence_signalled(const struct cell_context *cell,
}


void
boolean
cell_fence_finish(const struct cell_context *cell,
const struct cell_fence *fence,
unsigned flags,
uint64_t timeout)
{
while (!cell_fence_signalled(cell, fence)) {
@@ -78,6 +76,7 @@ cell_fence_finish(const struct cell_context *cell,
}
}
#endif
return TRUE;
}



+ 1
- 1
src/gallium/drivers/cell/ppu/cell_fence.h Ver fichero

@@ -40,7 +40,7 @@ cell_fence_signalled(const struct cell_context *cell,
unsigned flags);


extern void
extern boolean
cell_fence_finish(const struct cell_context *cell,
const struct cell_fence *fence,
unsigned flags,

+ 4
- 8
src/gallium/drivers/galahad/glhd_screen.c Ver fichero

@@ -276,23 +276,20 @@ galahad_screen_fence_reference(struct pipe_screen *_screen,
fence);
}

static int
static boolean
galahad_screen_fence_signalled(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
struct galahad_screen *glhd_screen = galahad_screen(_screen);
struct pipe_screen *screen = glhd_screen->screen;

return screen->fence_signalled(screen,
fence,
flags);
fence);
}

static int
static boolean
galahad_screen_fence_finish(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
struct galahad_screen *glhd_screen = galahad_screen(_screen);
@@ -300,7 +297,6 @@ galahad_screen_fence_finish(struct pipe_screen *_screen,

return screen->fence_finish(screen,
fence,
flags,
timeout);
}


+ 5
- 7
src/gallium/drivers/i915/i915_screen.c Ver fichero

@@ -318,25 +318,23 @@ i915_fence_reference(struct pipe_screen *screen,
is->iws->fence_reference(is->iws, ptr, fence);
}

static int
static boolean
i915_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
struct i915_screen *is = i915_screen(screen);

return is->iws->fence_signalled(is->iws, fence);
return is->iws->fence_signalled(is->iws, fence) == 0;
}

static int
static boolean
i915_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
struct i915_screen *is = i915_screen(screen);

return is->iws->fence_finish(is->iws, fence);
return is->iws->fence_finish(is->iws, fence) == 0;
}



+ 5
- 7
src/gallium/drivers/i965/brw_screen.c Ver fichero

@@ -365,21 +365,19 @@ brw_fence_reference(struct pipe_screen *screen,
{
}

static int
static boolean
brw_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
return 0; /* XXX shouldn't this be a boolean? */
return TRUE;
}

static int
static boolean
brw_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
return 0;
return TRUE;
}



+ 4
- 8
src/gallium/drivers/identity/id_screen.c Ver fichero

@@ -242,23 +242,20 @@ identity_screen_fence_reference(struct pipe_screen *_screen,
fence);
}

static int
static boolean
identity_screen_fence_signalled(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
struct identity_screen *id_screen = identity_screen(_screen);
struct pipe_screen *screen = id_screen->screen;

return screen->fence_signalled(screen,
fence,
flags);
fence);
}

static int
static boolean
identity_screen_fence_finish(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
struct identity_screen *id_screen = identity_screen(_screen);
@@ -266,7 +263,6 @@ identity_screen_fence_finish(struct pipe_screen *_screen,

return screen->fence_finish(screen,
fence,
flags,
timeout);
}


+ 1
- 1
src/gallium/drivers/llvmpipe/lp_flush.c Ver fichero

@@ -92,7 +92,7 @@ llvmpipe_finish( struct pipe_context *pipe,
struct pipe_fence_handle *fence = NULL;
llvmpipe_flush(pipe, 0, &fence, reason);
if (fence) {
pipe->screen->fence_finish(pipe->screen, fence, 0, PIPE_TIMEOUT_INFINITE);
pipe->screen->fence_finish(pipe->screen, fence, PIPE_TIMEOUT_INFINITE);
pipe->screen->fence_reference(pipe->screen, &fence, NULL);
}
}

+ 4
- 6
src/gallium/drivers/llvmpipe/lp_screen.c Ver fichero

@@ -349,10 +349,9 @@ llvmpipe_fence_reference(struct pipe_screen *screen,
/**
* Has the fence been executed/finished?
*/
static int
static boolean
llvmpipe_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flag)
struct pipe_fence_handle *fence)
{
struct lp_fence *f = (struct lp_fence *) fence;
return lp_fence_signalled(f);
@@ -362,16 +361,15 @@ llvmpipe_fence_signalled(struct pipe_screen *screen,
/**
* Wait for the fence to finish.
*/
static int
static boolean
llvmpipe_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence_handle,
unsigned flag,
uint64_t timeout)
{
struct lp_fence *f = (struct lp_fence *) fence_handle;

lp_fence_wait(f);
return 0;
return TRUE;
}



+ 5
- 7
src/gallium/drivers/nouveau/nouveau_screen.c Ver fichero

@@ -154,21 +154,19 @@ nouveau_screen_fence_ref(struct pipe_screen *pscreen,
nouveau_fence_ref(nouveau_fence(pfence), (struct nouveau_fence **)ptr);
}

static int
static boolean
nouveau_screen_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *pfence,
unsigned flags)
struct pipe_fence_handle *pfence)
{
return !nouveau_fence_signalled(nouveau_fence(pfence));
return nouveau_fence_signalled(nouveau_fence(pfence));
}

static int
static boolean
nouveau_screen_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *pfence,
unsigned flags,
uint64_t timeout)
{
return !nouveau_fence_wait(nouveau_fence(pfence));
return nouveau_fence_wait(nouveau_fence(pfence));
}



+ 9
- 11
src/gallium/drivers/r300/r300_screen.c Ver fichero

@@ -423,20 +423,18 @@ static void r300_fence_reference(struct pipe_screen *screen,
(struct r300_winsys_bo*)fence);
}

static int r300_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags)
static boolean r300_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence)
{
struct r300_winsys_screen *rws = r300_screen(screen)->rws;
struct r300_winsys_bo *rfence = (struct r300_winsys_bo*)fence;

return !rws->buffer_is_busy(rfence) ? 0 : 1; /* 0 == success */
return !rws->buffer_is_busy(rfence);
}

static int r300_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
static boolean r300_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
uint64_t timeout)
{
struct r300_winsys_screen *rws = r300_screen(screen)->rws;
struct r300_winsys_bo *rfence = (struct r300_winsys_bo*)fence;
@@ -450,15 +448,15 @@ static int r300_fence_finish(struct pipe_screen *screen,
/* Wait in a loop. */
while (rws->buffer_is_busy(rfence)) {
if (os_time_get() - start_time >= timeout) {
return 1;
return FALSE;
}
os_time_sleep(10);
}
return 0;
return TRUE;
}

rws->buffer_wait(rfence);
return 0; /* 0 == success */
return TRUE;
}

struct pipe_screen* r300_screen_create(struct r300_winsys_screen *rws)

+ 4
- 8
src/gallium/drivers/rbug/rbug_screen.c Ver fichero

@@ -240,23 +240,20 @@ rbug_screen_fence_reference(struct pipe_screen *_screen,
fence);
}

static int
static boolean
rbug_screen_fence_signalled(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
struct rbug_screen *rb_screen = rbug_screen(_screen);
struct pipe_screen *screen = rb_screen->screen;

return screen->fence_signalled(screen,
fence,
flags);
fence);
}

static int
static boolean
rbug_screen_fence_finish(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
struct rbug_screen *rb_screen = rbug_screen(_screen);
@@ -264,7 +261,6 @@ rbug_screen_fence_finish(struct pipe_screen *_screen,

return screen->fence_finish(screen,
fence,
flags,
timeout);
}


+ 5
- 7
src/gallium/drivers/softpipe/sp_fence.c Ver fichero

@@ -41,24 +41,22 @@ softpipe_fence_reference(struct pipe_screen *screen,
}


static int
static boolean
softpipe_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
assert(!fence);
return 0;
return TRUE;
}


static int
static boolean
softpipe_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
assert(!fence);
return 0;
return TRUE;
}



+ 1
- 1
src/gallium/drivers/softpipe/sp_flush.c Ver fichero

@@ -162,7 +162,7 @@ softpipe_flush_resource(struct pipe_context *pipe,
* This is for illustrative purposes only, as softpipe does not
* have fences.
*/
pipe->screen->fence_finish(pipe->screen, fence, 0,
pipe->screen->fence_finish(pipe->screen, fence,
PIPE_TIMEOUT_INFINITE);
pipe->screen->fence_reference(pipe->screen, &fence, NULL);
}

+ 1
- 1
src/gallium/drivers/svga/svga_context.c Ver fichero

@@ -241,7 +241,7 @@ void svga_context_flush( struct svga_context *svga,

if (SVGA_DEBUG & DEBUG_SYNC) {
if (fence)
svga->pipe.screen->fence_finish( svga->pipe.screen, fence, 0,
svga->pipe.screen->fence_finish( svga->pipe.screen, fence,
PIPE_TIMEOUT_INFINITE);
}


+ 5
- 7
src/gallium/drivers/svga/svga_screen.c Ver fichero

@@ -412,20 +412,18 @@ svga_fence_reference(struct pipe_screen *screen,
}


static int
static boolean
svga_fence_signalled(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flag)
struct pipe_fence_handle *fence)
{
struct svga_winsys_screen *sws = svga_screen(screen)->sws;
return sws->fence_signalled(sws, fence, flag);
return sws->fence_signalled(sws, fence, 0) == 0;
}


static int
static boolean
svga_fence_finish(struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flag,
uint64_t timeout)
{
struct svga_winsys_screen *sws = svga_screen(screen)->sws;
@@ -433,7 +431,7 @@ svga_fence_finish(struct pipe_screen *screen,
SVGA_DBG(DEBUG_DMA|DEBUG_PERF, "%s fence_ptr %p\n",
__FUNCTION__, fence);

return sws->fence_finish(sws, fence, flag);
return sws->fence_finish(sws, fence, 0) == 0;
}



+ 7
- 11
src/gallium/drivers/trace/tr_screen.c Ver fichero

@@ -393,10 +393,9 @@ trace_screen_fence_reference(struct pipe_screen *_screen,
}


static int
static boolean
trace_screen_fence_signalled(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags)
struct pipe_fence_handle *fence)
{
struct trace_screen *tr_scr = trace_screen(_screen);
struct pipe_screen *screen = tr_scr->screen;
@@ -406,11 +405,10 @@ trace_screen_fence_signalled(struct pipe_screen *_screen,

trace_dump_arg(ptr, screen);
trace_dump_arg(ptr, fence);
trace_dump_arg(uint, flags);

result = screen->fence_signalled(screen, fence, flags);
result = screen->fence_signalled(screen, fence);

trace_dump_ret(int, result);
trace_dump_ret(bool, result);

trace_dump_call_end();

@@ -418,10 +416,9 @@ trace_screen_fence_signalled(struct pipe_screen *_screen,
}


static int
static boolean
trace_screen_fence_finish(struct pipe_screen *_screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout)
{
struct trace_screen *tr_scr = trace_screen(_screen);
@@ -432,12 +429,11 @@ trace_screen_fence_finish(struct pipe_screen *_screen,

trace_dump_arg(ptr, screen);
trace_dump_arg(ptr, fence);
trace_dump_arg(uint, flags);
trace_dump_arg(uint, timeout);

result = screen->fence_finish(screen, fence, flags, timeout);
result = screen->fence_finish(screen, fence, timeout);

trace_dump_ret(int, result);
trace_dump_ret(bool, result);

trace_dump_call_end();


+ 5
- 11
src/gallium/include/pipe/p_screen.h Ver fichero

@@ -183,23 +183,17 @@ struct pipe_screen {

/**
* Checks whether the fence has been signalled.
* \param flags driver-specific meaning
* \return zero on success.
*/
int (*fence_signalled)( struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags );
boolean (*fence_signalled)( struct pipe_screen *screen,
struct pipe_fence_handle *fence );

/**
* Wait for the fence to finish.
* \param flags driver-specific meaning
* \param timeout in nanoseconds
* \return zero on success.
*/
int (*fence_finish)( struct pipe_screen *screen,
struct pipe_fence_handle *fence,
unsigned flags,
uint64_t timeout );
boolean (*fence_finish)( struct pipe_screen *screen,
struct pipe_fence_handle *fence,
uint64_t timeout );

};


+ 1
- 1
src/gallium/state_trackers/egl/common/egl_g3d_api.c Ver fichero

@@ -689,7 +689,7 @@ egl_g3d_wait_client(_EGLDriver *drv, _EGLDisplay *dpy, _EGLContext *ctx)
gctx->stctxi->flush(gctx->stctxi,
PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence);
if (fence) {
screen->fence_finish(screen, fence, 0, PIPE_TIMEOUT_INFINITE);
screen->fence_finish(screen, fence, PIPE_TIMEOUT_INFINITE);
screen->fence_reference(screen, &fence, NULL);
}


+ 1
- 1
src/gallium/state_trackers/egl/common/egl_g3d_sync.c Ver fichero

@@ -109,7 +109,7 @@ egl_g3d_wait_fence_sync(struct egl_g3d_sync *gsync, EGLTimeKHR timeout)

_eglUnlockMutex(&dpy->Mutex);
/* no timed finish? */
screen->fence_finish(screen, fence, 0x0, PIPE_TIMEOUT_INFINITE);
screen->fence_finish(screen, fence, PIPE_TIMEOUT_INFINITE);
ret = EGL_CONDITION_SATISFIED_KHR;
_eglLockMutex(&dpy->Mutex);


+ 1
- 1
src/gallium/state_trackers/egl/common/native_helper.c Ver fichero

@@ -333,7 +333,7 @@ resource_surface_throttle(struct resource_surface *rsurf)
struct pipe_fence_handle *fence = swap_fences_pop_front(rsurf);

if (fence) {
(void) screen->fence_finish(screen, fence, 0, PIPE_TIMEOUT_INFINITE);
(void) screen->fence_finish(screen, fence, PIPE_TIMEOUT_INFINITE);
screen->fence_reference(screen, &fence, NULL);
return TRUE;
}

+ 1
- 1
src/gallium/state_trackers/glx/xlib/xm_api.c Ver fichero

@@ -1227,7 +1227,7 @@ void XMesaFlush( XMesaContext c )

c->st->flush(c->st, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence);
if (fence) {
xmdpy->screen->fence_finish(xmdpy->screen, fence, 0,
xmdpy->screen->fence_finish(xmdpy->screen, fence,
PIPE_TIMEOUT_INFINITE);
xmdpy->screen->fence_reference(xmdpy->screen, &fence, NULL);
}

+ 1
- 1
src/gallium/state_trackers/vega/api_context.c Ver fichero

@@ -74,7 +74,7 @@ void vegaFinish(void)

pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence);
if (fence) {
pipe->screen->fence_finish(pipe->screen, fence, 0,
pipe->screen->fence_finish(pipe->screen, fence,
PIPE_TIMEOUT_INFINITE);
pipe->screen->fence_reference(pipe->screen, &fence, NULL);
}

+ 1
- 1
src/gallium/state_trackers/xorg/xorg_dri2.c Ver fichero

@@ -362,7 +362,7 @@ dri2_copy_region(DrawablePtr pDraw, RegionPtr pRegion,

if (extents->x1 == 0 && extents->y1 == 0 &&
extents->x2 == pDraw->width && extents->y2 == pDraw->height) {
ms->screen->fence_finish(ms->screen, dst_priv->fence, 0,
ms->screen->fence_finish(ms->screen, dst_priv->fence,
PIPE_TIMEOUT_INFINITE);
ms->screen->fence_reference(ms->screen, &dst_priv->fence, NULL);
}

+ 2
- 2
src/gallium/state_trackers/xorg/xorg_driver.c Ver fichero

@@ -334,7 +334,7 @@ drv_cleanup_fences(ScrnInfoPtr pScrn)

for (i = 0; i < XORG_NR_FENCES; i++) {
if (ms->fence[i]) {
ms->screen->fence_finish(ms->screen, ms->fence[i], 0,
ms->screen->fence_finish(ms->screen, ms->fence[i],
PIPE_TIMEOUT_INFINITE);
ms->screen->fence_reference(ms->screen, &ms->fence[i], NULL);
}
@@ -556,7 +556,7 @@ void xorg_flush(ScreenPtr pScreen)
if (ms->dirtyThrottling) {
if (ms->fence[0])
ms->ctx->screen->fence_finish(ms->ctx->screen,
ms->fence[0], 0,
ms->fence[0],
PIPE_TIMEOUT_INFINITE);
/* The amount of rendering generated by a block handler can be

+ 1
- 1
src/gallium/state_trackers/xorg/xorg_exa.c Ver fichero

@@ -1084,7 +1084,7 @@ void xorg_exa_finish(struct exa_context *exa)

xorg_exa_flush(exa, PIPE_FLUSH_RENDER_CACHE, &fence);

exa->pipe->screen->fence_finish(exa->pipe->screen, fence, 0,
exa->pipe->screen->fence_finish(exa->pipe->screen, fence,
PIPE_TIMEOUT_INFINITE);
exa->pipe->screen->fence_reference(exa->pipe->screen, &fence, NULL);
}

+ 1
- 1
src/mesa/state_tracker/st_cb_flush.c Ver fichero

@@ -103,7 +103,7 @@ void st_finish( struct st_context *st )
st_flush(st, PIPE_FLUSH_RENDER_CACHE | PIPE_FLUSH_FRAME, &fence);

if(fence) {
st->pipe->screen->fence_finish(st->pipe->screen, fence, 0,
st->pipe->screen->fence_finish(st->pipe->screen, fence,
PIPE_TIMEOUT_INFINITE);
st->pipe->screen->fence_reference(st->pipe->screen, &fence, NULL);
}

+ 2
- 2
src/mesa/state_tracker/st_cb_syncobj.c Ver fichero

@@ -80,7 +80,7 @@ static void st_check_sync(struct gl_context *ctx, struct gl_sync_object *obj)
struct pipe_screen *screen = st_context(ctx)->pipe->screen;
struct st_sync_object *so = (struct st_sync_object*)obj;

if (so->fence && screen->fence_signalled(screen, so->fence, 0) == 0) {
if (so->fence && screen->fence_signalled(screen, so->fence)) {
screen->fence_reference(screen, &so->fence, NULL);
so->b.StatusFlag = GL_TRUE;
}
@@ -97,7 +97,7 @@ static void st_client_wait_sync(struct gl_context *ctx,
* already called when creating a fence. */

if (so->fence &&
screen->fence_finish(screen, so->fence, 0, timeout) == 0) {
screen->fence_finish(screen, so->fence, timeout)) {
screen->fence_reference(screen, &so->fence, NULL);
so->b.StatusFlag = GL_TRUE;
}

Cargando…
Cancelar
Guardar