mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Revert: "Change how OpenGL textures are flipped in the Android embedder" (flutter/engine#50158)
Reverts #49938. This broke `packages/packages/camera/camera/example`, and unfortunately there is no test (in engine, framework, or packages) that would have caught this. We also suspect (but are not sure) that this is related to an internal customer reported bug as well (b/322750489). --- Here is the output _pre_-revert:  Here is the output _post_-revert: 
This commit is contained in:
parent
028c80cee5
commit
2c36f428af
@ -57,17 +57,11 @@ void SurfaceTextureExternalTexture::Paint(PaintContext& context,
|
||||
if (dl_image_) {
|
||||
DlAutoCanvasRestore autoRestore(context.canvas, true);
|
||||
|
||||
// The incoming texture is vertically flipped, so we flip it back.
|
||||
//
|
||||
// OpenGL's coordinate system has Positive Y equivalent to up, while Skia's
|
||||
// coordinate system (as well as Impeller's) has Negative Y equvalent to up.
|
||||
{
|
||||
// Move (translate) the origin to the bottom-left corner of the image.
|
||||
context.canvas->Translate(bounds.x(), bounds.y() + bounds.height());
|
||||
|
||||
// No change in the X axis, but we need to flip the Y axis.
|
||||
context.canvas->Scale(1, -1);
|
||||
}
|
||||
// The incoming texture is vertically flipped, so we flip it
|
||||
// back. OpenGL's coordinate system has Positive Y equivalent to up, while
|
||||
// Skia's coordinate system has Negative Y equvalent to up.
|
||||
context.canvas->Translate(bounds.x(), bounds.y() + bounds.height());
|
||||
context.canvas->Scale(bounds.width(), -bounds.height());
|
||||
|
||||
if (!transform_.isIdentity()) {
|
||||
DlImageColorSource source(dl_image_, DlTileMode::kClamp,
|
||||
@ -78,8 +72,7 @@ void SurfaceTextureExternalTexture::Paint(PaintContext& context,
|
||||
paintWithShader = *context.paint;
|
||||
}
|
||||
paintWithShader.setColorSource(&source);
|
||||
context.canvas->DrawRect(SkRect::MakeWH(bounds.width(), bounds.height()),
|
||||
paintWithShader);
|
||||
context.canvas->DrawRect(SkRect::MakeWH(1, 1), paintWithShader);
|
||||
} else {
|
||||
context.canvas->DrawImage(dl_image_, {0, 0}, sampling, context.paint);
|
||||
}
|
||||
|
||||
@ -48,11 +48,8 @@ void SurfaceTextureExternalTextureGL::ProcessFrame(PaintContext& context,
|
||||
// Create a
|
||||
GrGLTextureInfo textureInfo = {GL_TEXTURE_EXTERNAL_OES, texture_name_,
|
||||
GL_RGBA8_OES};
|
||||
auto backendTexture = GrBackendTextures::MakeGL(
|
||||
/*width=*/bounds.width(),
|
||||
/*height=*/bounds.height(),
|
||||
/*Mipmapped=*/skgpu::Mipmapped::kNo,
|
||||
/*glInfo=*/textureInfo);
|
||||
auto backendTexture =
|
||||
GrBackendTextures::MakeGL(1, 1, skgpu::Mipmapped::kNo, textureInfo);
|
||||
dl_image_ = DlImage::Make(SkImages::BorrowTextureFrom(
|
||||
context.gr_context, backendTexture, kTopLeft_GrSurfaceOrigin,
|
||||
kRGBA_8888_SkColorType, kPremul_SkAlphaType, nullptr));
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user