Дал тут парочке товарищей проверить свой движок и выяснилось, что на AMD он совершенно не идёт :)
Вопрос: если ли смысл дёргаться или забить? И как на них обстоит дело с Vulkan = нормально?
На Nvidia везде идёт нормально ))) и те, и те тестировались на Windows 7 / 10 x64.
Iron Man
> и выяснилось, что на AMD он совершенно не идёт
ты прикалываешься или просто первый раз ? если первый раз такое - welcome to GL :)
И как на AMD обстоит дело с Vulkan = нормально?
Нормально.
Если ты pushconstant функцией не будешь 256 байт передавать.
АМД только 128 тобишь две матрицы.
Ну и расширения NV не работают на АМД.
Делал Вулкан и тестил свой пример и на NVIDIA и на AMD. Работали это было в 2016 году.
Даже на Win XP Vulkan запустился.
Так же дрова влияют.
Когда скачал в 2018 году, новые дрова Вулкана, то перестали мои примеры запускаться.
Походу некоторые структуры были поправлены в тихоря Кроносами.
Дал тут парочке товарищей проверить свой движок и выяснилось, что на AMD он совершенно не идёт :)
Делай в дебаг режиме GL и выводи инфу в текстовый файл.
Что бы глянуть что не так происходит с твоим движком на АМД видеокартах.
Iron Man
> Дал тут парочке товарищей проверить свой движок и выяснилось, что на AMD он совершенно не идёт :)
Возможно баг на твоей стороне, на убогом АПИ сложно писать, но если все делать аккуратно то работать будет, приведу пример, недавно сделал DrawIndirect при неверном порядке вызово VAO + glBindBuffer ничего не рисовалось, пока не поставил другой порядок вызовов, для сравнения: таких нюансов нету на Direct3D11 :)
1) чего используешь? какая версия? какой контекст?
2) Выкладывай минимальный проект, куски кода, поможем.
3) поддерживаю ronniko, GL_ARB_debug_output/GL_KHR_debug тебе в помощь, не забудь контекст с WGL_CONTEXT_DEBUG_BIT_ARB создать.
но на будущее все-же лучше Vulkan, или Direct3D11 минимум.
Andrey
> для сравнения: таких нюансов нету на Direct3D11
для сравнения - запускается DX11 на Linux/Mac ? 10 лет прошло, каким был, таким и остался :)
> но на будущее все-же лучше Vulkan
рисовать кубики?
Andrey
> 3) поддерживаю ronniko, GL_ARB_debug_output/GL_KHR_debug тебе в помощь, не
> забудь контекст с WGL_CONTEXT_DEBUG_BIT_ARB создать.
мда, если баг в драйвере - никакой debug не поможет
Всё дело в кривом GL, с которого давно пора уже слезать. Баг драйвера для OpenGL - обычное являете, сколько раз уже замечал подобные косяки, взять тоже выключение интерполяции значение между геом и фраг шейдерами, ставишь flat, а интерполяция всё равно идёт на карте NVidia, хотя на AMD карте всё работало как надо; или же вот понадобился compute shader, на AMD карте всё работало, а на nVidia 1080ti - gl_GlobalInvocationID всегда нули выдаёт, бред какой-то... Забил и переписал всё на CUDA.
В общем, если хочешь нормально утилизировать железо, под AMD пиши на OpenGL/Vulkan/OpenCL, под NVidia - DirectX/Vulkan/CUDA
innuendo
> мда, если баг в драйвере - никакой debug не поможет
Я тоже так решил, потому что на нескольких компьютерах с Nvidia идёт без проблем и на Win7, и на Win10. А с AMD не запускается ни на одном!
Пока время терпит, буду до конца осваивать OpenGL, а как опыта наберусь, перейду на Vulkan, всё равно у меня в будущем запланирован переход на него.
А что на счёт DX = крохоборы... нет = крохоборцы (идейные борцы за жалкие крохи) из Майкрософт мне откровенно омерзительны :)
Я хоть и разрабатываю свой движок исключительно под Винду, тем не менее перенёс его на GCC, а опрос геймпада с XInput на Raw Input, так что... )))
Всем спасибо = суть ясна!
Iron Man
> А с AMD не запускается ни на одном!
что, конкретно, не работает?
innuendo
Приложение просто вылетает, на одном компьютере успевает слинковать и сохранить кэш шейдерных программ (значит контекст создаётся и расшаривается), а на другой даже и этого нет.
Но если я не ошибаюсь, там видеокарта поддерживает только OGL 4.3 (на которой программы не слинковались), хотя, что самое интересное = на Nvidia с поддержкой OGL 4.3 пошло!
Я инициализирую контекст версии 4.6, расширения у меня используются пока не старше версии 4.3, только шейдеры грузятся SPIR-V (версия 4.6).
Iron Man
> Приложение просто вылетает,
в каком месте вылет?
>на одном компьютере успевает слинковать и сохранить кэш шейдерных программ (значит контекст создаётся и расшаривается)
расшаренный контект? многопоточность что-ли? компилируешь шейдеры в разных потоках?
>OGL 4.3 (на которой программы не слинковались),
>расширения у меня используются пока не старше версии 4.3, только шейдеры грузятся SPIR-V (версия 4.6).
Наверное так: ты пытаешься подсунуть SPIR-V для AMD c OGL 4.3 который SPIR-V не поддержитвает, следовательно не линкует, ты потом может пытаешься рисовать и все падает.
Ivashka
> Побираетесь у Гейтца, понятно
а причём тут Гейтц, дрова на CUDA и под Linux есть, Vulkan тоже под линуксом пашет, вот DX конечно же - виндус онли, да ну и хрен с ним, идеальный вариант - делать свою ось...
P.S.: сам сижу на винде :)
Iron Man
> Приложение просто вылетает, на одном компьютере успевает слинковать и сохранить
> кэш шейдерных программ (значит контекст создаётся и расшаривается), а на другой
> даже и этого нет.
вот жесть ... неужеле нельзя проще писать ?
Ошибка на вашей стороне.
> GL_ARB_debug_output/GL_KHR_debug тебе в помощь, не забудь контекст с WGL_CONTEXT_DEBUG_BIT_ARB создать.
тут полностью поддерживаю
> на убогом АПИ сложно писать
Очень субъективное суждение
0r@ngE
> > на убогом АПИ сложно писать
> Очень субъективное суждение
просто кто-то сначала оптимизирует
Тема в архиве.