Две недели назад было открыто сообщение об ошибке, связанной с тем, что при использовании графики Radeon RX 7900 XT или Radeon Pro WX 9100 деревья шейдерных узлов Eevee в Blender’е работают необычайно медленно. В настоящее время уже добавлено исправление, сокращающее время компиляции шейдеров с примерно 251 секунды до 9 секунд.
Себастьян Парборг (Sebastian Parborg) из команды Blender Studio обнаружил, что «компиляция шейдеров занимает слишком много времени на наших графических процессорах AMD» при использовании их графического оборудования AMD в Linux с Blender. Далее Парборг пояснил:
«Например, некоторые сцены с большим количеством шейдерных деревьев компилировались за 20 секунд на наших графических процессорах Nvidia, в то время как на наших графических процессорах AMD компиляция шейдеров занимала более 16 минут. В связи с этим мы были вынуждены заменить многие графические процессоры AMD, поскольку предварительный просмотр рендеров или настройка шейдерных деревьев стали невозможны для наших художников, работающих на графических процессорах AMD. Даже финальные рендеры стали невозможны из-за этого.
Я создал сильно урезанный файл примера, который должен продемонстрировать проблему. Я пробовал этот файл на WX 9100 и RX 7900XT. В обоих случаях компиляция шейдеров без кэша занимает около 2-3 минут. На картах Nvidia, которые я тестировал, компиляция занимает 6-7 секунд без кэша».
В течение нескольких дней после публикации сообщения об ошибке проблема была проанализирована, причем большую часть анализа и работы выполнили инженеры Valve.
Тимоти Арсери (Timothy Arceri) из команды Valve по работе с графикой Linux в итоге предложил изменение, значительно оптимизирующее nir_opt_copy_prop_vars в NIR-компиляторе Mesa. В результате время компиляции шейдеров Blender, проверенное Арсери, сократилось с 251 секунды до всего лишь 9 секунд! Для тестового примера CTS это улучшение также составляет от 2,38 до 0,68 секунды для более обычного шейдера.
Вчера код был перенесен в Mesa 23.3-devel. Тестирование в Blender Studio также показало, что время компиляции шейдеров теперь сопоставимо с временем компиляции при использовании графического драйвера NVIDIA. Таким образом, графика AMD Linux вновь становится подходящей для разработчиков Blender при работе с тяжелыми шейдерами.