Немного подробнее о доступе к видеопамяти современных видеокарт

Тема в разделе "WASM.OpenGL", создана пользователем DarkDen, 8 апр 2020.

Метки:
  1. DarkDen

    DarkDen New Member

    Публикаций:
    0
    Регистрация:
    2 май 2017
    Сообщения:
    5
    Доброго дня, уважаемые и достопочтенные писатели всяких низкоуровневых штук. Чтобы описать свой вопрос мне необходимо начать с предыстории.

    Однажды мой приятель купил видеокарту на бу рынке и, вопреки моим предупреждениям, не проверил её должным образом (то есть вообще никак). Через определённое время получил проблему с вылетами. Без ошибок, без предупреждений - игра просто крашилась. Я быстро понял, что к чему и попоросил его пройти тесть VRAM через MemTestCL. Как и ожидалось - ошибки чтения памяти.

    И теперь уже мы подходим к сути вопроса. Первым, что приходит в голову, является предположение о возможности подмены видеобуффера на участок виртуальной памяти, что указывает только на блоки видеопамяти, что не являются битыми. А для этого нужно понять следующую вещь - и она же суть вопроса - как именно происходит обращение к видеопамяти в драйвере?
     
    Последнее редактирование: 10 апр 2020
  2. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    561
    Это же ринг 0, уровень драйвера, а так в "диспетчер устройств" можно посмотреть диапазон памяти.
    Хотя я только в VGA и немного SVGA в досе понимаю.
    -------------------------
    Код (ASM):
    1.  
    2. ;считывает область буфера кадров во внеэкраную область
    3. glReadPixels(x:dword, y:dword, width1:dword, height:dword, format:dword, type1:dword, pixels:ptr )
    4. ;копирует область буфера кадров в другую область буфера кадров
    5. glCopyPixels(x:dword, y:dword, width1:dword, height:dword, type1:dword)
    6. ;рисует заданную пиксельную карту в буфер кадров
    7. glDrawPixels(width1:dword, height:dword, format:dword, type1:dword, pixels:ptr )
    У меня в Win7 не работает glDrawPixels! А в WinXP работает. Порты демок с VGA MS-DOS делал.
     
  3. M0rg0t

    M0rg0t Well-Known Member

    Публикаций:
    0
    Регистрация:
    18 окт 2010
    Сообщения:
    1.574
    В порядке оффтопа - тут один деятель 5 лет доказывает всем, что в видеокартах АМД есть какой-то специально встроенный баг, который проявляется только на семерке (якобы это заговор и ничего сделать нельзя).

    вроде в книги Фень Юаня "программирование графики виндовс" было что-то на эту тему.