Программирование игр, создание игрового движка, OpenGL, DirectX, физика, форум
GameDev.ru / Программирование / Форум / Замена GL_ATI_meminfo

Замена GL_ATI_meminfo

Поделиться
NeptuneПостоялецwww20 окт. 201713:20#0
Расширение GL_ATI_meminfo уже давненько вырезано из атишных драйверов. Как теперь определять объём свободной видеопамяти? Общий объём определяется так:
    size_t memTotal = 0;
    UINT maxCount = wglGetGPUIDsAMD(0, 0);
    UINT* ID = new UINT[maxCount];
    wglGetGPUIDsAMD(maxCount, ID);
    wglGetGPUInfoAMD(ID[0], WGL_GPU_RAM_AMD, GL_UNSIGNED_INT, sizeof(size_t), &memTotal);
    delete [] ID;

А как быть со свободной?

innuendoПостоялецwww20 окт. 201713:24#1
Neptune
> Как теперь определять объём свободной видеопамяти?

насоздавать текстур до упора ?

barnesПостоялецwww20 окт. 201714:57#2
ADL может быть показывает загрузку памяти?
Поглядел сдк - нет не может.

Правка: 20 окт. 2017 15:06

TheLightWayПостоялецwww20 окт. 201715:23#3
Neptune
> Как теперь определять объём свободной видеопамяти?
Не важно есть ли расширения или нет но инфа этого типа всегда была OS зависимой, так что
кросс-платформенного решения и через расширения не было. Выход - юзать API конкретной OSи.

Правка: 20 окт. 2017 15:23

NeptuneПостоялецwww20 окт. 201717:30#4
innuendo
> насоздавать текстур до упора ?
А что считается упором? Я вот например на видюхе с 1 Гб памяти могу насоздавать текстур на 1.5-2 гига, и всё работает.

TheLightWay
> Не важно есть ли расширения или нет но инфа этого типа всегда была OS зависимой, так что
> кросс-платформенного решения и через расширения не было. Выход - юзать API конкретной OSи.
А оно разве позволят узнать объём свободной в данный момент памяти? Через реестр можно узнать характеристики железа, но это и WGL_AMD_gpu_association может (см. первый пост).

innuendoПостоялецwww20 окт. 201718:37#5
Neptune
> А что считается упором? Я вот например на видюхе с 1 Гб памяти могу насоздавать
> текстур на 1.5-2 гига, и всё работает.

зачем тебе знать сколько памяти тогда ?

Правка: 20 окт. 2017 19:34

NeptuneПостоялецwww21 окт. 20171:06#6
1.5 гига (разделяемой) памяти - настройка для low-end систем. Для mid и high-end систем лимит - физический объём. Нефиг использовать разделяемую, это тормоза.
Но узнавать объём физической я умею. Надо узнать объём занятой или свободной в данный момент, для правильной работы менеджера памяти. Как я не пытался учитывать занятую память руками (подсчитывая размер текстур, vbo, рендер-буферов), не сходится оно с тем, что показывает GPU-Z или Process Explorer. Какие-то внутренние накладные расходы есть, которые "извне" не учесть.
/A\Постоялецwww21 окт. 201710:12#7
Современные видеокарты могут сжимать текстуры без потери качества, поэтому подсчет размера памяти руками ничего не даст.

как вариант CL_DEVICE_GLOBAL_FREE_MEMORY_AMD
https://www.khronos.org/registry/OpenCL/extensions/amd/cl_amd_dev… ute_query.txt

DimichПостоялецwww21 окт. 201712:17#8
У amd же новое расширение, что-то_performance_counter, там нет памяти?

/ Форум / Программирование игр / Графика

2001—2017 © GameDev.ru — Разработка игр