从 samplerExternalOES 读取纹素时编译时失败
Compile-time failure when reading texels from samplerExternalOES
最小失败片段着色器:
#version 320 es
#extension GL_OES_EGL_image_external_essl3 : require
precision highp float;
precision highp int;
vec4 x(samplerExternalOES sampler) {
return texture(sampler, vec2(0, 0));
}
void main() {
}
在三星 G-930P 上,OpenGL ES 3.2 V@145.0 (GIT@I5bc0f577f9),编译失败,着色器日志如下:
Internal compiler error: Error: array indexing out of boundary
在 Samsung G-930F 上 - 基本相同 phone,相同 Android 版本等,但是 OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,它编译 - 后一个设备可以正确执行更复杂的着色器,这些着色器从 samplerExternalOES
读取纹素。
这是 G-930P 上的 OpenGL ES 实现中的错误吗?这是一种不合理的方法来指定要在 samplerExternalOES
上调用 texture
的函数的参数吗?
Is this a bug in the OpenGL ES implementation on the G-930P?
看起来确实像...
On a Samsung G-930F - essentially the same phone, same Android version, etc. however with OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,
往里看phone就不一样了。
第一个phone(版本 V@145.0)基于使用 Adreno GPU 的 Qualcomm Snapdradon,第二个 (12p1) 基于使用 Mali GPU 的三星 Exynos。
在我看来,这是 Adreno 设备驱动程序中的错误,Mali 的驱动程序正在正确处理它。
最小失败片段着色器:
#version 320 es
#extension GL_OES_EGL_image_external_essl3 : require
precision highp float;
precision highp int;
vec4 x(samplerExternalOES sampler) {
return texture(sampler, vec2(0, 0));
}
void main() {
}
在三星 G-930P 上,OpenGL ES 3.2 V@145.0 (GIT@I5bc0f577f9),编译失败,着色器日志如下:
Internal compiler error: Error: array indexing out of boundary
在 Samsung G-930F 上 - 基本相同 phone,相同 Android 版本等,但是 OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,它编译 - 后一个设备可以正确执行更复杂的着色器,这些着色器从 samplerExternalOES
读取纹素。
这是 G-930P 上的 OpenGL ES 实现中的错误吗?这是一种不合理的方法来指定要在 samplerExternalOES
上调用 texture
的函数的参数吗?
Is this a bug in the OpenGL ES implementation on the G-930P?
看起来确实像...
On a Samsung G-930F - essentially the same phone, same Android version, etc. however with OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,
往里看phone就不一样了。
第一个phone(版本 V@145.0)基于使用 Adreno GPU 的 Qualcomm Snapdradon,第二个 (12p1) 基于使用 Mali GPU 的三星 Exynos。
在我看来,这是 Adreno 设备驱动程序中的错误,Mali 的驱动程序正在正确处理它。