[Mesa-dev] Fwd: GPU-CPU sync during radeonQueryGetResult

Vyacheslav Gonakhchyan ytriffy at gmail.com
Mon Jul 6 08:29:28 PDT 2015


Hi, everyone.

Trying to understand method radeonQueryGetResult (more broadly GPU-CPU
sync).

static void radeonQueryGetResult(struct gl_context *ctx, struct
gl_query_object *q)
{
    struct radeon_query_object *query = (struct radeon_query_object *)q;
        uint32_t *result;
    int i;

    radeon_print(RADEON_STATE, RADEON_VERBOSE,
            "%s: query id %d, result %d\n",
            __func__, query->Base.Id, (int) query->Base.Result);

    radeon_bo_map(query->bo, GL_FALSE);
        result = query->bo->ptr;

    query->Base.Result = 0;
    for (i = 0; i < query->curr_offset/sizeof(uint32_t); ++i) {
        query->Base.Result += LE32_TO_CPU(result[i]);
        radeon_print(RADEON_STATE, RADEON_TRACE, "result[%d] = %d\n", i,
LE32_TO_CPU(result[i]));
    }

    radeon_bo_unmap(query->bo);
}

I don't know which part is responsible for blocking behavior (waiting for
response from GPU). I suspect that radeon_bo_map does this magic.
Can someone point in the right direction?

Thanks,
Vyacheslav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150706/ae52d88c/attachment.html>


More information about the mesa-dev mailing list