Расширение AMD GL_EXT_gpu_shader4

Я наткнулся на базовую ошибку драйвера OpenGL и не уверен, где о ней сообщить.

Вот как драйвер идентифицирует себя и как мы создаем RC:

OpenGL vendor: X.Org
OpenGL renderer: AMD CARRIZO (DRM 3.26.0, 4.18.0-13-generic, LLVM 7.0.0)
OpenGL version: 4.4 (Compatibility Profile) Mesa 18.2.2
v - using GL version 2.0 (core)

В его списке расширений есть ARB_gpu_shader5, но нет EXT_gpu_shader4.

Этот шейдер не может быть скомпилирован

#version 120
#extension GL_EXT_gpu_shader4: enable
...
uniform usampler2D u_stencilTexture;        

С этой ошибкой:

interaction VFWARNING:CompileShader(glprogs/interaction.fs): FAILED
0:2(12): warning: extension `GL_EXT_gpu_shader4' unsupported in fragment shader
0:27(20): error: syntax error, unexpected NEW_IDENTIFIER, expecting '{'

Итак, мой вопрос: как мне получить шейдер версии 120 с расширением usampler, чтобы он работал на графическом процессоре / драйвере с поддержкой Opengl-4.4?

Желательно кроссплатформенным, кросс-вендорным способом.

Обратите внимание, что один и тот же шейдер прекрасно компилируется на большом количестве устройств / драйверов как в Linux, так и в Windows.

2
задан 3 February 2019 в 14:18

1 ответ

Ваша проблема в том, что вы отмечаете # Версия 120, которая будет GLS 1.20 или OpenGL 2.0. В идеале вы должны использовать как минимум #version 400

. Это расширение технически разработано для GLSL 4.0.x и более поздних версий и OpenGL 4.0. Оно было необязательным в исправленных выпусках OpenGL 4.0 и ядра в 4.2. Чтобы обеспечить поддержку, вы должны использовать GLSL версии 4.20 (т.е. # версия 420 НЕ # версия 120). Он может работать в шейдерах 130+, совместимых с прямой совместимостью, но это не гарантируется, поскольку это зависит от реализации.

Что касается последних чипов и поддержки Mesa, вы можете увидеть обзор на http://www.mesamatrix.net

Как видите, все, кроме freedrino, очень старых чипов nVidia и очень старых Intel Chips поддерживает как минимум GLSL версии 4.20

. Я настоятельно рекомендую не рисковать и использовать #version 420 для ваших шейдеров, если вы не планируете делиться кодом со старыми Mac.

0
ответ дан 12 December 2019 в 17:33

Другие вопросы по тегам:

Похожие вопросы: