2016-11-17 327 views
2

最小的失败片段着色器编译时失败:从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 [email protected](GIT @ I5bc0f577f9),此编译失败,与着色器日志阅读:

Internal compiler error: Error: array indexing out of boundary

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

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

回答

1

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,

这不是如果你看一下手机中的一样。

第一款手机(版本为V145.0)基于采用Adreno GPU的Qualcomm Snapdradon,第二款(12p1)基于采用Mali GPU的三星Exynos。

对我来说,这看起来像是Adreno设备驱动程序中的错误,而马里的驱动程序正在正确处理它。