Buffer line driver что это

Обновлено: 05.07.2024

Железо у нас опять не менялось (хотя кое-что в прошивке мы обязательно поменяем в следующей статье), поэтому начнем с обзора того, что нам предстоит сделать.
Несмотря на то, что наш драйвер из прошлой статьи уже умеет выводить графику, использовать его в полной мере (например, вывести консоль или запустить графическое приложение) весьма затруднительно. Дело в том, что подобные приложения требуют вполне определенного, стандартизованного интерфейса, так называемого фреймбуфера. При регистрации фреймбуфера в системе нам необходимо будет заполнить несколько специализированных структур-дескрипторов, на этот раз куда более специфических, чем просто абстрактные «файловые операции», которые мы заполняли в прошлый раз. Операции там тоже будут, но кроме них будут специальные колбэки, такие, как fb_imageblit (вызывается, когда кто-то хочет перенести блок бит с изображением в определенное место экрана), fb_copyarea (похожий перенос, но блок бит берется не из внешнего буфера а из видеопамяти) и т.п. Кроме того, будут структуры с описанием разрешения экрана, битности цвета и того, как в этой «битности» расположены цветовые компоненты.

Первое, что нужно осознать: у нас несколько нестандартная ситуация, если сравнивать с видеокартами PC (хотя для эмбеддед устройств вполне себе обычная) — наше устройство не имеет как таковой видеопамяти, к которой мы могли бы обращаться — точнее, память-то оно имеет, ту самую GRAM, запрятанную в недрах дисплея, но доступ у нас к ней только через «окошко» в 16 бит шириной. Памяти на борту тоже не настолько много, чтобы хранить там весь буфер кадра.
К счастью, в линуксе для этого предусмотрен специальный подход — для нас уже написаны функции с префиксом "sys_", например, "sys_imageblit", которые реализуют необходимую фреймбуферу функциональность, работая с областью оперативной памяти системы как с буфером кадра.
То есть, если буфер кадра у нас размещен в видеокарте и у нас есть аппаратная поддержка подобных операций, мы в колбэках просто пинаем нашу железку, отдавая команду «выполнить перенос блока бит» или «скопировать область видеопамяти».
Если же у нас ничего этого нет, мы выделяем в ядре память, размером равную нашему буферу кадра, и в колбэках вызываем эти самые функции с префиксом "sys_", которые выполняют необходимые операции в RAM.
Таким образом, можно получить полностью работающий фреймбуфер, который вообще не будет взаимодействовать с железом — такой драйвер уже есть и он называется vfb, virtual framebuffer. Его исходный код лежит в drivers/video/vfb.c.
Если к такому драйверу добавить периодическую посылку данных на реальное устройство мы получим уже настоящий драйвер фреймбуфера. Но перед тем, как мы займемся этим, давайте немного понастраиваем нашу систему и потренируемся на виртуальном драйвере, vfb.

Включаем поддержку графики в ядре
  1. Для того, чтобы мы увидели консольный вывод в памяти фреймбуфера (ну и на экране, если он настоящий, а не виртуальный) необходимы два драйвера — это, собственно, драйвер самого фреймбуфера, который создаст устройство /dev/fb[x] и драйвер консоли, работающий поверх него — это драйвер fbcon
  2. В ядре, соответственно, должна быть включена поддержка фреймбуферов, поддержка виртуальных терминалов (абстракция, объединяющая в себе устройство вывода+устройство ввода, дисплей и клавиатуру), поддержка отображения системной консоли на таких терминалах (да, это тоже можно отключить, тогда системная консоль будет выводиться только на физически существующие символьные устройства вроде ком-портов), сам драйвер fbcon, а также какой нибудь из доступных вбилденных в него шрифтов.
  3. Тот самый пункт, который я в начале упустил, когда не мог понять, почему ничего не выводится — нужно сообщить ядру, что необходимо выводить содержимое системной консоли на тот /dev/tty[x], который сцапал fbcon!
    Дело в том, что драйвер fbcon пытается захватить первый доступный /dev/tty[x], например, tty0. Но ядро ничего туда не выводит, это ни к чему не привязанная абстракция, т.к. на нем не запущено ни приложение, позволяющие логиниться в системе, ни вывод системной консоли.
    Для того чтобы решить эту проблему мы должны во-первых сказать ядру, что мы хотим видеть системную консоль на /dev/tty0 (впрочем, это опционально, если вдруг кто-то не хочет видеть процесс загрузки и системный вывод, то этот пункт можно опустить), а во-вторых сообщить иниту, что там нужно запустить софт для логина

Сейчас мы проделаем все три пункта относительно драйвера виртуального фреймбуфера, и, когда получим картинку в памяти, перейдем к написанию своего. fbcon и драйвер фреймбуфера могут быть сбилдены либо оба статически, либо оба в виде подключаемых модулей, либо кто-нибудь один статически, второй динамически — проблем это не вызовет, fbcon сцапает фреймбуфер сразу, как только его увидит.
Правда, при работе с vfb есть одна тонкость — чтобы его активировать, необходимо передать модулю параметр vfb_enable=1, либо запустить ядро с параметром "video=vfb". С модулем работать будет проще, поэтому ограничимся им. fbcon же вбилдим в ядро.

  1. Выполняем make kernel_menuconfig и заходим в пункт Device Drivers
  2. Включаем Graphics Support — Support for frame buffer devices, после чего нам становится доступен список самих драйверов, в котором выбираем Virtual framebuffer.
  3. Возвращаемся уровнем выше, идем в Character devices и включаем там

Virtual terminal
Enable character translations in console
Support for console on virtual terminal
Support for binding and unbinding console drivers

Последнее, что нам нужно сделать перед пересборкой — зайти в make menuconfig и включить в предоставляемые busybox возможности утилиту fbset, которая позволит задать параметры нашего фреймбуфера. Она находится в меню Base System — Busybox — Linux SyStem Utilities

Теперь можно пересобирать ядро. В build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic/linux-3.6.9/dri
vers/video/
забираем то, что с расширением .ko
Вопреки ожиданиям, он там будет не один, включение драйвера, использующего функции с префиксом "sys_" активирует сборку нескольких модулей, в которых эти самые функции лежат. Что интересно, в принципе, ничего не мешает вбилдить их статически в ядро, оставив драйвер подключаемым модулем, однако из меню мне этого сделать не удалось, пришлось писать соответствующий патч к Kconfig-файлу. Но это мы сделаем позже, а сейчас просто перешьем роутер новой прошивкой и перекинем на него все модули.

После заходим по SSH на роутер и идем /etc. Открываем файл inittab и видим там что-то вроде этого:


В последней строке как раз и сказано, что нужно запустить софт для логина (в данном случае, как и все системные бинарники — часть busybox'а) на ttyATH0, последовательном порту. При этом указано (askfirst) что для активации этой консоли нужно будет сначала нажать enter.
Добавляем еще одну строчку:


Посмотрим, правильно ли указаны параметры ядра через


и перезагрузим роутер.
Теперь по очереди инсмодим все, кроме драйвера vfb, а в самом конце пишем

После этого мы в dmesg должны увидеть слова наподобие этих: Console: switching to colour frame buffer device 53x21
Размеры консоли будут отличаться в зависимости от выбранного шрифта. Установим фреймбуферу параметры, более похожие на параметры нашего дисплея:


Это полезная пара команд, которая нам ни раз пригодится — без этого не выгрузить драйвер фреймбуфера, т.к. он будет занят консолью.
Очень не помешает подключить к роутеру клавиатуру — можно вслепую ввести команды clear и dmesg чтобы быть уверенным, что на виртуальном дисплее что-то есть.
После получаем «скриншот» командой



4x4



6x11



8x8



4x4



6x11



8x8

Пишем драйвер фреймбуфера

Для начала — о подходе. Очевидным и не очень хорошим решением стало бы периодическое обновление всего экрана — можно было бы завести таймер, который бы кидал все содержимое фреймбуфера по USB уже знакомыми нам из прошлой статьи командами. Однако есть куда более правильное решение, так называемое deferred io.
Суть его проста: нам нужно только указать функцию-колбэк, задать интервал времени и зарегистрировать это самое deferred io для нашего фреймбуфера. При регистрации виртуальная память будет настроена так, что обращение к памяти буфера кадра вызовет исключение, которое поставит наш колбэк в очередь на обработку через заданный нами интервал. При этом операция записи в память не прервется! А когда вызовется колбэк, в него будет передан список страниц, которые были изменены. Не правда ли, очень удобно? Юзерспейс может спокойно писать в видеопамять не задумываясь ни о чем и не прерываясь, при этом периодически будет дергаться наш колбэк со списком страниц памяти, которые были изменены — нам нужно будет кидать на устройство только их, а не весь буфер.

Так как освобождение фреймбуфера — задача не такая простая, как кажется на первый взгляд (USB-устройство может уже отсутствовать, но сам фреймбуфер клиенты еще не отпустят и чистить память в этот момент никак нельзя), мы поступим не очень хорошо — напишем себе жирнейшим шрифтом TODO и клятвенно пообещаем реализовать правильную очистку и отключение устройства чуть-чуть позже, а пока напишем все остальное, чтобы наконец, увидеть плод своих действий. Нормальную очистку вместе с допиливанием прошивки видеокарты (что поднимет FPS минимум в два раза) мы обязательно рассмотрим в следующей статье.

Начнем с простого — так как нам будет приходить список страниц, в которые была произведена запись, проще всего заранее сохранить координаты на экране, соответствующие началу страницы а также указатель на соответствующую ей область памяти. Поэтому создадим структуру с этими полями, не забыв добавить атомарный флаг, показывающий, требуется ли данной странице апдейт. Это необходимо, т.к. внутренние операции фреймбуфера, те, что выполняются через функции с префиксом "sys_" не вызывают наш хендлер deferred io, поэтому нам нужно будет вручную посчитать, к каким страницам было обращение и пометить их как подлежащие апдейту.

Здесь все прозрачно, единственное что — храним длину, т.к. последняя страница может быть неполной — нам ни к чему слать дисплею лишние данные.
Объявим несколько дефайнов, связанных с размерами дисплея — количество пикселей в странице, количество страниц во фреймбуфере и т.п.
PAGE_SIZE задефайнена за нас, в исходниках ядра.

Объявим требуемые колбэки операций с фреймбуфером и колбэк-хендлер нашего deferred io.

Далее идет структура с неизменяемой информацией о дисплее.

Тоже все просто — задаем строковый ID нашего дисплея, тип пикселей — другие нас не интересуют, у нас самый обычный битмэп, цвет у нас truecolor, во всяком случае близко к нему и уж точно не монохромный и не direct color.
Далее идет более интересная структура с (потенциально) переменной информацией. Но так как возможность смены разрешения мы реализовывать не будем, для нас она будет такой же постоянной как и в прошлой структуре.

Тут мы видим уже знакомые по fbset видимое и виртуальное разрешения, физические размеры дисплея в миллиметрах (можно задать, в принципе, любыми, я задал такими же, как и его разрешение), битность изображения, и — важные структурки — описатели того, как цветовые компоненты расположены в байтах. В них первым значением идет смещение, вторым длина в битах и третьим — флаг, «значащий бит справа».
Последней объявляем структуру отложенного ввода-вывода, deferred io.


Выбор значения периода, поля .delay, задача, большей частью, эмпирическая — если выбрать слишком маленькое значение, обновление будет происходить реже, чем позволяет аппаратура, если выбрать слишком большое — будет забиваться очередь отложенных работ. Наш дисплей в данный момент более чем тихоходный, причем это определяется полностью USB, а не выводом на экран. В реализации из первой статьи полная перерисовка экрана возможно с частотой не выше 3.6 FPS. Но не стоит отчаиваться — во-первых, мы не всегда будем перерисовывать весь экран, а во-вторых, уже в следующей статье, я покажу как выжать максимум из имеющегося у нас железа, так что FPS подскочит до

На чтение сразу запишем колбэк из тех, что "sys_", нам там делать нечего. Во всех остальных нам нужно будет еще пометить соответствующие страницы на обновление, так что указываем свои.
Структура-дескриптор нашего девайса почти не изменится со времен предыдущей статьи, опишем ее.

В нее добавился массив наших описателей страниц видеопамяти. Вообще-то, статически размещать большие объемы данных в ядре не рекомендуется, но сама структура у нас вышла небольшая, да и по количеству их всего 38, поэтому, чтобы не морочиться с лишними указателями оставим этот массив статическим, 760 байт или около того ядро как-нибудь осилит.
Последнее поле, pseudo_palette — место под псевдо-палитру, которую требует fbcon. Заполняется она в колбэке .fb_setcolreg, без которого fbcon отказывается работать. Во всех дровах, что я видел, этот колбэк выглядит копипастнутым из файла-примера фреймбуфера из исходников ядра, поэтому мы тоже не будем изобретать велосипед, тем более что, кроме fbcon этим, похоже, никто и не пользуется. С него и начнем.

Это, как я уже сказал, стандартный код для такого колбэка, включая макрос CNVT_TOHW, который используется для получения значений цветовых компонентов. Его также таскают из драйвера в драйвер — не совсем понятно, почему его в итоге не внесут в основной заголовочный файл fb.h.
Задача данного колбэка — заполнить 16-цветную псевдопалитру, к которой будет обращаться уже упомянутый драйвер консоли.
Теперь объявим небольшую функцию, которой мы будем передавать, по сути, прямоугольник, в области которого было произведено воздействие на видеопамять. Функция вычислит, какие страницы видеопамяти затронуты этим прямоугольником, поставит им флаг «требуется апдейт» и запланирует выполнение того же колбэка, который зовется в случае deferred io. После этого все колбэки операций сведутся к вызову функций "sys_" и написанной нами функции, которую мы обзовем touch, по аналогии с командой в Linux.

Код, я думаю, вполне понятен — просто вычисляем какие страницы мы затронули исходя из разрешения, округляем всегда в большую сторону, а точнее — просто берем с запасом, по одной странице с обоих концов.
Теперь опишем все остальные колбэки — они становятся очень простыми:

Теперь опишем, наконец, наш колбэк от deferred io, который будет слать информацию на дисплей. Он во многом будет совпадать с колбэком .write из прошлой статьи. Будем писать в дисплей по страницам, не забывая приписывать, как и в прошлой статье, к ним требуемый заголовок. Благодаря нашей структуре videopage координаты x, y и длины уже посчитаны, так что все что нужно — просто запихнуть это в буфер и кинуть по USB.

Так как в этот колбэк мы можем попасть честным путем(через deferrd io), а можем — по собственному почину (запланировав его выполнение в одном из колбэков операций, вызвав display_touch), мы просто пробежимся по всем переданным нам страницам, если таковые имеются, и пометим их как подлежащие апдейту.
Если мы попали сюда не через отложенный ввод-вывод, то список просто будет пустым.
После этого мы просто проходимся по всем страницам атомарно проверяя необходимость апдейта и выполняя этот самый апдейт путем синхронной посылки по USB. В следующей статье, когда будем допиливать драйвер до нормального состояния, мы заменим синхронную посылку более правильным механизмом, именуемым USB Request Block, или URB. Он позволит кинуть USB-хосту запрос на отправку данных и сразу же вернуться к дальнейшей обработке. А о том, что URB долетел (или не долетел) до получателя нам сообщат в прерывании. Это позволит выжать еще чуть-чуть FPS из нашей системы (не превышая, однако, теоретического предела, о котором я говорил выше).
Нам осталось совсем чуть-чуть — раз уж мы решили поступить плохо и не чистить за собой, то осталось только инициализировать все в колбэке Probe.

Здесь мы сначала выделяем память под наш дескриптор устройства, потом под структуру описателя фреймбуфера, и только потом — под сам фреймбуфер. Обратите внимание — выделяем через vmalloc. Отличие от kmalloc состоит в том, что vmalloc может перенастроить таблицы страниц виртуальной памяти, и «собрать по кусочками» запрошенный нами буфер. То есть для нас он будет выглядеть единым блоком памяти, но физически он может состоять из страниц даже близко не находящихся друг с другом. kmalloc же возвращает память, которая и физически является единым блоком. Так как мы запрашиваем достаточно большой кусок, хорошей практикой будет воспользоваться vmalloc.
Все, компиляем, инсмодим, и если все сделано правильно лицезреем консоль на дисплее!

Заключение

Первая Кирандия



Хабр в консольном браузере (шрифт VGA8x8)



Оболочка Gmenu2X



Встроенный в нее файловый браузер



Настройки

SN74HC240PW, Буфер и драйвер линии

Фото 2/4 SN74HC240PW, Буфер и драйвер линии
Фото 3/4 SN74HC240PW, Буфер и драйвер линии
Фото 4/4 SN74HC240PW, Буфер и драйвер линии

Семейство инверторов 74HC, amp; Буферы, Texas Instruments
Серия инверторов и буферов Texas Instruments из семейства 74HC логических микросхем CMOS. В семействе 74HC используется технология CMOS с кремниевым затвором для достижения рабочих скоростей, аналогичных семейству LSTTL, но с низким энергопотреблением стандартных интегральных схем CMOS.

Технические параметры

Техническая документация

Сроки доставки

Доставка в регион Барнаул

1 ориентировочно, дата доставки зависит
от даты оплаты или подтверждения заказа

Перевод Радиотехнических Терминов

O5-14

Спасибо большое за помощь) видать не до конца проснулся на момент поиска)

Здравствуйте. Собираю батарею с элементов 18650, 3S4P - 12.6В., подключать буду через BMS контроллер как на рисунке. Ёмкость аккумуляторов ещё не проверял, если взять примерно 1 элемент = 1А, получится 12А. Потребуется зарядное, нашёл схему такого зарядного устройства (схему приложу ниже "По такому принципу") . Вот подумал переделать выходную часть ЗУ ноутбука (+19В 4.7А), когда разобрал его, увидел что почти по такому принципу он сделан. Нарисовал схему, рисую не ахти, но как получилось, надеюсь что правильно нарисовал. Собрано на смд компонентах и плохо видно дорожки, прозванивал тестером. Правильно ли я понял, что на моей схеме, U1.2 - стабилизация тока. а +15В это для управления ЗУ? если на TL431 собрана стабилизация выходного напряжения, то что собрано на U1.1?

vg155

тимвал

Решили делайте. Данную тему уже поднимали однако на выходе ничего не случилось. Можете посмотреть там есть масса ссылок и полезной информации. А можете сперва почитать книгу Негуляева. "Сварочный инвертор-это просто". Гуглится и скачивается без проблем.

Mesa Boogie Clearlink SEND BUFFER / LINE-DRIVER – профессиональный гитарный буфер

Mesa Boogie Clearlink SEND BUFFER / LINE-DRIVER – профессиональный гитарный буфер

Несмотря на расцвет «цифрового» гитарного звука, огромное количество профессиональных гитаристов придерживается «аналогового» взгляда на гитарное усиление и эффекты. Они формируют свое звучание с помощью ламповых гитарных усилителей и педалбордов разных размеров и степени сложности. Однако, тут есть свои подводные камни - по мере увеличения количества педалей в педалборде, громкость гитарного сигнала, проходящего по педалбору, все сильнее и сильнее снижается, а вместе с ней уменьшается количество верхних частот. Все это ощутимо снижает яркость, громкость и читаемость звука, делая его невнятным и размытым.

  • Самый первый элемент (гитара -> буфер -> педалборд -> усилитель) – применяется при большом количестве педалей в педалборде
  • На выходе из педалборда (гитара -> педалборд -> буфер -> усилитель) – применяется в случае, если между педалбордом и усилителем есть длинный кабель.

Mesa Boogie CLEARLINK SEND позволяет сохранить все нюансы сигнала в случае, когда между педалбордом и гитарным усилителем находится длинный отрезок кабеля. Поступающий с педалборда сигнал получает +12 dB к громкости и при этом не приобретает никакого ненужного окраса – это позволяет сигналу пройти еще 100 метров кабеля без каких-либо изменений в звучании. Если использовать CLEARLINK SEND вместе с входным буфером Mesa Boogie STOWAWAY, то вместе они создадут идеальную схему, которая не позволит сигналу вашей гитары потерять яркость в большом педалборде или в длинном кабеле между педалбордом и усилителем.

Кроме того, в Mesa Boogie CLEARLINK SEND предусмотрен встроенный ди-бокс (Di-box), что позволяет трансформировать поступающий небалансный сигнал в балансный, а затем передать его по XLR-кабелю на любое расстояние без опасности затухания и без влияния наводок и фона.

картинка 4.jpg

Если вам важно не только сформировать в педалборде правильное звучание, но и передать его на любое расстояние в первозданном виде, то буфер Mesa Boogie CLEARLINK SEND BUFFER / LINE-DRIVER – ваш выбор!

Купить гитарный буфер Mesa Boogie CLEARLINK SEND BUFFER / LINE-DRIVER можно по ссылке

Настройки "глобальных параметров" драйвера для видеокарт NVidia на максимальную производительность, без потери в качестве.

Анизотропная фильтрация нужна для повышения четкости изображения 3д объектов относительно камеры (персонажа, машины и т.д). Выставляем значение Application-controlled (Управление от приложения) - это означает, что приложение будет автоматически выбирать нужный режим анизотропной фильтрации, или же фильтрация управляется в самом приложении (программе, игре), чем выше значение фильтрации, тем четче будет изображение. На производительность практически не влияет.

Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает анизотропную фильтрацию.

Antialising - Gamma correction (Сглаживание - гамма- коррекция) - ставим значение On (Вкл)

"Сглаживание гамма коррекции" сглаживает гамму при переходе от светлого тона к темному или же наоборот. Включение дает возможность сглаживать моменты, например, при "свечении" лица персонажа в лучах света (прямой пример - игра Devil May Cry 4 с отличной игрой светлый и темных тонов). На производительность не влияет.

Antialising Mode (Сглаживание - режим) - ставим значение Application-controlled (Управление от приложения)

Очень важный параметр, включение режима сглаживания дает возможность избавления от эффекта лесенок на трехмерном объекте. Выставляем значение Application-controlled (Управление от приложения). - это означает, что приложение будет автоматически выбирать нужный режим сглаживания, или же сглаживание будет управляться в самом приложении (программе, игре), чем выше значение сглаживания, тем меньше эффекта лесенок будет, чем ниже будет производительность приложения, тем меньше будет кадров в секунду. На производительность влияет негативно.
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), при этом вам станет доступен пункт Antialising Setting (Сглаживание - параметры), где вы сможете вручную задать уровень сглаживания от 2х до 16х. Даже если приложение не поддерживает сглаживание, это будет делать за него сам драйвер видеокарты.

Anti-aliasing Setting (Сглаживание - параметры) - автоматическое значение Application-controlled (Управление от приложения). Проверьте значение в самом приложении. Желательно не более 4х.

При включении предыдущего пункта Anti-aliasing Mode (Сглаживание - параметры) - Application-controlled (Управление от приложения) текущее значение будет неактивно, активно лишь в том случае, если значение Anti-aliasing Mode (Сглаживание - параметры) - Enhance the application setting) (Замещение настроек приложения или увеличение настроек приложения).
Для каждого приложения данный параметр можно настроить отдельно (вкладка программные настройки), получив более высокое качество, если приложение не поддерживает или некорректно обрабатывает Anti-aliasing (сглаживание). Читайте пункт выше.

Anti-aliasing - Transparency (Сглаживание - прозрачность) ставим значение Off (Выкл)

Сглаживание прозрачных поверхностей означает, что объекты, не имеющие структуру, будут сглаживаться. Например, будет сглаживать "прозрачные" места в текстурах лестницы, ведь лестницы, например, рисуют единой текстурой, использую альфа-канал для указания прозрачных и не прозрачных мест. На производительность влияет не очень сильно, но если вам производительность все же важнее, можете поставить "Выкл".
В целом же, особой разницы в качестве картинки между ситуациями, когда эта опция включена или выключена, замечено не было.

Conformant texture clamp (Соответствующая привязка текстуры) - параметр Use hardware (Используются аппаратные средства)

Как видно из названия, выбор метода текстурирования, конечно же, оптимальным в качестве и производительности выбираем на уровни железа - Use hardware (Используются аппаратные средства) - что естественно производительней чем софтвенный (программный) режим.

Бессмысленный параметр, включение которого дает возможность при случае ошибки драйвера отправлять все данные о ошибке и конфигурацию ПК разработчикам NVidia.
(Один из бессмысленных параметров, выключение которого позволит сделать безлимитный доступ драйверу к коду приложения при обработке графики, естественно, все ограничения снимаем значением Off (Выкл))

Force mipmaps (Включение масштабируемых текстур) - значение None (Нет)

Устаревшие значение работы 3д приложений. Отключаем, так как приложения уже не используют данный метод, значение - None (Нет).

Maximum pre-render frames (Максимальное количество заранее подготовленных кадров) - значение 1 или 2 (выбирайте в зависимости от мощности вашего ЦП)

Максимальное количество кадров после первого, которые может подготовить ЦП для дальнейшей обработки ГП видеокарты. При одном кадре, от 1 до 8 кадров будут подготавливаться наперед, загружаться в память, нагружая ваш ЦП во время подготовки этих кадров. Ставим значение 1 или 2, это позволит капитально увеличить скорость обработки графики в реальном времени. Кол-во кадров выберете сами, но все же рекомендую не более 3. Ориентируйтесь, исходя из мощности вашего ЦП (центральный процессор, не путайте с ГП - графическим процессором).

Multi-display/mixed - GPU acceleration (Ускорение нескольких дисплеев/смешанных ГП)- значение Single display performance mode (Режим однодисплейной производительности)

Проще говоря, если выставлен режим Multi display performance mode (Режим многодисплейной производительности), то графический процессор (ГП) вашей видеокарты отрисовывает изображение для обоих портов видеокарты. А если выставлен режим Single display performance mode (Режим однодисплейной производительности), то сигнал будет идти только на один из портов.
Так что, если у вас одна видеокарта и один монитор, то ставьте в обязательном порядке Single display performance mode (Режим однодисплейной производительности).
Заметьте, что когда вы установили новые драйвера на видеокарту, по умолчанию стоит режим Multi display performance mode (Режим многодисплейной производительности) это означает, что, будь у вас два монитора, то, подключив его к второму видеовыходу, на него тоже бы шел рендеринг изображения. Теряется производительность где то на 5-15%. В общем режим Single display performance mode (Режим однодисплейной производительности) повышает производительность за счет рендеринга на один видеовыход). Увеличивает производительности в 3д приложениях.

Texture filtering - Anisotropic sample optimization (Фильтрация Текстур - анизотропная оптимизация по выборке ) - значение Off (Выкл)

Фильтрация текстур - Анизотропная оптимизация, данный параметр выставляется значением Off, так как данный параметр увеличивает производительность в 3D приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен. (Если в параметре Texture filtering (Фильтрация текстур - качество) выставлено - Hight quality (Высокое качество), то данный параметр будет неактивен, выключен.)

Texture filtering - Negative LOD bias (Фильтрация текстур - отрицательное отклонение УД) - значение Clamp (Привязка)

Фильтрация текстур с использованием негатива с масштабируемым уровнем детализации, выставляем значение Clamp (Привязка), что позволит оптимизировать текстурные процедуры путем привязки. Это позволит получить дополнительные 2-3 ФПС в производительности рендеринга, без потери качества. Увеличивает производительности в 3д приложениях.

Texture filtering (Фильтрация текстур - качество) - значение Quality (Качество) или Hight quality (Высокое качество). (Выбирайте в зависимости от мощности вашей видеокарты)

Фильтрация текстур, позволяет улучшить качество картинки, четкость изображения без понижения производительности в рендеринге, соответственно ставим значение Hight quality (Высокое качество). На производительность практически не влияет.

Texture filtering - Trilinear optimization (Фильтрация текстур - трилинейная оптимизация) - значение Off (Выкл)

Фильтрация текстур - трилинейная оптимизация, данный параметр выставляется значением Off, если параметр Texture filtering - Quality (Фильтрация текстур - качество) стоит на значении High quality (Высокое качество), то данный параметр будет неактивен.
О параметре Texture filtering - Trilinear optimization (Фильтрация текстур - трилинейная оптимизация) хочу отметить, что он увеличивает производительность в 3д приложениях за счет ухудшения конечной картинки при рендеринге видеокартой. Но так как мы стремимся к скорости без потери качества, то нам этот параметр не нужен, к тому же Trilinear filtering (Трилинейная фильтрация) намного старше и у неё есть свои минусы, так же как и у двулинейной (билинейной) фильтрации. Тем более Anisotropic filtering (Анизотропная фильтрация) "практически" включает в себя оба этих метода фильтрации текстур с некоторой доработкой.

Threaded optimization (Потоковая оптимизация) - значение On (Вкл). (Включайте только если у вас многоядерный процессор, если нет, поставьте "Авто")

Оптимизация драйвера видеокарты под многоядерные процессоры, лакомый кусочек для обладателей 2х - 4х ядерных процессоров. По умолчанию значение стоит Auto (Авто), но судя по проведенным тестам, в приложениях автоматически выставлялось Off (Выкл), но так как мы стремимся увеличить производительность, то выставляем значение On (Вкл). Увеличивает производительности в 3д приложениях.

Triple buffering (Тройная буферизация) - значение Off (Выкл)

Тройная буферизация экрана, буферизирует несколько кадров при вертикальной синхронизации, что позволяет более плавно сгладить переход кадров, тем самым снижает производительность в 3д приложениях. Ставим значение Off (Выкл), тем самым отключая ненужную буферизацию. На производительность влияет негативно.

Vertical sync (Вертикальный синхроимпульс - значение Force off (Отключить)

Вертикальная синхронизация кадров, через вертикальный синхроимпульс синхронизируется количество кадров в секунду с частотой обновления вашего монитора, тем самым убирая некий эффект "разрыва картинки" (на экране это будет выглядеть, например, при резком повороте камеры, будто верхняя часть экрана чуть уехала в сторону, по отношению к нижней), при быстрой смене кадров. При этом, зачастую сильно падает FPS (кол-во кадров в секунду), оно не столь значительно падает, только если у вас монитор обновляется с частотой выше 100-120 Гц в секунду, но даже при такой частоте все равно FPS снижается на 10-15%. Ставим значение Off (Выкл), тем самым отключая ненужную вертикальную синхронизацию. На производительность влияет негативно.

Ambient occlusion - Значение "Выкл"

Ambient occlusion - модель затенения, используемая в трёхмерной графике и позволяющая добавить реалистичности изображению за счёт вычисления интенсивности света, доходящего до точки поверхности.
Ambient occlusion чаще всего вычисляется путём построения лучей, исходящих из точки поверхности во всех направлениях, с последующей их проверкой на пересечение с другими объектами.
Этот процесс очень прилично нагружает видеокарту, так что смотрите сами, если видеокарта мощная, можете включить. А если нет, то лучше выключить.
В целом же, на мой взгляд, не стоит этот эффект того, что поедает =) Особой разницы вы все равно не увидите, она есть, но минимальна и заметна, только если внимательно присматриваться и знать, что искать =)

Читайте также: