summaryrefslogtreecommitdiff
path: root/src/win95/vramtime.c
blob: a4fae0372c5dc6b19091aa16b92ae8d063c2997a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <windows.h>

#include "vramtime.h"

static DWORD transition_times_matrix[][VWS_MAXSTATES] =
{
/* from DDRELEASE */
	{   0,  20,   0, 100, 100 },
/* from D3DTEXRELEASE */
	{  20,   0, 100, 100, 100 },
/* from DDCREATE */
	{   0, 100,   0,  20, 100 },
/* from D3DTEXCREATE */
	{  20, 100,  20,  20, 100 },
/* from UNKNOWN */
	{ 100, 100, 100, 100, 100 }
};


void WaitForVRamReady(VRAM_WAIT_STATE vws)
{
	static DWORD old_time = 0;
	static VRAM_WAIT_STATE old_vws = VWS_UNKNOWN;
	
	DWORD new_time;

	if (0==old_time) old_time = timeGetTime();

	do new_time = timeGetTime(); while (new_time - old_time < transition_times_matrix[old_vws][vws]);

	old_time = new_time;
	old_vws = vws;
}