--
You received this message because you are subscribed to the Google Groups "WebGL Dev List" group.
To unsubscribe from this group and stop receiving emails from it, send an email to webgl-dev-lis...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Ah gotcha, thanks for the clarification KenMy current implementation (with timestamp queries) relies on nested queries. However, unlike startQueryEXT, endQueryEXT doesn't take a query as an arg (ie: ext.endQueryEXT(ext.TIME_ELAPSED_EXT)), so I'm unsure how to specify which query to end.
Can the following pattern be achieved with elapsed time queries?
startQueryA
startQueryBstartQueryC
endQUeryC
endQueryB
endQueryA
Why are they not implementable on Windows? I've built whole GPU timing systems on them in the past, and with Nvidia parts on the Mac/PS3/PC. DX only returns raw timestamps, so how can ANGLE not supply them there? As stated before, elapsed time has the big limitation that you cannot nest the queries, so you're stuck requesting every time submitted, and then assembling the absolute times from deltas. Even cpu timers don't work this way, you just take a cpu timing, and can compute deltas from any two timestamps. All the disjoint timer does is say whether you had wraparound on GL and DX. I have no idea why Apple thought it was a good idea to remove these, other than because of iOS tiling. I asked Apple on the OpenGL forums why they removed this, but there was no answer there. I've built the code below on TIMESTAMP_ELAPSED, but it's really not great flexible, and the assembling timestamps from adding up tiny deltas seems fraught with imprecision.
Get a timestamp value where ID3D11DeviceContext::GetData returns a UINT64. This kind of query is only useful if two timestamp queries are done in the middle of a D3D11_QUERY_TIMESTAMP_DISJOINT query. The difference of two timestamps can be used to determine how many ticks have elapsed, and the D3D11_QUERY_TIMESTAMP_DISJOINT query will determine if that difference is a reliable value and also has a value that shows how to convert the number of ticks into seconds. See D3D11_QUERY_DATA_TIMESTAMP_DISJOINT. When using this type of query, ID3D11DeviceContext::Beginis disabled.
Determines whether or not a D3D11_QUERY_TIMESTAMP is returning reliable values, and also gives the frequency of the processor enabling you to convert the number of elapsed ticks into seconds. ID3D11DeviceContext::GetData will return aD3D11_QUERY_DATA_TIMESTAMP_DISJOINT. This type of query should only be invoked once per frame or less.
--