st/nine: Fix D3DQUERYTYPE_TIMESTAMPFREQ query

D3DQUERYTYPE_TIMESTAMPFREQ is supposed to give the frequency
at which the clock of D3DQUERYTYPE_TIMESTAMP runs.

PIPE_QUERY_TIMESTAMP returns a value in ns, thus the corresponding
frequency is 1000000000.
PIPE_QUERY_TIMESTAMP_DISJOINT returns the frequency at which
PIPE_QUERY_TIMESTAMP value is updated. It isn't always
1000000000.

Reviewed-by: Axel Davy <axel.davy@ens.fr>
Signed-off-by: Xavier Bouchoux <xavierb@gmail.com>
This commit is contained in:
Xavier Bouchoux 2015-02-08 15:56:15 +01:00 committed by Axel Davy
parent 31bb4cd5c6
commit 851abb9145

View file

@ -254,7 +254,15 @@ NineQuery9_GetData( struct NineQuery9 *This,
nresult.b = presult.timestamp_disjoint.disjoint;
break;
case D3DQUERYTYPE_TIMESTAMPFREQ:
nresult.u64 = presult.timestamp_disjoint.frequency;
/* Applications use it to convert the TIMESTAMP value to time.
AMD drivers on win seem to return the actual hardware clock
resolution and corresponding values in TIMESTAMP.
However, this behaviour is not easy to replicate here.
So instead we do what wine and opengl do, and use
nanoseconds TIMESTAMPs.
(Which is also the unit used by PIPE_QUERY_TIMESTAMP.)
*/
nresult.u64 = 1000000000;
break;
case D3DQUERYTYPE_VERTEXSTATS:
nresult.vertexstats.NumRenderedTriangles =