Войти
ПрограммированиеФорумГрафика

Определение реального объема видеопамяти (комментарии) (2 стр)

Страницы: 1 2
#15
14:29, 10 апр. 2014
я вовремя вспомнил что тут не гк и поправил.

#16
15:29, 10 апр. 2014

делал както давно детект, сейчас на нвидии работает, а ати под рукой нет

#define    GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX          0x9047
#define    GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX    0x9048
#define    GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX  0x9049
#define    GPU_MEMORY_INFO_EVICTION_COUNT_NVX            0x904A
#define    GPU_MEMORY_INFO_EVICTED_MEMORY_NVX            0x904B

#define     VBO_FREE_MEMORY_ATI                     0x87FB
#define     TEXTURE_FREE_MEMORY_ATI                 0x87FC
#define     RENDERBUFFER_FREE_MEMORY_ATI            0x87FD

void R_VideoInfo_f(void){

#ifdef _WIN32
  int mem[4];
  
  if (strstr(gl_config.extensions_string, "GL_NVX_gpu_memory_info")) {
            
    Com_Printf("\nNvidia specific memory info:\n");
    Com_Printf("\n");
    qglGetIntegerv ( GPU_MEMORY_INFO_DEDICATED_VIDMEM_NVX , mem);
    Com_Printf("dedicated video memory %i MB\n", mem[0] >>10);

    qglGetIntegerv ( GPU_MEMORY_INFO_TOTAL_AVAILABLE_MEMORY_NVX , mem);
    Com_Printf("total available memory %i MB\n", mem[0] >>10);

    qglGetIntegerv ( GPU_MEMORY_INFO_CURRENT_AVAILABLE_VIDMEM_NVX , mem);
    Com_Printf("currently unused GPU memory %i MB\n", mem[0] >>10);

    qglGetIntegerv ( GPU_MEMORY_INFO_EVICTION_COUNT_NVX , mem);
    Com_Printf("count of total evictions seen by system %i MB\n", mem[0] >>10);

    qglGetIntegerv ( GPU_MEMORY_INFO_EVICTED_MEMORY_NVX , mem);
    Com_Printf("total video memory evicted %i MB\n", mem[0] >>10);

  } else 
    if (strstr(gl_config.extensions_string, "GL_ATI_meminfo")) {
    
        Com_Printf("\nATI/AMD specific memory info:\n");
    Com_Printf("\n");
        qglGetIntegerv (VBO_FREE_MEMORY_ATI, mem);
        Com_Printf("VBO: total memory free in the pool %i MB\n", mem[0] >> 10);
        Com_Printf("VBO: largest available free block in the pool %i MB\n", mem[1] >> 10);
        Com_Printf("VBO: total auxiliary memory free %i MB\n", mem[2] >> 10);
        Com_Printf("VBO: largest auxiliary free block %i MB\n", mem[3] >> 10);

        qglGetIntegerv (TEXTURE_FREE_MEMORY_ATI, mem);
        Com_Printf("Texture: total memory free in the pool %i MB\n", mem[0] >> 10);
        Com_Printf("Texture: largest available free block in the pool %i MB\n", mem[1] >> 10);
        Com_Printf("Texture: total auxiliary memory free %i MB\n", mem[2] >> 10);
        Com_Printf("Texture: largest auxiliary free block %i MB\n", mem[3] >> 10);

        qglGetIntegerv (RENDERBUFFER_FREE_MEMORY_ATI, mem);
        Com_Printf("RenderBuffer: total memory free in the pool %i MB\n", mem[0] >> 10);
        Com_Printf("RenderBuffer: largest available free block in the pool %i MB\n", mem[1] >> 10);
        Com_Printf("RenderBuffer: total auxiliary memory free %i MB\n", mem[2] >> 10);
        Com_Printf("RenderBuffer: largest auxiliary free block %i MB\n", mem[3] >> 10);
    }
  else
#endif
    Com_Printf("MemInfo not availabled for your video card or driver!\n");
}
#17
16:03, 10 апр. 2014

barnes
> делал както давно детект, сейчас на нвидии работает
спасибо, копирнул повыше

#18
16:28, 10 апр. 2014

barnes

делал както давно детект, сейчас на нвидии работает, а ати под рукой нет

Не будет оно теперь работать на ати, потому что AMD вырезала расширение GL_ATI_meminfo из своих драйверов полтора-два года назад.
#ifdef _WIN32
И при чём тут Windows - эти расширения не WGL.
#19
17:02, 10 апр. 2014

http://nasutechtips.blogspot.ru/2011/02/how-to-get-gpu-memory-siz… usage-in.html
ещё какой-то WGL_AMD_gpu_association

#20
17:22, 10 апр. 2014

ARtnaMed
Функции wglGetGPUIDsAMD и wglGetGPUInfoAMD как раз из этого расширения. Так что желательно проверять его наличие перед вызовом.

#21
17:41, 10 апр. 2014

gkv311
> Не будет оно теперь работать на ати, потому что AMD вырезала расширение
> GL_ATI_meminfo из своих драйверов полтора-два года назад.
Да, слышал о этом, но по скольку ати нема, я этот блок и не мог проверить

gkv311
> И при чём тут Windows - эти расширения не WGL.

Это потому что под линем этот блок не используется.

#22
18:13, 10 апр. 2014

А через OpenCL не?
Будет работать на всем (ATI, NVIDIA точно).
Через clGetDeviceInfo получите все потроха карты.

#23
18:45, 10 апр. 2014

barnes
> Да, слышал о этом, но по скольку ати нема, я этот блок и не видел
12.3 -> есть
13.1 -> нет

#24
9:19, 11 апр. 2014

FireFenix
Ага, понятно-понятно. Переделать что-ли атишный блок? Хотя мне это и не нужно....

#25
13:01, 11 апр. 2014
Через clGetDeviceInfo получите все потроха карты

С учётом того, что на некоторых кривых драйверах (читай Intel) просто получение списка устройств OpenCL может приводить к рандомным крахам... немного страшновато ;).
#26
13:10, 11 апр. 2014

Интересно, а что будет с картами у которых нету ggpu или на динозавриках в OpenCL?

Страницы: 1 2
ПрограммированиеФорумГрафика

Тема в архиве.