Change Log
hal-0.9.0 (18-06-2021)
- Это последний опубликованный релиз gfx-hal для ящиков. Разработка gfx-hal в основном велась под влиянием wgpu, который теперь перешёл на собственную абстракцию GPU: wgpu-hal. Таким образом, gfx-hal будет находиться в режиме обслуживания до тех пор, пока не будет выяснена история переносимости графики. Подробнее о переходе читайте в #3768.
- MTL: Предотвращение доступа к NSView из других потоков.
- Устранение паники при повторном открытии приложений Android.
- Поддержка динамических размеров массивов на металле.
- Добавлены независимые от бэкенда записи RenderDoc.
- Разрешена инициализация объектов gfx из необработанных дескрипторов.
- Добавление недостающих функций в бэкенд dx12, необходимых wgpu.
- Сделан публичным PhysicalDevice::enabled_extensions.
- Добавлена возможность импорта иностранной памяти.
- GLES: Отложенное удаление шейдеров до завершения компоновки.
- GLES: Исправлены текстуры.
- GLES: Исправлено ближайшее соседство фильтрации.
- Разное: исправления документации.
backend-metal-0.8.2 (08-05-2021)
- исправление ссылок на QuartzCore.
hal-0.8.0 (29-04-2021)
- Naga является обязательным и предпочтительным путём перевода шейдеров в Metal и OpenGL.
- Включение SPIRV-Cross является необязательным за функцией
cross
.
API:
- все бэкэнды могут создавать модули шейдеров из
naga::Module
.
- режимы сокращения сэмплеров (минимальные/максимальные сэмплеры).
- создание представлений изображений требует указания
image::Usage
.
- запрос периода метки времени перемещён в очередь.
-
DescriptorLimits
добавлен для объединения связанных с дескрипторами ограничений, а его поля изменены с usize
на u32
.
- Структуры
Capabilities
и Limits
объединены в PhysicalDeviceProperties
.
- Записи для Mesh Shading и Descriptor Indexing добавлены в
PhysicalDeviceProperties
.
- индексирование дескриптора буфера.
- разреженная привязка памяти.
- цвет блендера переименован в константы блендера.
- API отладки захвата для взаимодействия с XCode/RenderDoc/PIX.
- улучшены ошибки создания шейдеров и конвейеров.
Инфраструктура:
- добавлен новый пример «bench».
Бэкэнд Metal:
- поддержка кэша конвейера с двоичными архивами.
- интеграция профилирования.
- неизменяемая поддержка сэмплов на пути Naga.
- улучшение изменения размера окна, предоставление опции «представить с транзакцией».
hal-0.7.0 (30-01-2021)
- Удалены границы
Borrow
и ExactSizeIterator
для итераторов.
Ошибки:
- использование
thiserror
для ошибок.
- варианты и несколько имён реорганизованы.
Внешние ограничения синхронизации API теперь соответствуют Vulkan, изменения
&mut
затронули следующие параметры:
- событие в
Device::set_event
и Device::reset_event
.
- забор в
Device::reset_fences
и Queue::submit
.
- наборы назначения в
write_descriptor_sets
и copy_descriptor_sets
.
- память в
map_memory
и unmap_memory
.
- очередь в
Queue::wait_idle
.
- семафор в
Queue::present
.
Улучшения ImageFeature
:
- новый бит
STORAGE_READ_WRITE
, указывающий, что хранилище можно читать и записывать в рамках одного вызова отрисовки/отправки.
- новые биты
TRANSFER_SRC
и TRANSFER_DST
, следующие VK_KHR_maintenance1
.
- новый бит
SAMPLED_MINMAX
, следующий VK_EXT_sampling_minmax
.
Фреймбуферы становятся без изображений, следуя VK_KHR_imageless_framebuffer
.
Старая модель swapchain удалена, а новая обновлена, чтобы ещё лучше соответствовать бэкэндам.
Отладочные имена поддерживаются для всех объектов.
Другие изменения API:
-
bind_index_buffer
теперь не требует отдельной структуры.
- удалены множественные версии
reset_fence
и create_xx_pipeline
.
- изображения swapchain можно использовать для операций передачи.
- отдельная функция для сравнения изменяемых сэмплов.
- векторы дескрипторов конвейера заменены срезами.
- функции для ненормированных изменяемых сэмплеров.
- структура
Capabilities
с поддерживаемыми флагами динамического состояния.
Улучшения OpenGL бэкэнда:
- наконец, API полностью соответствует gfx-hal.
- теперь использует только OpenGL ES на Linux/Android/Web целях.
- модель привязки была полностью переписана.
- различные исправления в рендеринге, отображении памяти и других областях. бэкенд-dx12-unreleased
- исправить выбор точки входа SPIR-V
бэкенд-vulkan-0.6.5 (15-10-2020)
- поддерживать различные типы дескрипторов в одном
DescriptorSetWrite
бэкенд-dx12-0.6.3 бэкенд-dx11-0.6.1 бэкенд-metal-0.6.2 auxil-0.5.1 (31-08-2020)
- обновить spirv_cross до 0.21:
- принудительно инициализировать нулями все сгенерированные шейдеры
- использовать собственные массивы для MSL
бэкенд-dx12-0.6.7 (12-10-2020)
- обеспечить надлежащую поддержку сжатых текстур
бэкенд-dx12-0.6.6 (05-10-2020)
- разрешить использование цветовых коэффициентов смешивания на альфа-канале
бэкенд-dx12-0.6.5 (04-10-2020)
- реализовать маркеры командного буфера
- отладочные имена для проходов рендеринга и наборов дескрипторов
бэкенд-vulkan-0.6.3 (30-09-2020)
- включить VK_KHR_maintenance3 при включении VK_EXT_descriptor_indexing
бэкенд-dx12-0.6.4 бэкенд-vulkan-0.6.2 бэкенд-metal-0.6.3 (23-09-2020)
- исправить функции индексации дескриптора
бэкенд-dx11-0.6.4 (07-09-2020)
- исправить диапазоны сброса памяти
- поддержка режимов представления
бэкенд-dx11-0.6.3 (04-09-2020)
- исправить сопоставление, видимое ЦП
- исправить сброс UAV
бэкенд-dx11-0.6.2 (02-09-2020)
- исправить фильтрацию привязок по этапам шейдера
- реализация копий из буферов в текстуры R8, RG8 и RGBA8
- исправление поддержки буфера хранения только для чтения
- устранение состояния гонки во внутренних операциях шейдера
auxil-0.6.0 (02-09-2020)
- обновление до более новой версии spirv_cross для соответствия бэкендам
бэкэнд-dx12-0.6.3 (02-09-2020)
- исправить индексацию корневой подписи
- принудительная инициализация переменных шейдера нулями
бэкенд-metal-0.6.2 (02-09-2020)
- обеспечение совместимости с эмулятором iOS
- принудительная инициализация переменных шейдера нулями
- использование собственных массивов для MSL
бэкенд-dx11-0.6.1 (02-09-2020)
- принудительная инициализация переменных шейдера нулями
бэкенд-metal-0.6.1 (23-08-2020)
- исправить проверки слоёв в
clear_image
бэкенд-dx12-0.6.2 (19-08-2020)
- включение мультисэмплинга и меток объектов
бэкенд-dx12-0.6.1 (18-08-2020)
- исправить привязку дескриптора
бэкенд-vulkan-0.6.1 (17-08-2020)
hal-0.6.0 (15-08-2020)
- Изменения API:
- старая модель цепочки обмена Vulkan полностью удалена
- перечисление
pso::Stage
удалено из API в gfx-auxil::ShaderStage
-
SubresourceRange
позволяет не связанным массивам слоёв и уровням mipmap
- новое перечисление
PrimitiveAssemblerDesc
-
DescriptorPool::free_sets
переименован в просто free
- Функции:
- метки объектов для конвейеров и их макетов
- рисование с косвенными счётчиками
- шейдеры сетки (только для Vulkan с расширением NV, пока что)
бэкенд-dx12-0.5.10 (16-08-2020)
- исправить связывание динамических однородных буферов
бэкенд-dx12-0.5.9 (14-08-2020)
- исправить создание представлений глубины-затенения
- исправить ошибку сброса командного распределителя
- исправить сбой при
unconfigure_swapchain
бэкенд-dx11-0.5.2 (29-07-2020)
- обновить libloading до 0.6
бэкенд-vulkan-0.5.11 (22-07-2020)
- переход от
core-graphics
к core-graphics-types
.
бэкенд-металл-0.5.6 (21-07-2020)
- обновление металла до 0.20
- перейти от
cocoa
к cocoa-foundation
.
- удалить зависимость от core-graphics
бэкенд-металл-0.5.5 (20-07-2020)
- обновить какао до 0.22 и металл до 0.19.
бэкенд-вулкан-0.5.10 (10-07-2020)
- пропустить неизвестные типы памяти
бэкенд-пустой-0.5.2 (06-07-2020)
- имитация функций создания набора дескрипторов
бэкенд-пустой-0.5.1 (30-06-2020)
- начать превращать пустой бэкенд в макет вместо постоянного паники
- макет функций создания памяти и буфера и изображения
hal-0.5.3 бэкенд-dx12-0.5.8 бэкенд-vulkan-0.5.9 (27-06-2020)
- добавить функцию
DRAW_INDIRECT_COUNT
и включить на поддерживаемых бэкэндах
hal-0.5.2 бэкенд-dx12-0.5.7 бэкенд-металл-0.5.4 бэкенд-vulkan-0.5.8 (12-06-2020)
- добавить функции индексирования дескрипторов и включить на поддерживаемых бэкэндах
hal-0.5.1 бэкэнд-dx12-0.5.6 бэкенд-металл-0.5.3 бэкенд-vulkan-0.5.7 (10-06-2020)
- добавить функцию
TEXTURE_DESCRIPTOR_ARRAY
и включить на поддерживаемых бэкэндах backend-dx12-0.5.5 (01-06-2020)
- Реализовать уничтожение пула дескрипторов.
backend-dx12-0.5.4 (29-05-2020)
- Исправить обнаружение интегрированных графических процессоров.
- Исправить неопределённое поведение в
compile_shader
.
backend-dx11-0.5.1, backend-dx12-0.5.3, backend-gl-0.5.1, backend-metal-0.5.2 (05-05-2020)
- Обновить spirv_cross до версии 0.20.
backend-dx12-0.5.2 (05-04-2020)
- Исправить расчёт смещения для корневых дескрипторов.
backend-dx12-0.5.1 (01-01-2020)
- Исправить потерю физических устройств.
- Обрабатывать ситуацию потери устройства во время ожидания забора.
- Переработать способ ожидания swapchain для получения новых кадров.
backend-vulkan-0.5.6 (27-04-2020)
- Изящно определять, когда драйвер поддерживает функцию, но оборудование — нет.
backend-vulkan-0.5.3 (25-04-2020)
- Перейти на
VK_LAYER_KHRONOS_validation
.
backend-vulkan-0.5.2 (01-04-2020)
- Исправить поддержку
AMD_NEGATIVE_VIEWPORT_HEIGHT
.
backend-metal-0.5.1 (26-03-2020)
- Исправить отладочное утверждение для диапазона индексного буфера.
- Исправить функцию
NDC_Y_FLIP
.
backend-vulkan-0.5.1 (26-03-2020)
- Исправить цветные маркеры отладки.
- Исправить определение режима
MirrorClamp
.
hal-0.5.0 (23-03-2020)
- Изменения API:
- выделение командных буферов или наборов дескрипторов больше не затрагивает кучу;
-
DescriptorType
теперь является богатым перечислением;
- признак
RangeArg
удалён, вместо этого требуются смещения, а размеры необязательны;
- удалены перечисления
Anisotropic
и SubpassRef
в пользу опций.
- Функции:
- маркеры отладки;
- новый режим
WrapMode::MirrorClamp
;
- пространство NDC с Y-переворотом;
- дескрипторы хранилища только для чтения.
backend-metal-0.4.3 (22-02-2020)
- Поддержка версии 2.2 языка шейдинга Metal.
backend-vulkan-0.4.2 (13-02-2020)
- Обход ошибки Intel в swapchain при получении изображений.
backend-dx12-0.4.3 (07-01-2020)
- Устранить сбой при инициализации.
backend-dx11-0.4.4, backend-dx11-0.4.5 (06-01-2020)
- Отключить когерентную память из-за её неработоспособности.
- Полностью переписать модель привязки.
backend-metal-0.4.2 (18-11-2019)
- Исправить отсутствующий iOS metallib.
- Исправить область просмотра/ножниц после вызова
clear_attachments
.
hal-0.4.1 (04-11-2019)
- Реализации ошибок.
- Исправление
ShaderStageFlags::ALL
.
backend-dx12-0.4.1, backend-dx11-0.4.2 (01-11-2019)
- Переход на явное связывание «d3d12.dll», «d3d11.dll» и «dxgi.dll».
backend-dx12-0.4.1 (01-11-2019)
- Переход к явному связыванию «d3d12.dll» и «dxgi.dll».
hal-0.4.0 (23-10-2019)
- Все строго типизированные оболочки HAL удалены.
- Всё использование
failure
удалено.
- Альтернативная модель swapchain встроена в
Surface
.
- Признак
Instance
связан с Backend
, теперь включает создание и уничтожение поверхности.
- Возможности запроса
Surface
реорганизованы, PresentMode
превращён в битовые флаги.
- Структуру
Primitive
реорганизовали и переместили в модуль pso
.
- Структуру
SamplerInfo
реорганизовали и переименовали в SamplerDesc
.
- Метки отладки для объектов.
backend-dx12-0.3.4 (13-09-2019)
- Улучшение внешних барьеров рендеринга прохода.
backend-metal-0.3.3 (05-09-2019)
- Исправлены неизменяемые сэмплеры в комбинированных образцах изображений.
backend-vulkan-0.3.3 (03-09-2019)
- Исправлено построение iOS.
backend-vulkan-0.3.2, backend-dx12-0.3.2 (30-08-2019)
- Добавление методов
try_create
для Instance
.
backend-metal-0.3.1 (21-08-2019)
- Исправление утечек памяти в проходе рендеринга и создании меток.
hal-0.3.0 (08-08-2019)
- Графический конвейер состояний рефакторинга.
- По умолчанию отключена функция
winit
.
- Поддержка событий.
- Экспонировано больше ограничений устройства.
- Vulkan: исправлены диапазоны swapchain, динамические состояния трафарета.
- DX12: поддержка «только для чтения» хранилища.
- Металл: поддержка аргументов буфера, реальные неизменяемые образцы.
- GL: вычислительные шейдеры, новая модель памяти, поддержка WebGL и множество других полезных функций.
backend-dx12-0.2.4 (02-08-2019)
- Оптимизация видимости шейдеров дескрипторами.
backend-dx12-0.2.3, backend-metal-0.2.4 (01-08-2019)
- Исправление выставленных возможностей MSAA и разрешений.
backend-dx12-0.2.2 (29-07-2019)
- Исправление паники при создании представления изображения.
backend-backend-metal-0.2.3 (10-07-2019)
- Фиксированная поддержка режима отсечения глубины, обновление spirv-cross. бэкенд-dx12-0.2.1, бэкенд-метал-0.2.2, бэкенд-empty-0.2.1 (28-06-2019)
— реализации отладки для экземпляра;
бэкенд-вулкан-0.2.2 (14-06-2019);
— разрешить сборку на macOS для портативности Vulkan;
бэкэнд-метал-0.2.1 (14-06-2019):
— устранены утечки памяти в дескрипторах проходов рендеринга и строках функций;
хал-0.2.1 (10-06-2019):
— реализации отладки;
бэкенд-вулкан-0.2.1 (23-05-2019):
— исправление проверки VK_EXT_debug_utils при запуске;
хал-0.2.0 (10-05-2019):
— поддержка кэша конвейера;
— улучшенные сообщения об ошибках;
— более удобные константы специализации;
— реализация отладки;
— согласованные имена форматов;
— больше ограничений;
— свойства альфа-композиции поверхности;
— флаги создания пула дескрипторов;
— удаление FrameSync;
бэкенд-дх11-0.1.1 (05-03-2019):
— исправлены флаги привязки буфера;
— синхронизация несвязанных CB через операции копирования;
— виды текстур глубинных текстур;
бэкенд-дх12-0.1.2 (04-03-2019):
— нетипизированные форматы для текстур;
— исправлена привязка вершинного буфера;
— исправлено представление не-массивов текстур массива;
бэкенд-металл-0.1.1 (21-02-2019):
— вторичные командные буферы;
— несколько исправлений iOS;
— фиксированные размеры поверхности;
бэкенд-дх12-0.1.1 (04-02-2019):
— get_fence_status;
бэкенд-пустой-0.1.0 (04-02-2019):
— создание фиктивной поверхности;
хал-0.1.0 (27-12-2018):
— gfx-hal: уровень абстракции графического оборудования;
— gfx-backend-*: Vulkan, D3D12, D3D11, Metal и GL;
— range-alloc: вспомогательная структура для управления диапазонами;
— небезопасные квалификаторы для всех методов API;
— неклонируемые командные буферы и ресурсы.
Опубликовать ( 0 )