source: golgotha/src/render/tex_heap.hh @ 102

Last change on this file since 102 was 80, checked in by Sam Hocevar, 15 years ago
  • Adding the Golgotha source code. Not sure what's going to be interesting in there, but since it's all public domain, there's certainly stuff to pick up.
File size: 1.8 KB
RevLine 
[80]1/********************************************************************** <BR>
2  This file is part of Crack dot Com's free source code release of
3  Golgotha. <a href="http://www.crack.com/golgotha_release"> <BR> for
4  information about compiling & licensing issues visit this URL</a>
5  <PRE> If that doesn't help, contact Jonathan Clark at
6  golgotha_source@usa.net (Subject should have "GOLG" in it)
7***********************************************************************/
8
9#ifndef _TEX_HEAP_HH_
10#define _TEX_HEAP_HH_
11
12#include "time/profile.hh"
13
14extern i4_profile_class pf_tex_heap_alloc;
15extern i4_profile_class pf_tex_heap_free;
16extern i4_profile_class pf_tex_heap_cleanup;
17
18#define R1_TEX_HEAP_FREE_NODE_DATA w32 start,size; r1_tex_heap_free_node *next; r1_miplevel_t *mip;
19
20#define R1_TEX_HEAP_USED_NODE_DATA r1_tex_heap_free_node *node; r1_tex_heap_used_node *next; r1_tex_heap_used_node *last;
21
22#define R1_TEX_HEAP_DONT_LIST 1
23
24class r1_tex_heap_free_node
25{
26public:
27  R1_TEX_HEAP_FREE_NODE_DATA   
28};
29
30class r1_tex_heap_used_node
31{
32public:
33  R1_TEX_HEAP_USED_NODE_DATA   
34};
35
36
37class r1_texture_heap_class
38{
39public:
40 
41  r1_tex_heap_free_node *first_free; 
42  r1_tex_heap_used_node *first_used;
43  r1_tex_heap_used_node *oldest_used;
44
45  i4_linear_allocator *free_node_alloc;
46  i4_linear_allocator *used_node_alloc;
47
48  r1_texture_heap_class(w32 heap_size, w32 heap_start, w32 free_node_size, w32 used_node_size, sw32 *frame_count);
49  ~r1_texture_heap_class();
50
51  sw32 *frame_count_ptr;
52  sw32 num_ram_misses;
53  sw32 max_fail_size;
54 
55  i4_bool needs_cleanup;
56
57  void free_really_old();
58  void update_usage(r1_tex_heap_used_node *u);
59 
60  r1_tex_heap_used_node *alloc(w32 need_size, w8 flags=0);
61
62  void merge_into_free_list(w32 _start, w32 _size);
63  void free(r1_tex_heap_used_node *u);
64};
65
66#endif
Note: See TracBrowser for help on using the repository browser.