Module: Mesa
Branch: master
Commit: 837f74aa511321c87bee768e463a0248d689c55d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=837f74aa511321c87bee768e463a0248d689c55d

Author: Marek Olšák <[email protected]>
Date:   Tue Feb  2 01:26:59 2016 +0100

mesa: implement GL_ATI_meminfo (v2)

v2: rebase

Reviewed-by: Ilia Mirkin <[email protected]>
Reviewed-by: Alex Deucher <[email protected]>

---

 src/mapi/glapi/gen/gl_API.xml    |  6 ++++++
 src/mesa/main/extensions_table.h |  1 +
 src/mesa/main/get.c              | 26 +++++++++++++++++++++++++-
 src/mesa/main/get_hash_params.py |  5 +++++
 src/mesa/main/mtypes.h           |  1 +
 5 files changed, 38 insertions(+), 1 deletion(-)

diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
index a2ddf7d..db98ac0 100644
--- a/src/mapi/glapi/gen/gl_API.xml
+++ b/src/mapi/glapi/gen/gl_API.xml
@@ -12668,6 +12668,12 @@
     <enum name="FRAMEBUFFER_SRGB_CAPABLE_EXT"      value="0x8DBA"/>
 </category>
 
+<category name="GL_ATI_meminfo" number="359">
+    <enum name="VBO_FREE_MEMORY_ATI"          value="0x87FB" />
+    <enum name="TEXTURE_FREE_MEMORY_ATI"      value="0x87FC" />
+    <enum name="RENDERBUFFER_FREE_MEMORY_ATI" value="0x87FD" />
+</category>
+
 <xi:include href="AMD_performance_monitor.xml" 
xmlns:xi="http://www.w3.org/2001/XInclude"/>
 
 <category name="GL_APPLE_texture_range" number="367">
diff --git a/src/mesa/main/extensions_table.h b/src/mesa/main/extensions_table.h
index 1d2add2..ded6f2c 100644
--- a/src/mesa/main/extensions_table.h
+++ b/src/mesa/main/extensions_table.h
@@ -166,6 +166,7 @@ EXT(ARB_window_pos                          , dummy_true
 EXT(ATI_blend_equation_separate             , EXT_blend_equation_separate      
      , GLL, GLC,  x ,  x , 2003)
 EXT(ATI_draw_buffers                        , dummy_true                       
      , GLL,  x ,  x ,  x , 2002)
 EXT(ATI_fragment_shader                     , ATI_fragment_shader              
      , GLL,  x ,  x ,  x , 2001)
+EXT(ATI_meminfo                             , ATI_meminfo                      
      , GLL, GLC,  x ,  x , 2009)
 EXT(ATI_separate_stencil                    , ATI_separate_stencil             
      , GLL,  x ,  x ,  x , 2006)
 EXT(ATI_texture_compression_3dc             , ATI_texture_compression_3dc      
      , GLL,  x ,  x ,  x , 2004)
 EXT(ATI_texture_env_combine3                , ATI_texture_env_combine3         
      , GLL,  x ,  x ,  x , 2002)
diff --git a/src/mesa/main/get.c b/src/mesa/main/get.c
index 4ab683e..1227218 100644
--- a/src/mesa/main/get.c
+++ b/src/mesa/main/get.c
@@ -450,6 +450,7 @@ EXTRA_EXT(ARB_tessellation_shader);
 EXTRA_EXT(ARB_shader_subroutine);
 EXTRA_EXT(ARB_shader_storage_buffer_object);
 EXTRA_EXT(ARB_indirect_parameters);
+EXTRA_EXT(ATI_meminfo);
 EXTRA_EXT(NVX_gpu_memory_info);
 
 static const int
@@ -1092,7 +1093,10 @@ find_custom_value(struct gl_context *ctx, const struct 
value_desc *d, union valu
       break;
    case GL_SAMPLE_BUFFERS:
       v->value_int = _mesa_geometric_samples(ctx->DrawBuffer) > 0;
-   /* GL_NVX_gpu_memory_info */
+   /* GL_ATI_meminfo & GL_NVX_gpu_memory_info */
+   case GL_VBO_FREE_MEMORY_ATI:
+   case GL_TEXTURE_FREE_MEMORY_ATI:
+   case GL_RENDERBUFFER_FREE_MEMORY_ATI:
    case GL_GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX:
    case GL_GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX:
    case GL_GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX:
@@ -1114,6 +1118,26 @@ find_custom_value(struct gl_context *ctx, const struct 
value_desc *d, union valu
             v->value_int = info.nr_device_memory_evictions;
          else if (d->pname == GL_GPU_MEMORY_INFO_EVICTED_MEMORY_NVX)
             v->value_int = info.device_memory_evicted;
+         else {
+            /* ATI free memory enums.
+             *
+             * Since the GPU memory is (usually) page-table based, every two
+             * consecutive elements are equal. From the GL_ATI_meminfo
+             * specification:
+             *
+             *    "param[0] - total memory free in the pool
+             *     param[1] - largest available free block in the pool
+             *     param[2] - total auxiliary memory free
+             *     param[3] - largest auxiliary free block"
+             *
+             * All three (VBO, TEXTURE, RENDERBUFFER) queries return
+             * the same numbers here.
+             */
+            v->value_int_4[0] = info.avail_device_memory;
+            v->value_int_4[1] = info.avail_device_memory;
+            v->value_int_4[2] = info.avail_staging_memory;
+            v->value_int_4[3] = info.avail_staging_memory;
+         }
       }
       break;
    }
diff --git a/src/mesa/main/get_hash_params.py b/src/mesa/main/get_hash_params.py
index 82b8b0b..164095c 100644
--- a/src/mesa/main/get_hash_params.py
+++ b/src/mesa/main/get_hash_params.py
@@ -851,6 +851,11 @@ descriptor=[
 # GL_ARB_query_buffer_object
   [ "QUERY_BUFFER_BINDING", "LOC_CUSTOM, TYPE_INT, 0, 
extra_ARB_query_buffer_object" ],
 
+# GL_ATI_meminfo
+  [ "VBO_FREE_MEMORY_ATI", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, 
extra_ATI_meminfo" ],
+  [ "TEXTURE_FREE_MEMORY_ATI", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, 
extra_ATI_meminfo" ],
+  [ "RENDERBUFFER_FREE_MEMORY_ATI", "LOC_CUSTOM, TYPE_INT_4, NO_OFFSET, 
extra_ATI_meminfo" ],
+
 # GL_NVX_gpu_memory_info
   [ "GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX", "LOC_CUSTOM, TYPE_INT, NO_OFFSET, 
extra_NVX_gpu_memory_info" ],
   [ "GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX", "LOC_CUSTOM, TYPE_INT, 
NO_OFFSET, extra_NVX_gpu_memory_info" ],
diff --git a/src/mesa/main/mtypes.h b/src/mesa/main/mtypes.h
index c6bff01..e987177 100644
--- a/src/mesa/main/mtypes.h
+++ b/src/mesa/main/mtypes.h
@@ -3891,6 +3891,7 @@ struct gl_extensions
    GLboolean AMD_vertex_shader_layer;
    GLboolean AMD_vertex_shader_viewport_index;
    GLboolean APPLE_object_purgeable;
+   GLboolean ATI_meminfo;
    GLboolean ATI_texture_compression_3dc;
    GLboolean ATI_texture_mirror_once;
    GLboolean ATI_texture_env_combine3;

_______________________________________________
mesa-commit mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to