Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Для поддержки масштабирования с сохранением пропорций и настраиваемых режимов масштабирования, начиная с Windows 7 (где DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN7), в данные о путях VidPN, которые используются драйверами минипорта дисплея, добавляются следующие возможности:
структура D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT:
AspectRatioCenteredMax и Custom члены
перечисление D3DKMDT_VIDPN_PRESENT_PATH_SCALING :
Значения D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX и D3DKMDT_VPPS_CUSTOM
Указание режимов масштабирования
Поведение и внешний вид рабочего стола на мониторе с помощью этих режимов масштабирования описано в разделе "Масштабирование образа рабочего стола". Когда диспетчер режима отображения (DMM) вызывает функцию DxgkDdiEnumVidPnCofuncModality, драйвер должен задать членов D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT в соответствии с типами масштабирования, которые поддерживает VidPN, следующим образом:
Масштабирование идентичности
Если путь может отображать содержимое без преобразования, задайте для элемента identityD3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT значение, отличное от нуля. При вызове DxgkDdiEnumVidPnCofuncModality задайте элементу Scaling структуры D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION значение D3DKMDT_VPPS_IDENTITY.
Центрирование масштабирования
Если путь может отображать содержимое в неизмененном масштабе и по центру на целевом объекте, задайте D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT.Centered. Когда вызывается DxgkDdiEnumVidPnCofuncModality, задайте D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION.Скалирование в D3DKMDT_VPPS_CENTERED.
Растянутое масштабирование
Если путь может отображать содержимое, масштабированное для соответствия целевому объекту, не сохраняя соотношение сторон источника, задайте D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Растянутый. Когда вызывается DxgkDdiEnumVidPnCofuncModality, установите D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION.Скалирование в D3DKMDT_VPPS_STRETCHED.
Параметр —Ratio-Preserving растянутое масштабирование
Если путь может масштабировать исходное содержимое, чтобы оно соответствовало целевому объекту, сохраняя пропорции источника, задайте D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. AspectRatioCenteredMax. Когда вызывается DxgkDdiEnumVidPnCofuncModality, установите D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION.Scaling на D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX.
Настраиваемое масштабирование
Если путь может отображать один или несколько режимов масштабирования, которые не описаны другими элементами структуры D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT , задайте D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Настраиваемый. Когда вызывается DxgkDdiEnumVidPnCofuncModality, задайте D3DKMDT_VIDPN_PRESENT_PATH_TRANSFORMATION.Масштабирование на D3DKMDT_VPPS_CUSTOM. Независимые поставщики оборудования (IHVs) могут использовать значения escape-последовательностей, чтобы сообщить драйверу, как интерпретировать пользовательское масштабирование для заданной цели.
Если текущие закреплённые целевой и исходный режимы имеют одинаковые пропорции, но разные размеры, драйвер минипорта отображения должен задать только члены растянутые и центрированные. В этом случае DMM очищает любое ненулевое значение члена AspectRatioCenteredMax .
API для масштабирования DDI
Соответствие значений масштабирования API режима пользователя со значениями масштабирования DDI драйвера минипорта в перечислении D3DKMDT_VIDPN_PRESENT_PATH_SCALING показано в следующей таблице.
SetDisplayConfig Значение масштабирования API | Значение масштабирования DDI |
---|---|
DC_IDENTITY |
D3DKMDT_VPPS_IDENTITY |
DC_CENTERED |
D3DKMDT_VPPS_CENTERED |
DC_STRETCHED |
D3DKMDT_VPPS_STRETCHED |
DC_ASPRATIOMAX |
D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX |
DC_CUSTOM |
D3DKMDT_VPPS_CUSTOM |
DC_PREFERRED |
D3DKMDT_VPPS_PREFERRED |
Это сопоставление можно использовать с таблицами в масштабировании образа рабочего стола , чтобы понять, как типы масштабирования в пользовательском режиме преобразуются в типы масштабирования DDI, которые отправляются в драйвер мини-порта отображения.
Масштабирование и версии драйверов
Поведение различных версий драйвера мини-порта отображения, работающих в разных версиях операционной системы, показано в следующей таблице.
Версия драйвера Версия операционной системы
DXGKDDI_INTERFACE_VERSION<DXGKDDI_INTERFACE_VERSION_WIN7
и
>= DXGKDDI_INTERFACE_VERSION_VISTA
DXGKDDI_INTERFACE_VERSION>= DXGKDDI_INTERFACE_VERSION_WIN7
Windows Vista
Драйвер имеет поведение Windows Vista.
Драйвер должен проверить версию операционной системы во время инициализации и никогда не предоставлять или не использовать элементы AspectRatioCenteredMax и пользовательские элементы D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT. Если драйвер нарушает это требование, DMM игнорирует AspectRatioCenteredMax и Custom и распознает только Identity, Centered или Stretched. Если драйвер пытается закрепить режим масштабирования D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX на любом пути VidPN, DMM вернет код состояния STATUS_GRAPHICS_INVALID_PATH_CONTENT_GEOMETRY_TRANSFORMATION и будет обрабатывать этот режим масштабирования так же, как режим растяжения полноэкранного экрана.
Windows 7
Операционная система очищает значения элементов AspectRatioCenteredMax и Custom и предполагает, что драйвер не поддерживает растянутое масштабирование с сохранением пропорций и настраиваемые режимы масштабирования. DMM устанавливает только режимы масштабирования D3DKMDT_VPPS_IDENTITY, D3DKMDT_VPPS_STRETCHED или D3DKMDT_VPPS_CENTERED. Драйвер работает как в Windows Vista.
Драйвер должен поддерживать параметр AspectRatioCenteredMax, а операционная система использует его в приложениях Панели управления. Драйвер может опционально реализовать нестандартные функции, установив член Custom.
DMM всегда подтверждает, что интерфейс >драйвера = DXGKDDI_INTERFACE_VERSION_WIN7 перед попыткой проверить и использовать AspectRatioCenteredMax или пользовательские элементы D3DKMDT_VIDPN_PRESENT_PATH_SCALING_SUPPORT.
Важный Минипорт-драйвер дисплея, поддерживающий значения D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX или D3DKMDT_VPPS_CUSTOM , никогда не должен задавать значение D3DKMDT_VPPS_NOTSPECIFIED.
Масштабирование с помощью нескольких адаптеров
Значения типов масштабирования D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX и D3DKMDT_VPPS_CUSTOM , представленных в Windows 7, хранятся в базе данных подключения CCD, связанной с графическим блоком обработки (GPU). Если пользователь перемещает монитор с одного GPU с драйвером, поддерживающим эти члены масштабирования на другой GPU, второй GPU может не поддерживаться исходным драйвером. В этом случае операционная система сопоставляет эти типы масштабирования с системным масштабированием по умолчанию.
Если оба GPU поддерживают типы масштабирования D3DKMDT_VPPS_ASPECTRATIOCENTEREDMAX и D3DKMDT_VPPS_CUSTOM, а драйвер для первого GPU реализует запрос на масштабирование D3DKMDT_VPPS_CUSTOM, то если пользователь переключает монитор на второй GPU, драйвер для второго GPU, вероятно, не знает, как интерпретировать пользовательский запрос масштабирования. В этом случае второй драйвер должен завершить вызов функции DxgkDdiCommitVidPn неудачей и должен возвращать код состояния STATUS_GRAPHICS_VIDPN_MODALITY_NOT_SUPPORTED. Операционная система сопоставляет этот тип масштабирования с системным масштабированием по умолчанию.