blob: 1c5a41c34ee6583796f70b9fe5163be090af359e (
plain) (
blame)
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#include <stdlib.h>
#include <stdio.h>
#include "HardwareVertexCache.h"
CHardwareVertexCache::CHardwareVertexCache()
{
m_Fifo = NULL;
m_Size = 0;
Flush();
}
void CHardwareVertexCache::Init( int size )
{
m_Size = size;
m_Fifo = new int[size];
Flush();
}
void CHardwareVertexCache::Flush( void )
{
m_HeadIndex = 0;
m_NumEntries = 0;
}
bool CHardwareVertexCache::IsPresent( int index )
{
int i;
// printf( "testing if %d is present\n", index );
for( i = 0; i < m_NumEntries; i++ )
{
if( m_Fifo[( m_HeadIndex + i ) % m_Size] == index )
{
// printf( "yes!\n" );
return true;
}
}
// printf( "no!\n" );
// Print();
return false;
}
void CHardwareVertexCache::Insert( int index )
{
// printf( "Inserting: %d\n", index );
m_Fifo[( m_HeadIndex + m_NumEntries ) % m_Size] = index;
if( m_NumEntries == m_Size )
{
m_HeadIndex = ( m_HeadIndex + 1 ) % m_Size;
}
else
{
m_NumEntries++;
}
// Print();
}
void CHardwareVertexCache::Print( void )
{
int i;
for( i = 0; i < m_NumEntries; i++ )
{
printf( "fifo entry %d: %d\n", i, ( int )m_Fifo[( m_HeadIndex + i ) % m_Size] );
}
}
|