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

2015-07-06 Thread Michel Dänzer
On 07.07.2015 01:32, Ilia Mirkin wrote: > On Mon, Jul 6, 2015 at 11:29 AM, Vyacheslav Gonakhchyan > wrote: >> Hi, everyone. >> >> Trying to understand method radeonQueryGetResult (more broadly GPU-CPU >> sync). >> >> static void radeonQueryGetResult(struct gl_context *ctx, struct >> gl_query_objec

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

2015-07-06 Thread Roland Scheidegger
Am 06.07.2015 um 19:54 schrieb Ilia Mirkin: > That's right. Except really what might have happend was > > occl query; > write X; > more drawing; > write X+1; > > and then on the CPU, you see X+1. So the tests are always for >= X. > And if you have more than 2^32 submits, you cry, because I'm *sur

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

2015-07-06 Thread Ilia Mirkin
That's right. Except really what might have happend was occl query; write X; more drawing; write X+1; and then on the CPU, you see X+1. So the tests are always for >= X. And if you have more than 2^32 submits, you cry, because I'm *sure* that nothing implements wraparound properly :) On Mon, Jul

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

2015-07-06 Thread Vyacheslav Gonakhchyan
Ilia, thanks a lot for the info. So basically if I submit to GPU's command stream: perform occlusion query, write X to Y. I know that query is completed when after reading Y address I get X. Regards, Vyacheslav On Mon, Jul 6, 2015 at 9:13 PM, Ilia Mirkin wrote: > I'm only really familiar with

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

2015-07-06 Thread Ilia Mirkin
I'm only really familiar with nouveau, but I think all GPU hardware works in roughly the same way. Basically you have some way of inserting "write X to address Y" into the command stream (aka a "fence"), after which you insert "write X+1 to address Y" and so on. If you want the CPU to wait on a giv

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

2015-07-06 Thread Vyacheslav Gonakhchyan
Ilia, thanks for the gallium link. Do you know any links to high level info with broad strokes about how this sync works? Frankly I do not know driver terminology and wanted to know more about how this sync is performed for my research. I'm using mesa as a reference because it has open implementati

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

2015-07-06 Thread Ilia Mirkin
On Mon, Jul 6, 2015 at 11:29 AM, Vyacheslav Gonakhchyan wrote: > 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 =

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

2015-07-06 Thread Vyacheslav Gonakhchyan
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; rade