diff --git a/DEPS b/DEPS index d528b87c5ab9d..6c2e2667497b8 100644 --- a/DEPS +++ b/DEPS @@ -23,7 +23,7 @@ vars = { 'fuchsia_git': 'https://fuchsia.googlesource.com', 'github_git': 'https://github.com', 'skia_git': 'https://skia.googlesource.com', - 'skia_revision': 'cbd83bbd77d1c8a56ed3547548dcf11ef8e60d2e', + 'skia_revision': 'ff6a73cc08af15f1fc8ba38dfa1dc7c2774fa060', # When updating the Dart revision, ensure that all entries that are # dependencies of Dart are also updated to match the entries in the diff --git a/ci/licenses_golden/licenses_skia b/ci/licenses_golden/licenses_skia index cf1fbf1d5a423..33f84ed1ddc0c 100644 --- a/ci/licenses_golden/licenses_skia +++ b/ci/licenses_golden/licenses_skia @@ -1,4 +1,4 @@ -Signature: 1901c651ec2a8f303d0c09c37259d02e +Signature: 0a97ac5660c9a642928cc5eeb9929829 UNUSED LICENSES: @@ -803,7 +803,6 @@ FILE: ../../../third_party/skia/gm/imagemakewithfilter.cpp FILE: ../../../third_party/skia/gm/imagemasksubset.cpp FILE: ../../../third_party/skia/gm/lattice.cpp FILE: ../../../third_party/skia/gm/lightingshader2.cpp -FILE: ../../../third_party/skia/gm/occludedrrectblur.cpp FILE: ../../../third_party/skia/gm/overdrawcolorfilter.cpp FILE: ../../../third_party/skia/gm/pathmaskcache.cpp FILE: ../../../third_party/skia/gm/readpixels.cpp @@ -872,17 +871,33 @@ FILE: ../../../third_party/skia/src/codec/SkStreamBuffer.cpp FILE: ../../../third_party/skia/src/codec/SkStreamBuffer.h FILE: ../../../third_party/skia/src/compute/common/cl/assert_cl.c FILE: ../../../third_party/skia/src/compute/common/cl/assert_cl.h +FILE: ../../../third_party/skia/src/compute/common/cuda/assert_cuda.c +FILE: ../../../third_party/skia/src/compute/common/cuda/assert_cuda.h FILE: ../../../third_party/skia/src/compute/common/macros.h FILE: ../../../third_party/skia/src/compute/common/util.c FILE: ../../../third_party/skia/src/compute/common/util.h +FILE: ../../../third_party/skia/src/compute/common/vk/assert_vk.c +FILE: ../../../third_party/skia/src/compute/common/vk/assert_vk.h FILE: ../../../third_party/skia/src/compute/hs/cl/bench/main.c -FILE: ../../../third_party/skia/src/compute/hs/cl/hs_cl_launcher.c -FILE: ../../../third_party/skia/src/compute/hs/cl/hs_cl_launcher.h +FILE: ../../../third_party/skia/src/compute/hs/cl/hs_cl.c +FILE: ../../../third_party/skia/src/compute/hs/cl/hs_cl.h FILE: ../../../third_party/skia/src/compute/hs/cl/hs_cl_target.h -FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_cl.cl -FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_cl.h -FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_cl_macros.h +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_intel_gen8_u32.c +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.cl +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_target.h +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_intel_gen8_u64.c +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.cl FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_target.h +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/hs_cl_macros.h +FILE: ../../../third_party/skia/src/compute/hs/cuda/bench/main.c +FILE: ../../../third_party/skia/src/compute/hs/cuda/hs_cuda.inl +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/hs_cuda_macros.h +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u32/hs_cuda_config.h +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u32/hs_cuda_u32.cu +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u64/hs_cuda_config.h +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u64/hs_cuda_u64.cu FILE: ../../../third_party/skia/src/compute/hs/gen/gen.h FILE: ../../../third_party/skia/src/compute/hs/gen/main.c FILE: ../../../third_party/skia/src/compute/hs/gen/networks.h @@ -891,13 +906,29 @@ FILE: ../../../third_party/skia/src/compute/hs/gen/networks_sorting.c FILE: ../../../third_party/skia/src/compute/hs/gen/target_cuda.c FILE: ../../../third_party/skia/src/compute/hs/gen/target_glsl.c FILE: ../../../third_party/skia/src/compute/hs/gen/target_opencl.c -FILE: ../../../third_party/skia/src/compute/hs/vk/hs_spirv_target.h -FILE: ../../../third_party/skia/src/compute/hs/vk/hs_vk_launcher.c -FILE: ../../../third_party/skia/src/compute/hs/vk/hs_vk_launcher.h -FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_glsl.h -FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_glsl_macros.h -FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_kernels.h +FILE: ../../../third_party/skia/src/compute/hs/vk/bench/main.c +FILE: ../../../third_party/skia/src/compute/hs/vk/hs_glsl_macros.h +FILE: ../../../third_party/skia/src/compute/hs/vk/hs_vk.c +FILE: ../../../third_party/skia/src/compute/hs/vk/hs_vk.h +FILE: ../../../third_party/skia/src/compute/hs/vk/hs_vk_target.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_intel_gen8_u32.c +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_modules.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_target.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_intel_gen8_u64.c +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_modules.h FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_target.h +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/hs_glsl_macros.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/hs_glsl_macros.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_modules.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_nvidia_sm35_u32.c +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_target.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_config.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_modules.h +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_nvidia_sm35_u64.c +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_target.h FILE: ../../../third_party/skia/src/compute/sk/SkContext_Compute.cpp FILE: ../../../third_party/skia/src/compute/sk/SkContext_Compute.h FILE: ../../../third_party/skia/src/compute/sk/SkDevice_Compute.cpp @@ -912,7 +943,6 @@ FILE: ../../../third_party/skia/src/compute/skc/styling.c FILE: ../../../third_party/skia/src/compute/skc/styling.h FILE: ../../../third_party/skia/src/compute/skc/styling_types.h FILE: ../../../third_party/skia/src/compute/skc/tile.h -FILE: ../../../third_party/skia/src/compute/skc/util.c FILE: ../../../third_party/skia/src/core/Sk4x4f.h FILE: ../../../third_party/skia/src/core/SkATrace.cpp FILE: ../../../third_party/skia/src/core/SkATrace.h @@ -1324,7 +1354,9 @@ FILE: ../../../third_party/skia/modules/skottie/src/SkottieAdapter.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieAdapter.h FILE: ../../../third_party/skia/modules/skottie/src/SkottieJson.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieJson.h +FILE: ../../../third_party/skia/modules/skottie/src/SkottiePriv.h FILE: ../../../third_party/skia/modules/skottie/src/SkottieTest.cpp +FILE: ../../../third_party/skia/modules/skottie/src/SkottieTextLayer.cpp FILE: ../../../third_party/skia/modules/skottie/src/SkottieTool.cpp FILE: ../../../third_party/skia/modules/sksg/include/SkSGClipEffect.h FILE: ../../../third_party/skia/modules/sksg/include/SkSGColorFilter.h @@ -1357,10 +1389,18 @@ FILE: ../../../third_party/skia/samplecode/SampleNimaActor.h FILE: ../../../third_party/skia/src/android/SkAnimatedImage.cpp FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.c FILE: ../../../third_party/skia/src/compute/common/cl/find_cl.h +FILE: ../../../third_party/skia/src/compute/common/vk/event_pool.c +FILE: ../../../third_party/skia/src/compute/common/vk/event_pool.h +FILE: ../../../third_party/skia/src/compute/common/vk/host_alloc.c +FILE: ../../../third_party/skia/src/compute/common/vk/host_alloc.h FILE: ../../../third_party/skia/src/compute/hs/cl/bench/sort.cpp +FILE: ../../../third_party/skia/src/compute/hs/cuda/bench/sort.cpp +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u32/hs_cuda.h +FILE: ../../../third_party/skia/src/compute/hs/cuda/sm_35/u64/hs_cuda.h FILE: ../../../third_party/skia/src/compute/hs/gen/target_debug.c FILE: ../../../third_party/skia/src/compute/hs/gen/transpose.c FILE: ../../../third_party/skia/src/compute/hs/gen/transpose.h +FILE: ../../../third_party/skia/src/compute/hs/vk/bench/sort.cpp FILE: ../../../third_party/skia/src/compute/skc/allocator_host.c FILE: ../../../third_party/skia/src/compute/skc/allocator_host.h FILE: ../../../third_party/skia/src/compute/skc/interop.h @@ -1513,6 +1553,7 @@ FILE: ../../../third_party/skia/src/gpu/vk/GrVkPipelineLayout.h FILE: ../../../third_party/skia/src/gpu/vk/GrVkTypesPriv.cpp FILE: ../../../third_party/skia/src/opts/SkOpts_hsw.cpp FILE: ../../../third_party/skia/src/opts/SkRasterPipeline_opts.h +FILE: ../../../third_party/skia/src/pathops/SkPathOpsAsWinding.cpp FILE: ../../../third_party/skia/src/pdf/SkClusterator.cpp FILE: ../../../third_party/skia/src/pdf/SkClusterator.h FILE: ../../../third_party/skia/src/sksl/SkSLInterpreter.cpp @@ -1918,8 +1959,9 @@ FILE: ../../../third_party/skia/experimental/docs/jsonbaseddoc.htm FILE: ../../../third_party/skia/experimental/docs/svgBackend.js FILE: ../../../third_party/skia/experimental/docs/svgbaseddoc.htm FILE: ../../../third_party/skia/experimental/docs/utilities.js +FILE: ../../../third_party/skia/experimental/pathkit/chaining.js +FILE: ../../../third_party/skia/experimental/pathkit/externs.js FILE: ../../../third_party/skia/experimental/pathkit/helper.js -FILE: ../../../third_party/skia/experimental/pathkit/helper_externs.js FILE: ../../../third_party/skia/experimental/pathkit/karma-docker.conf.js FILE: ../../../third_party/skia/experimental/pathkit/karma.conf.js FILE: ../../../third_party/skia/experimental/pathkit/package.json @@ -2293,6 +2335,7 @@ FILE: ../../../third_party/skia/site/favicon.ico FILE: ../../../third_party/skia/site/user/METADATA FILE: ../../../third_party/skia/site/user/api/METADATA FILE: ../../../third_party/skia/site/user/api/catalog.htm +FILE: ../../../third_party/skia/site/user/modules/PathKit_effects.png FILE: ../../../third_party/skia/site/user/sample/architecture.png FILE: ../../../third_party/skia/site/user/sample/detail_correct.png FILE: ../../../third_party/skia/site/user/sample/detail_wrong.png @@ -2301,6 +2344,166 @@ FILE: ../../../third_party/skia/site/user/sample/gamut_wrong.png FILE: ../../../third_party/skia/site/user/sample/gradient_correct.png FILE: ../../../third_party/skia/site/user/sample/gradient_wrong.png FILE: ../../../third_party/skia/site/user/sample/transfer_fn.png +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.bin.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.pre.cl +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.src.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u32/hs_kernels.src.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.bin +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.bin.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.bin.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.pre.cl +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.src.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/cl/intel/gen8/u64/hs_kernels.src.xxd +FILE: ../../../third_party/skia/src/compute/hs/images/hs_flip_merge.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_intel_gen8_mkeys.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_intel_gen8_msecs.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_nvidia_sm35_u32_mkeys.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_nvidia_sm35_u32_msecs.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_nvidia_sm35_u64_mkeys.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_nvidia_sm35_u64_msecs.svg +FILE: ../../../third_party/skia/src/compute/hs/images/hs_sorted_slab.svg +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bc_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_bs_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_fm_0_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_hm_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_hm_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_transpose.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u32/hs_transpose.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bc_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_bs_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_fm_1_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_hm_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_hm_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_transpose.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/intel/gen8/u64/hs_transpose.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_5.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bc_5.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_5.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_bs_5.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_5.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_fm_1_5.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_hm_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_hm_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_transpose.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u32/hs_transpose.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bc_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_bs_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_0.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_0.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_2.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_2.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_3.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_3.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_4.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_fm_1_4.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_hm_1.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_hm_1.spv.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_transpose.len.xxd +FILE: ../../../third_party/skia/src/compute/hs/vk/nvidia/sm_35/u64/hs_transpose.spv.xxd FILE: ../../../third_party/skia/src/core/SkOrderedReadBuffer.h FILE: ../../../third_party/skia/src/sksl/lex/sksl.lex FILE: ../../../third_party/skia/src/sksl/sksl.inc @@ -4034,7 +4237,6 @@ FILE: ../../../third_party/skia/src/compute/skc/subblock.h FILE: ../../../third_party/skia/src/compute/skc/surface.c FILE: ../../../third_party/skia/src/compute/skc/surface.h FILE: ../../../third_party/skia/src/compute/skc/types.h -FILE: ../../../third_party/skia/src/compute/skc/util.h FILE: ../../../third_party/skia/src/compute/skc/weakref.c FILE: ../../../third_party/skia/src/compute/skc/weakref.h FILE: ../../../third_party/skia/src/core/SkArenaAllocList.h diff --git a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java index f743061de6626..04a91143194bb 100644 --- a/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java +++ b/shell/platform/android/io/flutter/plugin/platform/SingleViewPresentation.java @@ -7,24 +7,69 @@ import android.annotation.TargetApi; import android.app.Presentation; import android.content.Context; +import android.content.ContextWrapper; +import android.graphics.Rect; import android.os.Build; import android.os.Bundle; -import android.view.Display; -import android.view.View; -import android.view.WindowManager; +import android.util.Log; +import android.view.*; import android.widget.FrameLayout; +import java.lang.reflect.*; + +import static android.content.Context.WINDOW_SERVICE; + +/* + * A presentation used for hosting a single Android view in a virtual display. + * + * This presentation overrides the WindowManager's addView/removeView/updateViewLayout methods, such that views added + * directly to the WindowManager are added as part of the presentation's view hierarchy (to mFakeWindowRootView). + * + * The view hierarchy for the presentation is as following: + * + * mRootView + * / \ + * / \ + * / \ + * mContainer mState.mFakeWindowRootView + * | + * EmbeddedView + */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) class SingleViewPresentation extends Presentation { + + /* + * When an embedded view is resized in Flutterverse we move the Android view to a new virtual display + * that has the new size. This class keeps the presentation state that moves with the view to the presentation of + * the new virtual display. + */ + static class PresentationState { + // The Android view we are embedding in the Flutter app. + private PlatformView mView; + + // The InvocationHandler for a WindowManager proxy. This is essentially the custom window manager for the + // presentation. + private WindowManagerHandler mWindowManagerHandler; + + // Contains views that were added directly to the window manager (e.g android.widget.PopupWindow). + private FakeWindowViewGroup mFakeWindowRootView; + } + private final PlatformViewFactory mViewFactory; - private PlatformView mView; + // This is the view id assigned by the Flutter framework to the embedded view, we keep it here + // so when we create the platform we can tell it its view id. private int mViewId; - // As the root view of a display cannot be detached, we use this mContainer - // as the root, and attach mView to it. This allows us to detach mView. + // The root view for the presentation, it has 2 childs: mContainer which contains the embedded view, and + // mFakeWindowRootView which contains views that were added directly to the presentation's window manager. + private FrameLayout mRootView; + + // Contains the embedded platform view (mView.getView()) when it is attached to the presentation. private FrameLayout mContainer; + private PresentationState mState; + /** * Creates a presentation that will use the view factory to create a new * platform view in the presentation's onCreate, and attach it. @@ -33,6 +78,7 @@ public SingleViewPresentation(Context outerContext, Display display, PlatformVie super(outerContext, display); mViewFactory = viewFactory; mViewId = viewId; + mState = new PresentationState(); getWindow().setFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE @@ -46,10 +92,10 @@ public SingleViewPresentation(Context outerContext, Display display, PlatformVie *
The display's density must match the density of the context used * when the view was created. */ - public SingleViewPresentation(Context outerContext, Display display, PlatformView view) { + public SingleViewPresentation(Context outerContext, Display display, PresentationState state) { super(outerContext, display); mViewFactory = null; - mView = view; + mState = state; getWindow().setFlags( WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE, WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE @@ -59,22 +105,195 @@ public SingleViewPresentation(Context outerContext, Display display, PlatformVie @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (mView == null) { - mView = mViewFactory.create(getContext(), mViewId); + if (mState.mFakeWindowRootView == null) { + mState.mFakeWindowRootView = new FakeWindowViewGroup(getContext()); } + if (mState.mWindowManagerHandler == null) { + WindowManager windowManagerDelegate = (WindowManager) getContext().getSystemService(WINDOW_SERVICE); + mState.mWindowManagerHandler = new WindowManagerHandler(windowManagerDelegate, mState.mFakeWindowRootView); + } + mContainer = new FrameLayout(getContext()); - mContainer.addView(mView.getView()); - setContentView(mContainer); + PresentationContext context = new PresentationContext(getContext(), mState.mWindowManagerHandler); + + if (mState.mView == null) { + mState.mView = mViewFactory.create(context, mViewId); + } + + mContainer.addView(mState.mView.getView()); + mRootView = new FrameLayout(getContext()); + mRootView.addView(mContainer); + mRootView.addView(mState.mFakeWindowRootView); + setContentView(mRootView); } - public PlatformView detachView() { - mContainer.removeView(mView.getView()); - return mView; + public PresentationState detachState() { + mContainer.removeAllViews(); + mRootView.removeAllViews(); + return mState; } - public View getView() { - if (mView == null) + public PlatformView getView() { + if (mState.mView == null) return null; - return mView.getView(); + return mState.mView; + } + + /* + * A view group that implements the same layout protocol that exist between the WindowManager and its direct + * children. + * + * Currently only a subset of the protocol is supported (gravity, x, and y). + */ + static class FakeWindowViewGroup extends ViewGroup { + // Used in onLayout to keep the bounds of the current view. + // We keep it as a member to avoid object allocations during onLayout which are discouraged. + private final Rect mViewBounds; + + // Used in onLayout to keep the bounds of the child views. + // We keep it as a member to avoid object allocations during onLayout which are discouraged. + private final Rect mChildRect; + + public FakeWindowViewGroup(Context context) { + super(context); + mViewBounds = new Rect(); + mChildRect = new Rect(); + } + + @Override + protected void onLayout(boolean changed, int l, int t, int r, int b) { + for(int i = 0; i < getChildCount(); i++) { + View child = getChildAt(i); + WindowManager.LayoutParams params = (WindowManager.LayoutParams) child.getLayoutParams(); + mViewBounds.set(l, t, r, b); + Gravity.apply(params.gravity, child.getMeasuredWidth(), child.getMeasuredHeight(), mViewBounds, params.x, + params.y, mChildRect); + child.layout(mChildRect.left, mChildRect.top, mChildRect.right, mChildRect.bottom); + } + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + for(int i = 0; i < getChildCount(); i++) { + View child = getChildAt(i); + child.measure(atMost(widthMeasureSpec), atMost(heightMeasureSpec)); + } + super.onMeasure(widthMeasureSpec, heightMeasureSpec); + } + + private static int atMost(int measureSpec) { + return MeasureSpec.makeMeasureSpec(MeasureSpec.getSize(measureSpec), MeasureSpec.AT_MOST); + } + } + + /** + * Proxies a Context replacing the WindowManager with our custom instance. + */ + static class PresentationContext extends ContextWrapper { + private WindowManager mWindowManager; + private final WindowManagerHandler mWindowManagerHandler; + + PresentationContext(Context base, WindowManagerHandler windowManagerHandler) { + super(base); + mWindowManagerHandler = windowManagerHandler; + } + + @Override + public Object getSystemService(String name) { + if (WINDOW_SERVICE.equals(name)) { + return getWindowManager(); + } + return super.getSystemService(name); + } + + private WindowManager getWindowManager() { + if (mWindowManager == null) { + mWindowManager = mWindowManagerHandler.getWindowManager(); + } + return mWindowManager; + } + } + + /* + * A dynamic proxy handler for a WindowManager with custom overrides. + * + * The presentation's window manager delegates all calls to the default window manager. + * WindowManager#addView calls triggered by views that are attached to the virtual display are crashing + * (see: https://github.com/flutter/flutter/issues/20714). This was triggered when selecting text in an embedded + * WebView (as the selection handles are implemented as popup windows). + * + * This dynamic proxy overrides the addView, removeView, and updateViewLayout methods to prevent these crashes. + * + * This will be more efficient as a static proxy that's not using reflection, but as the engine is currently + * not being built against the latest Android SDK we cannot override all relevant method. + * Tracking issue for upgrading the engine's Android sdk: https://github.com/flutter/flutter/issues/20717 + */ + static class WindowManagerHandler implements InvocationHandler { + private static final String TAG = "PlatformViewsController"; + + private final WindowManager mDelegate; + FakeWindowViewGroup mFakeWindowRootView; + + WindowManagerHandler(WindowManager delegate, FakeWindowViewGroup fakeWindowViewGroup) { + mDelegate = delegate; + mFakeWindowRootView = fakeWindowViewGroup; + } + + public WindowManager getWindowManager() { + return (WindowManager) Proxy.newProxyInstance( + WindowManager.class.getClassLoader(), + new Class[] { WindowManager.class }, + this + ); + } + + @Override + public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { + switch (method.getName()) { + case "addView": + addView(args); + return null; + case "removeView": + removeView(args); + return null; + case "updateViewLayout": + updateViewLayout(args); + return null; + } + try { + return method.invoke(mDelegate, args); + } catch (InvocationTargetException e) { + throw e.getCause(); + } + } + + private void addView(Object[] args) { + if (mFakeWindowRootView == null) { + Log.w(TAG, "Embedded view called addView while detached from presentation"); + return; + } + View view = (View) args[0]; + WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) args[1]; + mFakeWindowRootView.addView(view, layoutParams); + } + + private void removeView(Object[] args) { + if (mFakeWindowRootView == null) { + Log.w(TAG, "Embedded view called removeView while detached from presentation"); + return; + } + View view = (View) args[0]; + mFakeWindowRootView.removeView(view); + } + + private void updateViewLayout(Object[] args) { + if (mFakeWindowRootView == null) { + Log.w(TAG, "Embedded view called updateViewLayout while detached from presentation"); + return; + } + View view = (View) args[0]; + WindowManager.LayoutParams layoutParams = (WindowManager.LayoutParams) args[1]; + mFakeWindowRootView.updateViewLayout(view, layoutParams); + } } } diff --git a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java index 39de2d46fe031..2e062f8c2f973 100644 --- a/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java +++ b/shell/platform/android/io/flutter/plugin/platform/VirtualDisplayController.java @@ -72,7 +72,7 @@ private VirtualDisplayController( } public void resize(final int width, final int height, final Runnable onNewSizeFrameAvailable) { - final PlatformView view = mPresentation.detachView(); + final SingleViewPresentation.PresentationState presentationState = mPresentation.detachState(); // We detach the surface to prevent it being destroyed when releasing the vd. // // setSurface is only available starting API 20. We could support API 19 by re-creating a new @@ -118,18 +118,21 @@ public void onDraw() { public void onViewDetachedFromWindow(View v) {} }); - mPresentation = new SingleViewPresentation(mContext, mVirtualDisplay.getDisplay(), view); + mPresentation = new SingleViewPresentation(mContext, mVirtualDisplay.getDisplay(), presentationState); mPresentation.show(); } public void dispose() { - mPresentation.detachView().dispose(); + PlatformView view = mPresentation.getView(); + mPresentation.detachState(); + view.dispose(); mVirtualDisplay.release(); } public View getView() { if (mPresentation == null) return null; - return mPresentation.getView(); + PlatformView platformView = mPresentation.getView(); + return platformView.getView(); } } diff --git a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm index d2073fabc2e3d..a89c61acfccb7 100644 --- a/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm +++ b/shell/platform/darwin/ios/framework/Source/FlutterDartProject.mm @@ -73,8 +73,10 @@ NSString* libraryName = [mainBundle objectForInfoDictionaryKey:@"FLTLibraryPath"]; NSString* libraryPath = [mainBundle pathForResource:libraryName ofType:@""]; if (libraryPath.length > 0) { - settings.application_library_path = - [NSBundle bundleWithPath:libraryPath].executablePath.UTF8String; + NSString* executablePath = [NSBundle bundleWithPath:libraryPath].executablePath; + if (executablePath.length > 0) { + settings.application_library_path = executablePath.UTF8String; + } } } @@ -84,8 +86,11 @@ NSString* applicationFrameworkPath = [mainBundle pathForResource:@"Frameworks/App.framework" ofType:@""]; if (applicationFrameworkPath.length > 0) { - settings.application_library_path = - [NSBundle bundleWithPath:applicationFrameworkPath].executablePath.UTF8String; + NSString* executablePath = + [NSBundle bundleWithPath:applicationFrameworkPath].executablePath; + if (executablePath.length > 0) { + settings.application_library_path = executablePath.UTF8String; + } } } }