Uncomment the Java compositor integration, except for the part that causes PowerVR crashes

This commit is contained in:
Patrick Walton 2012-02-10 23:03:02 -08:00
Родитель b59a4a57f8
Коммит fd17ee20f7
3 изменённых файлов: 23 добавлений и 6 удалений

Просмотреть файл

@ -224,6 +224,7 @@ public class GeckoGLLayerClient extends GeckoLayerClient
// Create the shaders and textures if necessary. // Create the shaders and textures if necessary.
if (!mLayerRendererInitialized) { if (!mLayerRendererInitialized) {
mLayerRenderer.onSurfaceCreated(null, null); mLayerRenderer.onSurfaceCreated(null, null);
mLayerRendererInitialized = true;
} }
// FIXME: This geometry is surely wrong. // FIXME: This geometry is surely wrong.

Просмотреть файл

@ -212,6 +212,8 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, maxTextureSizeResult, 0); GLES20.glGetIntegerv(GLES20.GL_MAX_TEXTURE_SIZE, maxTextureSizeResult, 0);
mMaxTextureSize = maxTextureSizeResult[0]; mMaxTextureSize = maxTextureSizeResult[0];
/*
// Add the program to the OpenGL environment // Add the program to the OpenGL environment
GLES20.glUseProgram(mProgram); GLES20.glUseProgram(mProgram);
@ -219,12 +221,19 @@ public class LayerRenderer implements GLSurfaceView.Renderer {
GLES20.glUniformMatrix4fv(mTMatrixHandle, 1, false, TEXTURE_MATRIX, 0); GLES20.glUniformMatrix4fv(mTMatrixHandle, 1, false, TEXTURE_MATRIX, 0);
// Enable the arrays from which we get the vertex and texture coordinates // Enable the arrays from which we get the vertex and texture coordinates
Log.e(LOGTAG, "### Position handle is " + mPositionHandle + ", texture handle is " +
mTextureHandle + ", last error is " + GLES20.glGetError());
// FIXME: This crashes PowerVR drivers. Seems that we cannot actually use multiple GL
// programs reliably.
GLES20.glEnableVertexAttribArray(mPositionHandle); GLES20.glEnableVertexAttribArray(mPositionHandle);
GLES20.glEnableVertexAttribArray(mTextureHandle); GLES20.glEnableVertexAttribArray(mTextureHandle);
GLES20.glUniform1i(mSampleHandle, 0); GLES20.glUniform1i(mSampleHandle, 0);
TextureGenerator.get().fill(); TextureGenerator.get().fill();
*/
} }
public int getMaxTextureSize() { public int getMaxTextureSize() {

Просмотреть файл

@ -2388,30 +2388,37 @@ nsWindow::GetIMEUpdatePreference()
#ifdef MOZ_JAVA_COMPOSITOR #ifdef MOZ_JAVA_COMPOSITOR
void void
nsWindow::DrawWindowUnderlay(LayerManager* aManager, nsIntRect aRect) { nsWindow::DrawWindowUnderlay(LayerManager* aManager, nsIntRect aRect) {
#if 0 AndroidBridge::AutoLocalJNIFrame jniFrame(GetJNIForThread());
TransformLayerUserData* userData =
static_cast<TransformLayerUserData*>(aManager->GetUserData(nsGkAtoms::transform)); mozilla::layers::LayerUserData* userData = aManager->GetUserData(nsGkAtoms::transform);
mozilla::layers::TransformLayerUserData* transformUserData =
static_cast<mozilla::layers::TransformLayerUserData*>(userData);
NS_ABORT_IF_FALSE(userData, "No transform user data!"); NS_ABORT_IF_FALSE(userData, "No transform user data!");
// Transform the unit square to figure out the offset and scale we need. // Transform the unit square to figure out the offset and scale we need.
gfxRect rect(0, 0, 1, 1); gfxRect rect(0, 0, 1, 1);
userData->matrix.TransformBounds(rect); transformUserData->matrix.TransformBounds(rect);
AndroidGeckoLayerClient& client = AndroidBridge::Bridge()->GetLayerClient(); AndroidGeckoLayerClient& client = AndroidBridge::Bridge()->GetLayerClient();
AndroidGeckoGLLayerClient& glClient = static_cast<AndroidGeckoGLLayerClient&>(client); AndroidGeckoGLLayerClient& glClient = static_cast<AndroidGeckoGLLayerClient&>(client);
glClient.CreateFrame(mLayerRendererFrame, rect.x, rect.y, rect.width); glClient.CreateFrame(mLayerRendererFrame, rect.x, rect.y, rect.width);
#if 0
mLayerRendererFrame.DrawBackground(); mLayerRendererFrame.DrawBackground();
#endif #endif
} }
void void
nsWindow::DrawWindowOverlay(LayerManager* aManager, nsIntRect aRect) { nsWindow::DrawWindowOverlay(LayerManager* aManager, nsIntRect aRect) {
#if 0 AndroidBridge::AutoLocalJNIFrame jniFrame(GetJNIForThread());
NS_ABORT_IF_FALSE(!mLayerRendererFrame.isNull(), NS_ABORT_IF_FALSE(!mLayerRendererFrame.isNull(),
"Frame should have been created in DrawWindowUnderlay()!"); "Frame should have been created in DrawWindowUnderlay()!");
#if 0
mLayerRendererFrame.DrawForeground(); mLayerRendererFrame.DrawForeground();
mLayerRendererFrame.Dispose();
#endif #endif
mLayerRendererFrame.Dispose();
} }
#endif #endif