浏览代码

Don't destroy the LRU on Reset.
Remove useless comments leftover during DX8 to DX9 conversion.

aignacio_sf 20 年之前
父节点
当前提交
a83ac32cc6
共有 1 个文件被更改,包括 60 次插入71 次删除
  1. 60 71
      panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

+ 60 - 71
panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

@@ -232,14 +232,6 @@ apply_texture(int i, TextureContext *tc) {
   wrap_v = tex->get_wrap_v();
   wrap_w = tex->get_wrap_w();
 
-/*
-  _d3d_device->SetTextureStageState(i, D3DTSS_ADDRESSU, get_texture_wrap_mode(wrap_u));
-  _d3d_device->SetTextureStageState(i, D3DTSS_ADDRESSV, get_texture_wrap_mode(wrap_v));
-  _d3d_device->SetTextureStageState(i, D3DTSS_ADDRESSW, get_texture_wrap_mode(wrap_w));
-
-  _d3d_device->SetTextureStageState(i, D3DTSS_BORDERCOLOR,
-            Colorf_to_D3DCOLOR(tex->get_border_color()));
-*/
   _d3d_device->SetSamplerState(i, D3DSAMP_ADDRESSU, get_texture_wrap_mode(wrap_u));
   _d3d_device->SetSamplerState(i, D3DSAMP_ADDRESSV, get_texture_wrap_mode(wrap_v));
   _d3d_device->SetSamplerState(i, D3DSAMP_ADDRESSW, get_texture_wrap_mode(wrap_w));
@@ -250,7 +242,6 @@ apply_texture(int i, TextureContext *tc) {
   uint aniso_degree = tex->get_anisotropic_degree();
   Texture::FilterType ft = tex->get_magfilter();
 
-//  _d3d_device->SetTextureStageState(i, D3DTSS_MAXANISOTROPY, aniso_degree);
   _d3d_device->SetSamplerState(i, D3DSAMP_MAXANISOTROPY, aniso_degree);
 
   D3DTEXTUREFILTERTYPE new_mag_filter;
@@ -260,7 +251,6 @@ apply_texture(int i, TextureContext *tc) {
     new_mag_filter = D3DTEXF_ANISOTROPIC;
   }
 
-//  _d3d_device->SetTextureStageState(i, D3DTSS_MAGFILTER, new_mag_filter);
   _d3d_device->SetSamplerState(i, D3DSAMP_MAGFILTER, new_mag_filter);
 
   // map Panda composite min+mip filter types to d3d's separate min & mip filter types
@@ -289,10 +279,6 @@ apply_texture(int i, TextureContext *tc) {
     new_min_filter = D3DTEXF_ANISOTROPIC;
   }
 
-/*
-  _d3d_device->SetTextureStageState(i, D3DTSS_MINFILTER, new_min_filter);
-  _d3d_device->SetTextureStageState(i, D3DTSS_MIPFILTER, new_mip_filter);
-*/
   _d3d_device->SetSamplerState(i, D3DSAMP_MINFILTER, new_min_filter);
   _d3d_device->SetSamplerState(i, D3DSAMP_MIPFILTER, new_mip_filter);
 
@@ -1974,78 +1960,81 @@ reset() {
   }
   _available_texture_memory = available_texture_memory;
 
+/*
   if (_lru) {
     delete _lru;
     _lru = 0;
   }
+*/
 
-  if (dx_management == false && _enable_lru) {
-    int error;
-    int maximum_memory;
-    int maximum_pages;
-    Lru *lru;
-
-    int absolute_minimum_memory_requirement;
-    int minimum_memory_requirement;
-    int maximum_memory_requirement;
-    int free_memory_requirement;
-
-    maximum_pages = dx_lru_maximum_pages;
-
-    absolute_minimum_memory_requirement = 5000000;
-    minimum_memory_requirement = dx_lru_minimum_memory_requirement;
-    maximum_memory_requirement = dx_lru_maximum_memory_requirement;
-    free_memory_requirement = dx_lru_free_memory_requirement;
-
-
-    error = false;
-    maximum_memory = available_texture_memory - free_memory_requirement;
-    if (maximum_memory < minimum_memory_requirement) {
-       if (maximum_memory < absolute_minimum_memory_requirement) {
-         // video memory size is too small
-          error = true;
-       }
-       else {
-         // video memory is way too low, so take all of it
-         maximum_memory = available_texture_memory;
-
-         // need to warn user about low video memory
-// *****
-{
+  if (_lru == 0)
+  {
+    if (dx_management == false && _enable_lru) {
+      int error;
+      int maximum_memory;
+      int maximum_pages;
+      Lru *lru;
+
+      int absolute_minimum_memory_requirement;
+      int minimum_memory_requirement;
+      int maximum_memory_requirement;
+      int free_memory_requirement;
+
+      maximum_pages = dx_lru_maximum_pages;
+
+      absolute_minimum_memory_requirement = 5000000;
+      minimum_memory_requirement = dx_lru_minimum_memory_requirement;
+      maximum_memory_requirement = dx_lru_maximum_memory_requirement;
+      free_memory_requirement = dx_lru_free_memory_requirement;
+
+      error = false;
+      maximum_memory = available_texture_memory - free_memory_requirement;
+      if (maximum_memory < minimum_memory_requirement) {
+         if (maximum_memory < absolute_minimum_memory_requirement) {
+           // video memory size is too small
+            error = true;
+         }
+         else {
+           // video memory is way too low, so take all of it
+           maximum_memory = available_texture_memory;
+
+           // need to warn user about low video memory
+  // *****
+  {
 
-}
+  }
+        }
       }
-    }
-    else {
-      if (maximum_memory_requirement != 0) {
-        if (maximum_memory >= maximum_memory_requirement) {
-          // cap video memory used
-          maximum_memory = maximum_memory_requirement;
+      else {
+        if (maximum_memory_requirement != 0) {
+          if (maximum_memory >= maximum_memory_requirement) {
+            // cap video memory used
+            maximum_memory = maximum_memory_requirement;
+          }
         }
       }
-    }
 
-    // no LRU if there is an error, go back to DirectX managed
-    if (error) {
-      _gsg_managed_textures = true;
-      _gsg_managed_vertex_buffers = true;
-      _gsg_managed_index_buffers = true;
-    } else {
+      // no LRU if there is an error, go back to DirectX managed
+      if (error) {
+        _gsg_managed_textures = true;
+        _gsg_managed_vertex_buffers = true;
+        _gsg_managed_index_buffers = true;
+      } else {
 
-      int maximum_page_types;
+        int maximum_page_types;
 
-      maximum_page_types = GPT_TotalPageTypes;
+        maximum_page_types = GPT_TotalPageTypes;
+        lru = new Lru (maximum_memory, maximum_pages, maximum_page_types);
+        if (lru) {
+          lru -> register_lru_page_type (GPT_VertexBuffer, vertex_buffer_page_in_function, vertex_buffer_page_out_function);
+          lru -> register_lru_page_type (GPT_IndexBuffer, index_buffer_page_in_function, index_buffer_page_out_function);
+          lru -> register_lru_page_type (GPT_Texture, texture_page_in_function, texture_page_out_function);
 
-      lru = new Lru (maximum_memory, maximum_pages, maximum_page_types);
-      if (lru) {
-        lru -> register_lru_page_type (GPT_VertexBuffer, vertex_buffer_page_in_function, vertex_buffer_page_out_function);
-        lru -> register_lru_page_type (GPT_IndexBuffer, index_buffer_page_in_function, index_buffer_page_out_function);
-        lru -> register_lru_page_type (GPT_Texture, texture_page_in_function, texture_page_out_function);
+          lru -> _m.context = (void *) this;
+        }
 
-        lru -> _m.context = (void *) this;
+        _lru = lru;
       }
-
-      _lru = lru;
     }
   }