vk.com

Выберите язык

Команда Wine выпустила vkd3d версии 1.13

Команда vkd3d с гордостью сообщает, что теперь доступна версия 1.13 vkd3d, библиотеки переводов Direct3D в Vulkan.

Этот выпуск содержит улучшения, перечисленные в примечаниях к выпуску ниже. Основными моментами являются:

  • Базовая поддержка развертывания цикла в компиляторе HLSL.
  • Компилятор эффектов поддерживает несколько объектов состояния версии 4.0+.
  • Исправлены различные ошибки.

Исходный код доступен по следующему адресу:

https://dl.winehq.org/vkd3d/source/vkd3d-1.13.tar.xz

Текущий исходный код также можно извлечь непосредственно из репозитория git:

https://gitlab.winehq.org/wine/vkd3d.git

Что нового в vkd3d 1.13

libvkd3d

  • Поддерживается интерфейс ID3D12CommandList6.

  • Текстуры, сжатые блоками, могут создаваться с не выровненными размерами. Это соответствует D3D12_FEATURE_D3D12_OPTIONS8. Поддерживается unalignedblocktexturess.

  • Устранены некоторые незначительные проблемы, на которые указывали уровни проверки Vulkan. Известно, что они не влияют на приложения на практике, но должны сделать libvkd3d немного более корректным поведением.

libvkd3d-шейдер

  • Новые возможности для исходного кода типа HLSL:

    • Базовая поддержка развертывания цикла. Некоторые из более сложных случаев, такие как циклы, содержащие условные переходы, по-прежнему не поддерживаются.
    • Значения инициализации глобальных переменных, параметров функций и переменных аннотаций анализируются и сохраняются в поддерживающих их выходных форматах.
    • Регистровые пространства шейдерной модели 5.1 поддерживаются при использовании соответствующих целевых профилей, а также данных отражения шейдерной модели 5.1.
    • Резервирования регистров поддерживают выражения в качестве смещений. Например: ‘float f : register(c0[1 + 1 * 2]);’
    • Поддерживаются варианты встроенных функций tex1D(), tex2D(), tex3D() и texCUBE() с явными производными.
    • Поддерживаются следующие встроенные функции:
      • asint()
      • f16tof32()
      • faceforward()
      • GetRenderTargetSampleCount()
      • rcp()
      • tex2Dbias()
      • tex1Dgrad(), tex2Dgrad(), tex3Dgrad() и texCUBEgrad()
    • Встроенные функции sin() и cos() поддерживаются в профилях shader model 1-3. Они уже поддерживались в профилях shader model 4+.
    • Следующие функции специфичны для целевых профилей эффектов:
      • Типы, поддерживаемые в версии 4.0+:
        • BlendState
        • ComputeShader, DomainShader, GeometryShader и HullShader
        • DepthStencilState
        • Состояние растеризатора
      • Функции приложения State реализованы для эффектов версии 4.0+:
        • OMSetRenderTargets()
        • SetBlendState()
        • SetComputeShader(), SetDomainShader(), SetGeometryShader(), SetHullShader(), SetPixelShader() и SetVertexShader()
        • SetDepthStencilState()
        • SetRasterizerState()
      • Строковые типы. В основном они используются для аннотаций.
      • Аннотации к глобальным переменным.
      • Поддержка поля ‘Texture’ типа ‘SamplerState’.
      • Поддержка нулевых значений.
    • Сохраняет в swizzled переменные матрицы.
    • Поддерживается модификатор типа ‘unsigned’. (Например, ‘unsigned int’.) Обратите внимание, что ‘uint’ и связанные типы уже поддерживались.
    • типы ‘ConstantBuffer<>’.
    • Семантический вывод ‘SV_Coverage’ для шейдеров фрагментов.
  • Экспериментальный исходный код DXIL поддерживает операции с четырьмя группами.

  • Инструкция Direct3D shader model 2-3 ‘texldb’ корректно дизассемблируется при выводе сборки Direct3D shader.

  • Новые интерфейсы:

    • Структура vkd3d_shader_parameter_info расширяет структуру vkd3d_shader_compile_info и может использоваться для указания параметров шейдера. Это более универсальная версия интерфейса параметров шейдера для целевых объектов SPIR-V в struct vkd3d_shader_spirv_target_info.
    • Значение перечисления VKD3D_SHADER_PARAMETER_DATA_TYPE_FLOAT32 указывает, что параметр шейдера содержит 32-разрядные данные с плавающей запятой.
    • Параметр шейдера VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_FUNC определяет функцию альфа-тестирования.
    • Параметр шейдера VKD3D_SHADER_PARAMETER_NAME_ALPHA_TEST_REF задает эталонное значение альфа-теста.
    • Параметр шейдера VKD3D_SHADER_PARAMETER_NAME_FLAT_INTERPOLATION задает режим интерполяции для ввода цвета в шейдерах фрагментов Direct3D shader model 1-3.
    • Значение перечисления VKD3D_SHADER_PARAMETER_TYPE_BUFFER указывает, что значение параметра шейдера предоставляется во время выполнения через ресурс буфера.