diff --git a/engine/src/flutter/impeller/compiler/shader_lib/impeller/BUILD.gn b/engine/src/flutter/impeller/compiler/shader_lib/impeller/BUILD.gn index 5609ce4d3aaa9..17810f2ebe3c1 100644 --- a/engine/src/flutter/impeller/compiler/shader_lib/impeller/BUILD.gn +++ b/engine/src/flutter/impeller/compiler/shader_lib/impeller/BUILD.gn @@ -9,7 +9,6 @@ copy("impeller") { "color.glsl", "conical_gradient_uniform_fill.glsl", "constants.glsl", - "conversions.glsl", "dithering.glsl", "external_texture_oes.glsl", "gaussian.glsl", diff --git a/engine/src/flutter/impeller/compiler/shader_lib/impeller/conical_gradient_fill.glsl b/engine/src/flutter/impeller/compiler/shader_lib/impeller/conical_gradient_fill.glsl index 3c6cb7b9665c2..088cea6dde893 100644 --- a/engine/src/flutter/impeller/compiler/shader_lib/impeller/conical_gradient_fill.glsl +++ b/engine/src/flutter/impeller/compiler/shader_lib/impeller/conical_gradient_fill.glsl @@ -14,7 +14,6 @@ uniform FragInfo { float radius; float tile_mode; vec4 decal_border_color; - float texture_sampler_y_coord_scale; float alpha; vec2 half_texel; vec2 focus; @@ -28,13 +27,11 @@ vec4 DoConicalGradientTextureFill(vec2 res) { } float t = res.x; - vec4 result = - IPSampleLinearWithTileMode(texture_sampler, // - vec2(t, 0.5), // - frag_info.texture_sampler_y_coord_scale, // - frag_info.half_texel, // - frag_info.tile_mode, // - frag_info.decal_border_color); + vec4 result = IPSampleLinearWithTileMode(texture_sampler, // + vec2(t, 0.5), // + frag_info.half_texel, // + frag_info.tile_mode, // + frag_info.decal_border_color); result = IPPremultiply(result) * frag_info.alpha; return result; } diff --git a/engine/src/flutter/impeller/compiler/shader_lib/impeller/conversions.glsl b/engine/src/flutter/impeller/compiler/shader_lib/impeller/conversions.glsl deleted file mode 100644 index 1a84771678da6..0000000000000 --- a/engine/src/flutter/impeller/compiler/shader_lib/impeller/conversions.glsl +++ /dev/null @@ -1,15 +0,0 @@ -// Copyright 2013 The Flutter Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CONVERSIONS_GLSL_ -#define CONVERSIONS_GLSL_ - -vec2 IPRemapCoords(vec2 coords, float y_coord_scale) { - if (y_coord_scale < 0.0) { - coords.y = 1.0 - coords.y; - } - return coords; -} - -#endif diff --git a/engine/src/flutter/impeller/compiler/shader_lib/impeller/texture.glsl b/engine/src/flutter/impeller/compiler/shader_lib/impeller/texture.glsl index 98628069bb77a..bab5a65e45ba2 100644 --- a/engine/src/flutter/impeller/compiler/shader_lib/impeller/texture.glsl +++ b/engine/src/flutter/impeller/compiler/shader_lib/impeller/texture.glsl @@ -6,37 +6,25 @@ #define TEXTURE_GLSL_ #include -#include #include #include /// Sample from a texture. /// -/// If `y_coord_scale` < 0.0, the Y coordinate is flipped. This is useful -/// for Impeller graphics backends that use a flipped framebuffer coordinate -/// space. -/// /// A negative mip bias is applied to improve the sharpness of scaled down /// images when mip sampling is enabled. See `kDefaultMipBias` for more detail. -vec4 IPSample(sampler2D texture_sampler, vec2 coords, float y_coord_scale) { - return texture(texture_sampler, IPRemapCoords(coords, y_coord_scale), - kDefaultMipBias); +vec4 IPSample(sampler2D texture_sampler, vec2 coords) { + return texture(texture_sampler, coords, kDefaultMipBias); } /// Sample from a texture. /// -/// If `y_coord_scale` < 0.0, the Y coordinate is flipped. This is useful -/// for Impeller graphics backends that use a flipped framebuffer coordinate -/// space. /// The range of `coords` will be mapped from [0, 1] to [half_texel, 1 - /// half_texel] -vec4 IPSampleLinear(sampler2D texture_sampler, - vec2 coords, - float y_coord_scale, - vec2 half_texel) { +vec4 IPSampleLinear(sampler2D texture_sampler, vec2 coords, vec2 half_texel) { coords.x = mix(half_texel.x, 1 - half_texel.x, coords.x); coords.y = mix(half_texel.y, 1 - half_texel.y, coords.y); - return IPSample(texture_sampler, coords, y_coord_scale); + return IPSample(texture_sampler, coords); } /// Remap a float using a tiling mode. @@ -106,7 +94,6 @@ f16vec4 IPHalfSampleWithTileMode(f16sampler2D tex, /// half_texel] vec4 IPSampleLinearWithTileMode(sampler2D tex, vec2 coords, - float y_coord_scale, vec2 half_texel, float x_tile_mode, float y_tile_mode, @@ -117,7 +104,7 @@ vec4 IPSampleLinearWithTileMode(sampler2D tex, } return IPSampleLinear(tex, IPVec2Tile(coords, x_tile_mode, y_tile_mode), - y_coord_scale, half_texel); + half_texel); } /// Sample a texture with decal tile mode. @@ -146,12 +133,11 @@ f16vec4 IPHalfSampleDecal(f16sampler2D texture_sampler, vec2 coords) { /// half_texel] vec4 IPSampleLinearWithTileMode(sampler2D tex, vec2 coords, - float y_coord_scale, vec2 half_texel, float tile_mode, vec4 decal_border_color) { - return IPSampleLinearWithTileMode(tex, coords, y_coord_scale, half_texel, - tile_mode, tile_mode, decal_border_color); + return IPSampleLinearWithTileMode(tex, coords, half_texel, tile_mode, + tile_mode, decal_border_color); } #endif diff --git a/engine/src/flutter/impeller/core/texture.cc b/engine/src/flutter/impeller/core/texture.cc index bb2f125aea503..c325d4e073b23 100644 --- a/engine/src/flutter/impeller/core/texture.cc +++ b/engine/src/flutter/impeller/core/texture.cc @@ -78,10 +78,6 @@ TextureCoordinateSystem Texture::GetCoordinateSystem() const { return coordinate_system_; } -Scalar Texture::GetYCoordScale() const { - return 1.0; -} - bool Texture::NeedsMipmapGeneration() const { return !mipmap_generated_ && desc_.mip_count > 1; } diff --git a/engine/src/flutter/impeller/core/texture.h b/engine/src/flutter/impeller/core/texture.h index d0d24c6dacdbe..631071b551569 100644 --- a/engine/src/flutter/impeller/core/texture.h +++ b/engine/src/flutter/impeller/core/texture.h @@ -58,8 +58,6 @@ class Texture { TextureCoordinateSystem GetCoordinateSystem() const; - virtual Scalar GetYCoordScale() const; - /// Returns true if mipmaps have never been generated. /// The contents of the mipmap may be out of date if the root texture has been /// modified and the mipmaps hasn't been regenerated. diff --git a/engine/src/flutter/impeller/entity/contents/atlas_contents.cc b/engine/src/flutter/impeller/entity/contents/atlas_contents.cc index 3fd979603c2bd..7b5477d63d993 100644 --- a/engine/src/flutter/impeller/entity/contents/atlas_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/atlas_contents.cc @@ -191,8 +191,6 @@ bool AtlasContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; frame_info.mvp = entity.GetShaderTransform(pass); - frame_info.texture_sampler_y_coord_scale = - geometry_->GetAtlas()->GetYCoordScale(); VS::BindFrameInfo(pass, data_host_buffer.EmplaceUniform(frame_info)); @@ -224,8 +222,6 @@ bool AtlasContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; FS::BindTextureSamplerDst(pass, geometry_->GetAtlas(), dst_sampler); - frame_info.texture_sampler_y_coord_scale = - geometry_->GetAtlas()->GetYCoordScale(); frag_info.input_alpha_output_alpha_tmx_tmy = Vector4(1.0, alpha_, static_cast(Entity::TileMode::kDecal), @@ -265,8 +261,6 @@ bool AtlasContents::Render(const ContentContext& renderer, VUS::FrameInfo frame_info; FS::FragInfo frag_info; - frame_info.texture_sampler_y_coord_scale = - geometry_->GetAtlas()->GetYCoordScale(); frame_info.mvp = entity.GetShaderTransform(pass); frag_info.alpha = alpha_; @@ -338,8 +332,6 @@ bool ColorFilterAtlasContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; FS::BindInputTexture(pass, geometry_->GetAtlas(), dst_sampler); - frame_info.texture_sampler_y_coord_scale = - geometry_->GetAtlas()->GetYCoordScale(); frag_info.input_alpha = 1; frag_info.output_alpha = alpha_; diff --git a/engine/src/flutter/impeller/entity/contents/conical_gradient_contents.cc b/engine/src/flutter/impeller/entity/contents/conical_gradient_contents.cc index 35c1477a9712c..692d79283866a 100644 --- a/engine/src/flutter/impeller/entity/contents/conical_gradient_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/conical_gradient_contents.cc @@ -220,8 +220,6 @@ bool ConicalGradientContents::RenderTexture(const ContentContext& renderer, frag_info.radius = radius_; frag_info.tile_mode = static_cast(tile_mode_); frag_info.decal_border_color = decal_border_color_; - frag_info.texture_sampler_y_coord_scale = - gradient_texture->GetYCoordScale(); frag_info.alpha = GetOpacityFactor() * GetGeometry()->ComputeAlphaCoverage(entity.GetTransform()); diff --git a/engine/src/flutter/impeller/entity/contents/filters/blend_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/blend_filter_contents.cc index c940643a0af27..461b7580b8900 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/blend_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/blend_filter_contents.cc @@ -203,7 +203,6 @@ static std::optional AdvancedBlend( renderer.GetContext()->GetSamplerLibrary()->GetSampler( dst_snapshot->sampler_descriptor); FS::BindTextureSamplerDst(pass, dst_snapshot->texture, dst_sampler); - frame_info.dst_y_coord_scale = dst_snapshot->texture->GetYCoordScale(); blend_info.dst_input_alpha = absorb_opacity == ColorFilterContents::AbsorbOpacity::kYes ? dst_snapshot->opacity @@ -223,7 +222,6 @@ static std::optional AdvancedBlend( blend_info.color_factor = 0; blend_info.src_input_alpha = src_snapshot->opacity; FS::BindTextureSamplerSrc(pass, src_snapshot->texture, src_sampler); - frame_info.src_y_coord_scale = src_snapshot->texture->GetYCoordScale(); } auto blend_uniform = data_host_buffer.EmplaceUniform(blend_info); FS::BindBlendInfo(pass, blend_uniform); @@ -370,7 +368,6 @@ std::optional BlendFilterContents::CreateForegroundAdvancedBlend( renderer.GetContext()->GetSamplerLibrary()->GetSampler( dst_snapshot->sampler_descriptor); FS::BindTextureSamplerDst(pass, dst_snapshot->texture, dst_sampler); - frame_info.dst_y_coord_scale = dst_snapshot->texture->GetYCoordScale(); frame_info.mvp = Entity::GetShaderTransform( entity.GetShaderClipDepth(), pass, @@ -472,8 +469,6 @@ std::optional BlendFilterContents::CreateForegroundPorterDuffBlend( renderer.GetContext()->GetSamplerLibrary()->GetSampler( dst_snapshot->sampler_descriptor); FS::BindTextureSamplerDst(pass, dst_snapshot->texture, dst_sampler); - frame_info.texture_sampler_y_coord_scale = - dst_snapshot->texture->GetYCoordScale(); frag_info.input_alpha_output_alpha_tmx_tmy = Vector4(absorb_opacity == ColorFilterContents::AbsorbOpacity::kYes @@ -573,8 +568,6 @@ static std::optional PipelineBlend( frame_info.mvp = pass.GetOrthographicTransform() * Matrix::MakeTranslation(-subpass_coverage.GetOrigin()) * input->transform; - frame_info.texture_sampler_y_coord_scale = - input->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.alpha = @@ -704,8 +697,6 @@ std::optional BlendFilterContents::CreateFramebufferAdvancedBlend( VS::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); - frame_info.texture_sampler_y_coord_scale = - dst_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.alpha = 1.0; @@ -838,7 +829,6 @@ std::optional BlendFilterContents::CreateFramebufferAdvancedBlend( FS::BindTextureSamplerSrc(pass, src_texture, src_sampler); frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); - frame_info.src_y_coord_scale = src_texture->GetYCoordScale(); VS::BindFrameInfo(pass, data_host_buffer.EmplaceUniform(frame_info)); frag_info.src_input_alpha = 1.0; diff --git a/engine/src/flutter/impeller/entity/contents/filters/border_mask_blur_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/border_mask_blur_filter_contents.cc index 8b57a3e1a2ccc..e7e65bedd70a6 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/border_mask_blur_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/border_mask_blur_filter_contents.cc @@ -106,8 +106,6 @@ std::optional BorderMaskBlurFilterContents::RenderFilter( VS::FrameInfo frame_info; frame_info.mvp = entity.GetShaderTransform(pass); - frame_info.texture_sampler_y_coord_scale = - input_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.sigma_uv = sigma.Abs() / input_snapshot->texture->GetSize(); diff --git a/engine/src/flutter/impeller/entity/contents/filters/color_matrix_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/color_matrix_filter_contents.cc index 5ff06abde3c0b..f76fcdd0d1c48 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/color_matrix_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/color_matrix_filter_contents.cc @@ -77,8 +77,6 @@ std::optional ColorMatrixFilterContents::RenderFilter( entity.GetShaderClipDepth(), pass, entity.GetTransform() * input_snapshot->transform * Matrix::MakeScale(Vector2(size))); - frame_info.texture_sampler_y_coord_scale = - input_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; const float* matrix = color_matrix.array; diff --git a/engine/src/flutter/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc index fdbcb65bdf82a..3c528ebf28ff0 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/gaussian_blur_filter_contents.cc @@ -207,38 +207,6 @@ Scalar FloorToDivisible(Scalar val, Scalar divisor) { } } -// If `y_coord_scale` < 0.0, the Y coordinate is flipped. This is useful -// for Impeller graphics backends that use a flipped framebuffer coordinate -// space. -// -// Both input and output quads are expected to be in the order of [Top-Left, -// Top-Right, Bottom-Left, Bottom-Right], a "Z-order" layout that conforms to -// the return format of Rect::GetPoints(). -// -// See also: IPRemapCoords in convergions.glsl. -Quad RemapQuadCoords(const Quad& input, Scalar texture_sampler_y_coord_scale) { - if (texture_sampler_y_coord_scale < 0.0f) { - // The 4 points need reordering, because vertically flipping the quad: - // - // 0 → 1 - // ↙ - // 2 → 3 - // - // should be flipped to: - // - // 2 → 3 - // ↙ - // 0 → 1 - auto remap_point = [&](const Point& p) -> Point { - return Point(p.x, 1.0f - p.y); - }; - return Quad{remap_point(input[2]), remap_point(input[3]), - remap_point(input[0]), remap_point(input[1])}; - } else { - return input; - } -} - // Precomputes the line equation parameters for a quadrilateral's bounds. // // This function takes an array of 4 vertices and returns an array of 4 @@ -465,8 +433,6 @@ fml::StatusOr MakeDownsampleSubpass( TextureFillVertexShader::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); - frame_info.texture_sampler_y_coord_scale = - input_texture->GetYCoordScale(); TextureFillFragmentShader::FragInfo frag_info; frag_info.alpha = 1.0; @@ -522,9 +488,8 @@ fml::StatusOr MakeDownsampleSubpass( renderer.GetDownsampleBoundedPipeline(pipeline_options)); TextureDownsampleBoundedFragmentShader::BoundInfo bound_info; - bound_info.quad_line_params = PrecomputeQuadLineParameters( - RemapQuadCoords(pass_args.uv_bounds.value(), - input_texture->GetYCoordScale())); + bound_info.quad_line_params = + PrecomputeQuadLineParameters(pass_args.uv_bounds.value()); TextureDownsampleBoundedFragmentShader::BindBoundInfo( pass, data_host_buffer.EmplaceUniform(bound_info)); } else { @@ -547,8 +512,6 @@ fml::StatusOr MakeDownsampleSubpass( TextureFillVertexShader::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); - frame_info.texture_sampler_y_coord_scale = - input_texture->GetYCoordScale(); TextureDownsampleFragmentShader::FragInfo frag_info; frag_info.edge = edge; @@ -609,9 +572,7 @@ fml::StatusOr MakeBlurSubpass( ContentContext::SubpassCallback subpass_callback = [&](const ContentContext& renderer, RenderPass& pass) { GaussianBlurVertexShader::FrameInfo frame_info; - frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)), - frame_info.texture_sampler_y_coord_scale = - input_texture->GetYCoordScale(); + frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); HostBuffer& data_host_buffer = renderer.GetTransientsDataBuffer(); diff --git a/engine/src/flutter/impeller/entity/contents/filters/linear_to_srgb_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/linear_to_srgb_filter_contents.cc index c0966251cb2c5..007b052611cd5 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/linear_to_srgb_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/linear_to_srgb_filter_contents.cc @@ -66,8 +66,6 @@ std::optional LinearToSrgbFilterContents::RenderFilter( entity.GetShaderClipDepth(), pass, entity.GetTransform() * input_snapshot->transform * Matrix::MakeScale(Vector2(size))); - frame_info.texture_sampler_y_coord_scale = - input_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.input_alpha = diff --git a/engine/src/flutter/impeller/entity/contents/filters/morphology_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/morphology_filter_contents.cc index 2a566446e6e38..ca81ad386b5a0 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/morphology_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/morphology_filter_contents.cc @@ -85,8 +85,6 @@ std::optional DirectionalMorphologyFilterContents::RenderFilter( VS::FrameInfo frame_info; frame_info.mvp = Matrix::MakeOrthographic(ISize(1, 1)); - frame_info.texture_sampler_y_coord_scale = - input_snapshot->texture->GetYCoordScale(); auto transform = entity.GetTransform() * effect_transform.Basis(); auto transformed_radius = diff --git a/engine/src/flutter/impeller/entity/contents/filters/srgb_to_linear_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/srgb_to_linear_filter_contents.cc index 47efcf4ff0d77..3ad5213f94fef 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/srgb_to_linear_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/srgb_to_linear_filter_contents.cc @@ -67,8 +67,6 @@ std::optional SrgbToLinearFilterContents::RenderFilter( entity.GetShaderClipDepth(), pass, entity.GetTransform() * input_snapshot->transform * Matrix::MakeScale(Vector2(size))); - frame_info.texture_sampler_y_coord_scale = - input_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.input_alpha = diff --git a/engine/src/flutter/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc b/engine/src/flutter/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc index 0847922452c50..4cf2cfebad246 100644 --- a/engine/src/flutter/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/filters/yuv_to_rgb_filter_contents.cc @@ -96,8 +96,6 @@ std::optional YUVToRGBFilterContents::RenderFilter( entity.GetShaderClipDepth(), pass, entity.GetTransform() * y_input_snapshot->transform * Matrix::MakeScale(Vector2(size))); - frame_info.texture_sampler_y_coord_scale = - y_input_snapshot->texture->GetYCoordScale(); FS::FragInfo frag_info; frag_info.yuv_color_space = static_cast(yuv_color_space); diff --git a/engine/src/flutter/impeller/entity/contents/framebuffer_blend_contents.cc b/engine/src/flutter/impeller/entity/contents/framebuffer_blend_contents.cc index e4455b9af8e22..a4fdffc5d106f 100644 --- a/engine/src/flutter/impeller/entity/contents/framebuffer_blend_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/framebuffer_blend_contents.cc @@ -138,7 +138,6 @@ bool FramebufferBlendContents::Render(const ContentContext& renderer, frame_info.mvp = Entity::GetShaderTransform(entity.GetShaderClipDepth(), pass, src_snapshot->transform); - frame_info.src_y_coord_scale = src_snapshot->texture->GetYCoordScale(); VS::BindFrameInfo(pass, data_host_buffer.EmplaceUniform(frame_info)); frag_info.src_input_alpha = src_snapshot->opacity; diff --git a/engine/src/flutter/impeller/entity/contents/linear_gradient_contents.cc b/engine/src/flutter/impeller/entity/contents/linear_gradient_contents.cc index 90e3e313bef85..2db2abaf13ed7 100644 --- a/engine/src/flutter/impeller/entity/contents/linear_gradient_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/linear_gradient_contents.cc @@ -247,8 +247,6 @@ bool LinearGradientContents::RenderTexture(const ContentContext& renderer, frag_info.end_point = end_point_; frag_info.tile_mode = static_cast(tile_mode_); frag_info.decal_border_color = decal_border_color_; - frag_info.texture_sampler_y_coord_scale = - gradient_texture->GetYCoordScale(); frag_info.alpha = GetOpacityFactor() * GetGeometry()->ComputeAlphaCoverage(entity.GetTransform()); diff --git a/engine/src/flutter/impeller/entity/contents/radial_gradient_contents.cc b/engine/src/flutter/impeller/entity/contents/radial_gradient_contents.cc index 4bc8bba8a5bf6..82f10c24402e3 100644 --- a/engine/src/flutter/impeller/entity/contents/radial_gradient_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/radial_gradient_contents.cc @@ -187,8 +187,6 @@ bool RadialGradientContents::RenderTexture(const ContentContext& renderer, frag_info.radius = radius_; frag_info.tile_mode = static_cast(tile_mode_); frag_info.decal_border_color = decal_border_color_; - frag_info.texture_sampler_y_coord_scale = - gradient_texture->GetYCoordScale(); frag_info.alpha = GetOpacityFactor() * GetGeometry()->ComputeAlphaCoverage(entity.GetTransform()); diff --git a/engine/src/flutter/impeller/entity/contents/sweep_gradient_contents.cc b/engine/src/flutter/impeller/entity/contents/sweep_gradient_contents.cc index db6c4d8f16ab8..357c0bd9e32d3 100644 --- a/engine/src/flutter/impeller/entity/contents/sweep_gradient_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/sweep_gradient_contents.cc @@ -201,8 +201,6 @@ bool SweepGradientContents::RenderTexture(const ContentContext& renderer, frag_info.center = center_; frag_info.bias = bias_; frag_info.scale = scale_; - frag_info.texture_sampler_y_coord_scale = - gradient_texture->GetYCoordScale(); frag_info.tile_mode = static_cast(tile_mode_); frag_info.decal_border_color = decal_border_color_; frag_info.alpha = diff --git a/engine/src/flutter/impeller/entity/contents/texture_contents.cc b/engine/src/flutter/impeller/entity/contents/texture_contents.cc index 6745e1b77bafc..6261272b16807 100644 --- a/engine/src/flutter/impeller/entity/contents/texture_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/texture_contents.cc @@ -139,7 +139,6 @@ bool TextureContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; frame_info.mvp = entity.GetShaderTransform(pass); - frame_info.texture_sampler_y_coord_scale = texture_->GetYCoordScale(); #ifdef IMPELLER_DEBUG if (label_.empty()) { @@ -185,15 +184,7 @@ bool TextureContents::Render(const ContentContext& renderer, Rect::MakeSize(texture_->GetSize()).Project(source_rect_.Expand(-0.5)); FSStrict::FragInfo frag_info; - if (texture_->GetYCoordScale() < 0.0) { - FML_DCHECK(texture_->GetYCoordScale() == -1.0f); - frag_info.source_rect = Vector4(strict_texture_coords.GetLeft(), - 1.0f - strict_texture_coords.GetBottom(), - strict_texture_coords.GetRight(), - 1.0f - strict_texture_coords.GetTop()); - } else { - frag_info.source_rect = Vector4(strict_texture_coords.GetLTRB()); - } + frag_info.source_rect = Vector4(strict_texture_coords.GetLTRB()); frag_info.alpha = GetOpacity(); FSStrict::BindFragInfo(pass, data_host_buffer.EmplaceUniform((frag_info))); FSStrict::BindTextureSampler( diff --git a/engine/src/flutter/impeller/entity/contents/tiled_texture_contents.cc b/engine/src/flutter/impeller/entity/contents/tiled_texture_contents.cc index d435f692f1cde..864db9d91b04e 100644 --- a/engine/src/flutter/impeller/entity/contents/tiled_texture_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/tiled_texture_contents.cc @@ -130,7 +130,6 @@ bool TiledTextureContents::Render(const ContentContext& renderer, } VS::FrameInfo frame_info; - frame_info.texture_sampler_y_coord_scale = texture_->GetYCoordScale(); frame_info.uv_transform = Rect::MakeSize(texture_size).GetNormalizingTransform() * GetInverseEffectTransform(); diff --git a/engine/src/flutter/impeller/entity/contents/vertices_contents.cc b/engine/src/flutter/impeller/entity/contents/vertices_contents.cc index 06e0ba866fd00..026f82b96f94b 100644 --- a/engine/src/flutter/impeller/entity/contents/vertices_contents.cc +++ b/engine/src/flutter/impeller/entity/contents/vertices_contents.cc @@ -163,7 +163,6 @@ bool VerticesSimpleBlendContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; FS::FragInfo frag_info; - frame_info.texture_sampler_y_coord_scale = texture->GetYCoordScale(); frame_info.mvp = geometry_result.transform; frag_info.input_alpha_output_alpha_tmx_tmy = @@ -196,7 +195,6 @@ bool VerticesSimpleBlendContents::Render(const ContentContext& renderer, VS::FrameInfo frame_info; FS::FragInfo frag_info; - frame_info.texture_sampler_y_coord_scale = texture->GetYCoordScale(); frame_info.mvp = geometry_result.transform; frag_info.alpha = alpha_; frag_info.blend_mode = static_cast(blend_mode); diff --git a/engine/src/flutter/impeller/entity/shaders/blending/advanced_blend.vert b/engine/src/flutter/impeller/entity/shaders/blending/advanced_blend.vert index 5a5535ab869d6..cc72aeae97796 100644 --- a/engine/src/flutter/impeller/entity/shaders/blending/advanced_blend.vert +++ b/engine/src/flutter/impeller/entity/shaders/blending/advanced_blend.vert @@ -2,13 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include uniform FrameInfo { mat4 mvp; - float dst_y_coord_scale; - float src_y_coord_scale; } frame_info; @@ -21,8 +18,6 @@ out vec2 v_src_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(vertices, 0.0, 1.0); - v_dst_texture_coords = - IPRemapCoords(dst_texture_coords, frame_info.dst_y_coord_scale); - v_src_texture_coords = - IPRemapCoords(src_texture_coords, frame_info.src_y_coord_scale); + v_dst_texture_coords = dst_texture_coords; + v_src_texture_coords = src_texture_coords; } diff --git a/engine/src/flutter/impeller/entity/shaders/blending/framebuffer_blend.vert b/engine/src/flutter/impeller/entity/shaders/blending/framebuffer_blend.vert index 362362e4e3f8f..928915f6688b3 100644 --- a/engine/src/flutter/impeller/entity/shaders/blending/framebuffer_blend.vert +++ b/engine/src/flutter/impeller/entity/shaders/blending/framebuffer_blend.vert @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include // Warning: if any of the constant values or layouts are changed in this @@ -10,7 +9,6 @@ // impeller/renderer/backend/vulkan/binding_helpers_vk.cc uniform FrameInfo { mat4 mvp; - float src_y_coord_scale; } frame_info; @@ -21,6 +19,5 @@ out vec2 v_src_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(vertices, 0.0, 1.0); - v_src_texture_coords = - IPRemapCoords(src_texture_coords, frame_info.src_y_coord_scale); + v_src_texture_coords = src_texture_coords; } diff --git a/engine/src/flutter/impeller/entity/shaders/blending/porter_duff_blend.vert b/engine/src/flutter/impeller/entity/shaders/blending/porter_duff_blend.vert index 56c115e23df2c..13b2529f08c8d 100644 --- a/engine/src/flutter/impeller/entity/shaders/blending/porter_duff_blend.vert +++ b/engine/src/flutter/impeller/entity/shaders/blending/porter_duff_blend.vert @@ -2,12 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include uniform FrameInfo { mat4 mvp; - float texture_sampler_y_coord_scale; } frame_info; @@ -21,6 +19,5 @@ out mediump f16vec4 v_color; void main() { gl_Position = frame_info.mvp * vec4(vertices, 0.0, 1.0); v_color = f16vec4(color); - v_texture_coords = - IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale); + v_texture_coords = texture_coords; } diff --git a/engine/src/flutter/impeller/entity/shaders/filters/filter_position.vert b/engine/src/flutter/impeller/entity/shaders/filters/filter_position.vert index 5a631d8b1f039..24792885511fb 100644 --- a/engine/src/flutter/impeller/entity/shaders/filters/filter_position.vert +++ b/engine/src/flutter/impeller/entity/shaders/filters/filter_position.vert @@ -2,12 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include uniform FrameInfo { mat4 mvp; - float texture_sampler_y_coord_scale; } frame_info; @@ -17,6 +15,5 @@ out vec2 v_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); - v_texture_coords = - IPRemapCoords(position, frame_info.texture_sampler_y_coord_scale); + v_texture_coords = position; } diff --git a/engine/src/flutter/impeller/entity/shaders/filters/filter_position_uv.vert b/engine/src/flutter/impeller/entity/shaders/filters/filter_position_uv.vert index 0dbc6fd4bfad4..a504e7a9e23c8 100644 --- a/engine/src/flutter/impeller/entity/shaders/filters/filter_position_uv.vert +++ b/engine/src/flutter/impeller/entity/shaders/filters/filter_position_uv.vert @@ -2,12 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include uniform FrameInfo { mat4 mvp; - float texture_sampler_y_coord_scale; } frame_info; @@ -18,6 +16,5 @@ out vec2 v_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); - v_texture_coords = - IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale); + v_texture_coords = texture_coords; } diff --git a/engine/src/flutter/impeller/entity/shaders/gradients/linear_gradient_fill.frag b/engine/src/flutter/impeller/entity/shaders/gradients/linear_gradient_fill.frag index 4d9a90f896464..4c12983c34a1a 100644 --- a/engine/src/flutter/impeller/entity/shaders/gradients/linear_gradient_fill.frag +++ b/engine/src/flutter/impeller/entity/shaders/gradients/linear_gradient_fill.frag @@ -15,7 +15,6 @@ uniform FragInfo { highp vec2 end_point; float tile_mode; vec4 decal_border_color; - float texture_sampler_y_coord_scale; float alpha; vec2 half_texel; } @@ -30,12 +29,10 @@ void main() { vec2 start_to_position = v_position - frag_info.start_point; float t = dot(start_to_position, start_to_end) / dot(start_to_end, start_to_end); - frag_color = - IPSampleLinearWithTileMode(texture_sampler, // - vec2(t, 0.5), // - frag_info.texture_sampler_y_coord_scale, // - frag_info.half_texel, // - frag_info.tile_mode, // - frag_info.decal_border_color); + frag_color = IPSampleLinearWithTileMode(texture_sampler, // + vec2(t, 0.5), // + frag_info.half_texel, // + frag_info.tile_mode, // + frag_info.decal_border_color); frag_color = IPPremultiply(frag_color) * frag_info.alpha; } diff --git a/engine/src/flutter/impeller/entity/shaders/gradients/radial_gradient_fill.frag b/engine/src/flutter/impeller/entity/shaders/gradients/radial_gradient_fill.frag index c1bbe80af7e06..866ebfaeeed26 100644 --- a/engine/src/flutter/impeller/entity/shaders/gradients/radial_gradient_fill.frag +++ b/engine/src/flutter/impeller/entity/shaders/gradients/radial_gradient_fill.frag @@ -15,7 +15,6 @@ uniform FragInfo { float radius; float tile_mode; vec4 decal_border_color; - float texture_sampler_y_coord_scale; float alpha; vec2 half_texel; } @@ -28,12 +27,10 @@ out vec4 frag_color; void main() { float len = length(v_position - frag_info.center); float t = len / frag_info.radius; - frag_color = - IPSampleLinearWithTileMode(texture_sampler, // - vec2(t, 0.5), // - frag_info.texture_sampler_y_coord_scale, // - frag_info.half_texel, // - frag_info.tile_mode, // - frag_info.decal_border_color); + frag_color = IPSampleLinearWithTileMode(texture_sampler, // + vec2(t, 0.5), // + frag_info.half_texel, // + frag_info.tile_mode, // + frag_info.decal_border_color); frag_color = IPPremultiply(frag_color) * frag_info.alpha; } diff --git a/engine/src/flutter/impeller/entity/shaders/gradients/sweep_gradient_fill.frag b/engine/src/flutter/impeller/entity/shaders/gradients/sweep_gradient_fill.frag index fba9e2b4586e2..47f5e1d155495 100644 --- a/engine/src/flutter/impeller/entity/shaders/gradients/sweep_gradient_fill.frag +++ b/engine/src/flutter/impeller/entity/shaders/gradients/sweep_gradient_fill.frag @@ -17,7 +17,6 @@ uniform FragInfo { float scale; float tile_mode; vec4 decal_border_color; - float texture_sampler_y_coord_scale; float alpha; vec2 half_texel; } @@ -32,12 +31,10 @@ void main() { float angle = atan(-coord.y, -coord.x); float t = (angle * k1Over2Pi + 0.5 + frag_info.bias) * frag_info.scale; - frag_color = - IPSampleLinearWithTileMode(texture_sampler, // - vec2(t, 0.5), // - frag_info.texture_sampler_y_coord_scale, // - frag_info.half_texel, // - frag_info.tile_mode, // - frag_info.decal_border_color); + frag_color = IPSampleLinearWithTileMode(texture_sampler, // + vec2(t, 0.5), // + frag_info.half_texel, // + frag_info.tile_mode, // + frag_info.decal_border_color); frag_color = IPPremultiply(frag_color) * frag_info.alpha; } diff --git a/engine/src/flutter/impeller/entity/shaders/texture_fill.vert b/engine/src/flutter/impeller/entity/shaders/texture_fill.vert index 49338765bd387..5e04fbb6da175 100644 --- a/engine/src/flutter/impeller/entity/shaders/texture_fill.vert +++ b/engine/src/flutter/impeller/entity/shaders/texture_fill.vert @@ -2,12 +2,10 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include uniform FrameInfo { mat4 mvp; - float texture_sampler_y_coord_scale; } frame_info; @@ -18,6 +16,5 @@ out highp vec2 v_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); - v_texture_coords = - IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale); + v_texture_coords = texture_coords; } diff --git a/engine/src/flutter/impeller/entity/shaders/texture_uv_fill.vert b/engine/src/flutter/impeller/entity/shaders/texture_uv_fill.vert index cd07abfdaea59..5f419beda1648 100644 --- a/engine/src/flutter/impeller/entity/shaders/texture_uv_fill.vert +++ b/engine/src/flutter/impeller/entity/shaders/texture_uv_fill.vert @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include #include // A shader that computes texture UVs from a normalizing transform. @@ -10,7 +9,6 @@ uniform FrameInfo { mat4 mvp; // A normlizing transform created from the texture bounds and effect transform mat4 uv_transform; - float texture_sampler_y_coord_scale; } frame_info; @@ -20,7 +18,5 @@ out highp vec2 v_texture_coords; void main() { gl_Position = frame_info.mvp * vec4(position, 0.0, 1.0); - vec2 texture_coords = (frame_info.uv_transform * vec4(position, 0.0, 1.0)).xy; - v_texture_coords = - IPRemapCoords(texture_coords, frame_info.texture_sampler_y_coord_scale); + v_texture_coords = (frame_info.uv_transform * vec4(position, 0.0, 1.0)).xy; } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.cc b/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.cc index 6f3ea6c794777..94ab4088d618d 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.cc +++ b/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.cc @@ -694,14 +694,6 @@ bool TextureGLES::SetAsFramebufferAttachment(GLenum target, return true; } -// |Texture| -Scalar TextureGLES::GetYCoordScale() const { - // GLES render-to-texture content is stored top-down via the - // vertex-stage y-flip; see - // https://github.com/flutter/flutter/issues/186554. - return 1.0; -} - bool TextureGLES::IsWrapped() const { return is_wrapped_; } diff --git a/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.h b/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.h index e60a4378f068f..844ccbbc04068 100644 --- a/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.h +++ b/engine/src/flutter/impeller/renderer/backend/gles/texture_gles.h @@ -214,9 +214,6 @@ class TextureGLES final : public Texture, // |Texture| ISize GetSize() const override; - // |Texture| - Scalar GetYCoordScale() const override; - void InitializeContentsIfNecessary(); TextureGLES(const TextureGLES&) = delete; diff --git a/engine/src/flutter/impeller/tools/malioc.json b/engine/src/flutter/impeller/tools/malioc.json index 80447cdb4484a..dd00a9109c16b 100644 --- a/engine/src/flutter/impeller/tools/malioc.json +++ b/engine/src/flutter/impeller/tools/malioc.json @@ -127,20 +127,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 30, + "uniform_registers_used": 28, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -157,9 +157,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -168,9 +168,9 @@ "load_store" ], "total_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -178,8 +178,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 22, - "work_registers_used": 10 + "uniform_registers_used": 20, + "work_registers_used": 9 } } } @@ -1536,20 +1536,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 30, + "uniform_registers_used": 28, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1566,9 +1566,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1577,9 +1577,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1587,8 +1587,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 22, - "work_registers_used": 8 + "uniform_registers_used": 20, + "work_registers_used": 7 } } } @@ -1648,20 +1648,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 30, + "uniform_registers_used": 28, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1678,9 +1678,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1689,9 +1689,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -1699,8 +1699,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 22, - "work_registers_used": 8 + "uniform_registers_used": 20, + "work_registers_used": 7 } } } @@ -1898,7 +1898,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/advanced_blend.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -1949,20 +1949,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 24, + "uniform_registers_used": 22, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -1979,9 +1979,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -1990,9 +1990,9 @@ "load_store" ], "total_cycles": [ - 0.03125, - 0.03125, - 0.03125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -2000,8 +2000,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 10, - "work_registers_used": 10 + "uniform_registers_used": 8, + "work_registers_used": 9 } } }, @@ -2018,7 +2018,7 @@ "load_store" ], "longest_path_cycles": [ - 3.299999952316284, + 2.640000104904175, 7.0, 0.0 ], @@ -2031,7 +2031,7 @@ "load_store" ], "shortest_path_cycles": [ - 3.299999952316284, + 2.640000104904175, 7.0, 0.0 ], @@ -2039,14 +2039,14 @@ "load_store" ], "total_cycles": [ - 3.3333332538604736, + 2.6666667461395264, 7.0, 0.0 ] }, "thread_occupancy": 100, "uniform_registers_used": 6, - "work_registers_used": 3 + "work_registers_used": 2 } } } @@ -2884,7 +2884,7 @@ "arithmetic" ], "shortest_path_cycles": [ - 3.630000114440918, + 3.9600000381469727, 1.0, 0.0 ], @@ -2892,7 +2892,7 @@ "arithmetic" ], "total_cycles": [ - 13.0, + 12.666666984558105, 1.0, 1.0 ] @@ -2990,7 +2990,7 @@ "arithmetic" ], "longest_path_cycles": [ - 7.260000228881836, + 6.929999828338623, 1.0, 1.0 ], @@ -3011,13 +3011,13 @@ "arithmetic" ], "total_cycles": [ - 8.0, + 7.666666507720947, 1.0, 1.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 7, + "uniform_registers_used": 6, "work_registers_used": 2 } } @@ -3107,7 +3107,7 @@ "arithmetic" ], "longest_path_cycles": [ - 8.25, + 7.920000076293945, 1.0, 1.0 ], @@ -3128,13 +3128,13 @@ "arithmetic" ], "total_cycles": [ - 9.666666984558105, + 9.333333015441895, 1.0, 1.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 7, + "uniform_registers_used": 6, "work_registers_used": 2 } } @@ -4002,7 +4002,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/filter_position.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -4057,16 +4057,16 @@ "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4083,9 +4083,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4094,9 +4094,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4104,8 +4104,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 10, - "work_registers_used": 8 + "uniform_registers_used": 8, + "work_registers_used": 7 } } }, @@ -4159,7 +4159,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/filter_position_uv.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -4214,16 +4214,16 @@ "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4240,9 +4240,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4251,9 +4251,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -4261,8 +4261,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 10, - "work_registers_used": 8 + "uniform_registers_used": 8, + "work_registers_used": 7 } } }, @@ -4279,7 +4279,7 @@ "load_store" ], "longest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 5.0, 0.0 ], @@ -4292,7 +4292,7 @@ "load_store" ], "shortest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 5.0, 0.0 ], @@ -4300,7 +4300,7 @@ "load_store" ], "total_cycles": [ - 3.0, + 2.6666667461395264, 5.0, 0.0 ] @@ -5150,7 +5150,7 @@ "uses_late_zs_update": false, "variants": { "Main": { - "fp16_arithmetic": 4, + "fp16_arithmetic": 0, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ @@ -5158,9 +5158,9 @@ "arith_cvt" ], "longest_path_cycles": [ - 0.40625, - 0.296875, - 0.40625, + 0.328125, + 0.28125, + 0.328125, 0.125, 0.0, 0.25, @@ -5192,9 +5192,9 @@ "arith_cvt" ], "total_cycles": [ - 0.53125, - 0.328125, - 0.53125, + 0.453125, + 0.3125, + 0.453125, 0.125, 0.0, 0.25, @@ -5203,7 +5203,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 16, + "uniform_registers_used": 18, "work_registers_used": 20 } } @@ -5221,7 +5221,7 @@ "arithmetic" ], "longest_path_cycles": [ - 7.260000228881836, + 6.599999904632568, 1.0, 1.0 ], @@ -5242,7 +5242,7 @@ "arithmetic" ], "total_cycles": [ - 8.0, + 7.333333492279053, 1.0, 1.0 ] @@ -5726,7 +5726,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/porter_duff_blend.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -5781,16 +5781,16 @@ "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.109375, - 0.015625, - 0.109375, + 0.03125, + 0.0, + 0.03125, 0.0, 4.0, 0.0 @@ -5807,9 +5807,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.109375, - 0.015625, - 0.109375, + 0.03125, + 0.0, + 0.03125, 0.0, 4.0, 0.0 @@ -5818,9 +5818,9 @@ "load_store" ], "total_cycles": [ - 0.109375, - 0.015625, - 0.109375, + 0.03125, + 0.0, + 0.03125, 0.0, 4.0, 0.0 @@ -5828,7 +5828,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 10, + "uniform_registers_used": 8, "work_registers_used": 9 } } @@ -5846,7 +5846,7 @@ "load_store" ], "longest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 7.0, 0.0 ], @@ -5859,7 +5859,7 @@ "load_store" ], "shortest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 7.0, 0.0 ], @@ -5867,14 +5867,14 @@ "load_store" ], "total_cycles": [ - 3.0, + 2.6666667461395264, 7.0, 0.0 ] }, "thread_occupancy": 100, "uniform_registers_used": 6, - "work_registers_used": 3 + "work_registers_used": 2 } } } @@ -5892,7 +5892,7 @@ "uses_late_zs_update": false, "variants": { "Main": { - "fp16_arithmetic": 3, + "fp16_arithmetic": 0, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ @@ -5900,9 +5900,9 @@ "arith_cvt" ], "longest_path_cycles": [ - 0.4375, - 0.3125, - 0.4375, + 0.359375, + 0.296875, + 0.359375, 0.1875, 0.0, 0.25, @@ -5934,9 +5934,9 @@ "arith_cvt" ], "total_cycles": [ - 0.5625, - 0.34375, - 0.5625, + 0.484375, + 0.328125, + 0.484375, 0.1875, 0.0, 0.25, @@ -5945,7 +5945,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 14, + "uniform_registers_used": 16, "work_registers_used": 20 } } @@ -5963,7 +5963,7 @@ "arithmetic" ], "longest_path_cycles": [ - 7.260000228881836, + 6.599999904632568, 1.0, 1.0 ], @@ -5984,7 +5984,7 @@ "arithmetic" ], "total_cycles": [ - 8.0, + 7.333333492279053, 1.0, 1.0 ] @@ -7291,17 +7291,17 @@ "uses_late_zs_update": false, "variants": { "Main": { - "fp16_arithmetic": 2, + "fp16_arithmetic": 0, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "arith_total", - "arith_cvt" + "arith_fma" ], "longest_path_cycles": [ - 0.484375, - 0.46875, - 0.484375, + 0.453125, + 0.453125, + 0.40625, 0.375, 0.0, 0.25, @@ -7334,9 +7334,9 @@ "arith_cvt" ], "total_cycles": [ - 0.578125, 0.5, - 0.578125, + 0.484375, + 0.5, 0.375, 0.0, 0.25, @@ -7363,7 +7363,7 @@ "arithmetic" ], "longest_path_cycles": [ - 7.920000076293945, + 7.260000228881836, 1.0, 1.0 ], @@ -7384,13 +7384,13 @@ "arithmetic" ], "total_cycles": [ - 8.666666984558105, + 8.0, 1.0, 1.0 ] }, "thread_occupancy": 100, - "uniform_registers_used": 4, + "uniform_registers_used": 3, "work_registers_used": 2 } } @@ -7993,7 +7993,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/texture_fill.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -8048,16 +8048,16 @@ "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -8074,9 +8074,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -8085,9 +8085,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -8095,8 +8095,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 10, - "work_registers_used": 8 + "uniform_registers_used": 8, + "work_registers_used": 7 } } }, @@ -8113,7 +8113,7 @@ "load_store" ], "longest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 5.0, 0.0 ], @@ -8126,7 +8126,7 @@ "load_store" ], "shortest_path_cycles": [ - 2.9700000286102295, + 2.640000104904175, 5.0, 0.0 ], @@ -8134,7 +8134,7 @@ "load_store" ], "total_cycles": [ - 3.0, + 2.6666667461395264, 5.0, 0.0 ] @@ -8274,7 +8274,7 @@ "Mali-G78": { "core": "Mali-G78", "filename": "flutter/impeller/entity/gles/texture_uv_fill.vert.gles", - "has_uniform_computation": true, + "has_uniform_computation": false, "type": "Vertex", "variants": { "Position": { @@ -8336,9 +8336,9 @@ "load_store" ], "longest_path_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -8355,9 +8355,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -8366,9 +8366,9 @@ "load_store" ], "total_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -8376,7 +8376,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 16, + "uniform_registers_used": 14, "work_registers_used": 9 } } @@ -9630,13 +9630,13 @@ "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ - "arith_total", - "arith_cvt" + "varying", + "texture" ], "longest_path_cycles": [ - 0.296875, 0.234375, - 0.296875, + 0.234375, + 0.234375, 0.0625, 0.0, 0.25, @@ -9668,9 +9668,9 @@ "arith_cvt" ], "total_cycles": [ - 0.390625, + 0.328125, 0.265625, - 0.390625, + 0.328125, 0.0625, 0.0, 0.25, @@ -9679,8 +9679,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 18, - "work_registers_used": 7 + "uniform_registers_used": 16, + "work_registers_used": 6 } } } @@ -10096,20 +10096,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 30, + "uniform_registers_used": 28, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.078125, - 0.015625, - 0.078125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -10126,9 +10126,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.078125, - 0.015625, - 0.078125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -10137,9 +10137,9 @@ "load_store" ], "total_cycles": [ - 0.078125, - 0.015625, - 0.078125, + 0.0, + 0.0, + 0.0, 0.0, 4.0, 0.0 @@ -10147,7 +10147,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 22, + "uniform_registers_used": 20, "work_registers_used": 8 } } @@ -10174,9 +10174,9 @@ "arith_cvt" ], "longest_path_cycles": [ - 0.328125, + 0.265625, 0.25, - 0.328125, + 0.265625, 0.125, 0.0, 0.25, @@ -10208,9 +10208,9 @@ "arith_cvt" ], "total_cycles": [ - 0.421875, + 0.359375, 0.28125, - 0.421875, + 0.359375, 0.125, 0.0, 0.25, @@ -10220,7 +10220,7 @@ "stack_spill_bytes": 0, "thread_occupancy": 100, "uniform_registers_used": 16, - "work_registers_used": 8 + "work_registers_used": 7 } } } @@ -11151,7 +11151,7 @@ "longest_path_cycles": [ 0.40625, 0.40625, - 0.359375, + 0.296875, 0.3125, 0.0, 0.25, @@ -11182,12 +11182,12 @@ ], "total_bound_pipelines": [ "arith_total", - "arith_cvt" + "arith_fma" ], "total_cycles": [ - 0.453125, 0.4375, - 0.453125, + 0.4375, + 0.390625, 0.3125, 0.0, 0.25, @@ -11688,20 +11688,20 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 30, + "uniform_registers_used": 28, "work_registers_used": 32 }, "Varying": { - "fp16_arithmetic": 0, + "fp16_arithmetic": null, "has_stack_spilling": false, "performance": { "longest_path_bound_pipelines": [ "load_store" ], "longest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -11718,9 +11718,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -11729,9 +11729,9 @@ "load_store" ], "total_cycles": [ - 0.015625, - 0.015625, - 0.015625, + 0.0, + 0.0, + 0.0, 0.0, 3.0, 0.0 @@ -11739,8 +11739,8 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 22, - "work_registers_used": 8 + "uniform_registers_used": 20, + "work_registers_used": 7 } } } @@ -11873,7 +11873,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 40, + "uniform_registers_used": 38, "work_registers_used": 32 }, "Varying": { @@ -11884,9 +11884,9 @@ "load_store" ], "longest_path_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -11903,9 +11903,9 @@ "load_store" ], "shortest_path_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -11914,9 +11914,9 @@ "load_store" ], "total_cycles": [ - 0.078125, - 0.078125, - 0.015625, + 0.0625, + 0.0625, + 0.0, 0.0, 3.0, 0.0 @@ -11924,7 +11924,7 @@ }, "stack_spill_bytes": 0, "thread_occupancy": 100, - "uniform_registers_used": 32, + "uniform_registers_used": 30, "work_registers_used": 9 } }