Open ashie opened 8 years ago
Linuxでは本来GLXの方がデフォルト(EGLはパッチを当てないとコンパイルすら通らない)なので、 GLXの方がよくテストされているはずであり、表示の問題を直せばEGLよりも安定する可能性はある。
結局どのリポジトリにも入れていないと思うが、手元のビルド環境にお試しパッチが残っていた。 (あくまでもお試しなのでコメントとコードが合わなくなっちゃってるけど)
commit 26da701251567547191ca66a29424bac4054f97b
Author: Takuro Ashie <ashie@homa.ne.jp>
Date: Fri May 13 18:12:03 2016 +0900
Avoid crash which occurs when GLX is enabled on vivante GPU
diff --git a/gfx/layers/opengl/OGLShaderProgram.cpp b/gfx/layers/opengl/OGLShaderProgram.cpp
index a9f79e2..5c474ff 100644
--- a/gfx/layers/opengl/OGLShaderProgram.cpp
+++ b/gfx/layers/opengl/OGLShaderProgram.cpp
@@ -570,17 +570,13 @@ ShaderProgramOGL::CreateShader(GLenum aShaderType, const char *aShaderSource)
mGL->fShaderSource(sh, 1, (const GLchar**)&aShaderSource, nullptr);
mGL->fCompileShader(sh);
mGL->fGetShaderiv(sh, LOCAL_GL_COMPILE_STATUS, &success);
- mGL->fGetShaderiv(sh, LOCAL_GL_INFO_LOG_LENGTH, (GLint*) &len);
/* Even if compiling is successful, there may still be warnings. Print them
* in a debug build. The > 10 is to catch silly compilers that might put
* some whitespace in the log but otherwise leave it empty.
*/
- if (!success
-#ifdef DEBUG
- || (len > 10 && gfxEnv::DebugShaders())
-#endif
- )
+ if (!success)
{
+ mGL->fGetShaderiv(sh, LOCAL_GL_INFO_LOG_LENGTH, (GLint*) &len);
nsAutoCString log;
log.SetCapacity(len);
mGL->fGetShaderInfoLog(sh, len, (GLint*) &len, (char*) log.BeginWriting());
i.MX6ではEGLを使ってCompositorOGLを使うことができているが、GLXも有効化できるようにしたい。
現状では、GLXを有効化するとクラッシュする。
落ちている箇所は以下
ドライバの問題と思われる。
上記を回避するようにすると起動することはできるが、表示が大きく乱れる。