mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-01-08 17:10:11 +01:00
nvc0: use fence to check state of queries that don't write sequence
This still isn't optimal, since the fence will signal a bit late, but better than checking on the bo, which may never be ready if it is shared (which is likely).
This commit is contained in:
parent
3d2790cead
commit
6bca4e7085
1 changed files with 5 additions and 1 deletions
|
|
@ -46,6 +46,7 @@ struct nvc0_query {
|
|||
boolean is64bit;
|
||||
uint8_t rotate;
|
||||
int nesting; /* only used for occlusion queries */
|
||||
struct nouveau_fence *fence;
|
||||
struct nouveau_mm_allocation *mm;
|
||||
};
|
||||
|
||||
|
|
@ -98,6 +99,7 @@ static void
|
|||
nvc0_query_destroy(struct pipe_context *pipe, struct pipe_query *pq)
|
||||
{
|
||||
nvc0_query_allocate(nvc0_context(pipe), nvc0_query(pq), 0);
|
||||
nouveau_fence_ref(NULL, &nvc0_query(pq)->fence);
|
||||
FREE(nvc0_query(pq));
|
||||
}
|
||||
|
||||
|
|
@ -337,13 +339,15 @@ nvc0_query_end(struct pipe_context *pipe, struct pipe_query *pq)
|
|||
nve4_mp_pm_query_end(nvc0, q);
|
||||
break;
|
||||
}
|
||||
if (q->is64bit)
|
||||
nouveau_fence_ref(nvc0->screen->base.fence.current, &q->fence);
|
||||
}
|
||||
|
||||
static INLINE void
|
||||
nvc0_query_update(struct nouveau_client *cli, struct nvc0_query *q)
|
||||
{
|
||||
if (q->is64bit) {
|
||||
if (!nouveau_bo_map(q->bo, NOUVEAU_BO_RD | NOUVEAU_BO_NOBLOCK, cli))
|
||||
if (nouveau_fence_signalled(q->fence))
|
||||
q->state = NVC0_QUERY_STATE_READY;
|
||||
} else {
|
||||
if (q->data[0] == q->sequence)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue