【问题标题】:Compile-time failure when reading texels from samplerExternalOES从 samplerExternalOES 读取纹素时编译时失败
【发布时间】:2016-11-17 18:58:32
【问题描述】:

最小的失败片段着色器:

#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),编译失败,着色器日志读取:

内部编译器错误:错误:数组索引超出边界

在三星 G-930F 上 - 基本上是相同的手机、相同的 Android 版本等,但是使用 OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,它可以编译 - 后一个设备可以正确执行更复杂的着色器,从samplerExternalOES 读取纹素。

这是 G-930P 上的 OpenGL ES 实现中的错误吗?这是指定要在samplerExternalOES 上调用texture 的函数的参数的不合理方式吗?

【问题讨论】:

    标签: android opengl-es glsl glsles


    【解决方案1】:

    这是 G-930P 上的 OpenGL ES 实现中的错误吗?

    看起来确实像……

    在三星 G-930F 上 - 基本上是相同的手机、相同的 Android 版本等,但是使用 OpenGL ES 3.2 v1.r12p1-00dev0.60546d7cd0bfd82d0ba92ca3bb825c75,

    看手机内部就不一样了。

    第一款手机(版本 V@145.0)基于使用 Adreno GPU 的 Qualcomm Snapdradon,第二款(12p1)基于使用 Mali GPU 的三星 Exynos。

    在我看来,这是 Adreno 设备驱动程序中的错误,而 Mali 的驱动程序正在正确处理它。

    【讨论】:

      猜你喜欢
      • 2015-02-04
      • 2018-04-26
      • 2014-03-10
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多