From 5983f5da816e8e0cb72122d18a852e299a165bc4 Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Thu, 22 Jun 2023 09:28:51 -0700 Subject: [PATCH 1/2] [Impeller] Add validation forbidding SamplerAddressMode::kDecal on the OpenGLES backend --- impeller/renderer/backend/gles/context_gles.cc | 1 + impeller/renderer/backend/gles/sampler_library_gles.cc | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/impeller/renderer/backend/gles/context_gles.cc b/impeller/renderer/backend/gles/context_gles.cc index 8da1154a4c765..47e7256374b18 100644 --- a/impeller/renderer/backend/gles/context_gles.cc +++ b/impeller/renderer/backend/gles/context_gles.cc @@ -75,6 +75,7 @@ ContextGLES::ContextGLES(std::unique_ptr gl, .SetSupportsComputeSubgroups(false) .SetSupportsReadFromResolve(false) .SetSupportsReadFromOnscreenTexture(false) + .SetSupportsDecalTileMode(false) .Build(); } diff --git a/impeller/renderer/backend/gles/sampler_library_gles.cc b/impeller/renderer/backend/gles/sampler_library_gles.cc index bea4a4d40879b..cf06b42149da1 100644 --- a/impeller/renderer/backend/gles/sampler_library_gles.cc +++ b/impeller/renderer/backend/gles/sampler_library_gles.cc @@ -5,6 +5,8 @@ #include "impeller/renderer/backend/gles/sampler_library_gles.h" #include "impeller/base/config.h" +#include "impeller/base/validation.h" +#include "impeller/core/formats.h" #include "impeller/renderer/backend/gles/sampler_gles.h" namespace impeller { @@ -17,6 +19,14 @@ SamplerLibraryGLES::~SamplerLibraryGLES() = default; // |SamplerLibrary| std::shared_ptr SamplerLibraryGLES::GetSampler( SamplerDescriptor descriptor) { + if (descriptor.width_address_mode == SamplerAddressMode::kDecal || + descriptor.height_address_mode == SamplerAddressMode::kDecal || + descriptor.depth_address_mode == SamplerAddressMode::kDecal) { + VALIDATION_LOG << "SamplerAddressMode::kDecal is not supported by the " + "OpenGLES backend."; + return nullptr; + } + auto found = samplers_.find(descriptor); if (found != samplers_.end()) { return found->second; From 3682cda2fe49e4bb8f2f2b593d8b6c78c8beb59d Mon Sep 17 00:00:00 2001 From: Brandon DeRosier Date: Thu, 22 Jun 2023 09:49:08 -0700 Subject: [PATCH 2/2] Link to issue --- impeller/renderer/backend/gles/sampler_library_gles.cc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/impeller/renderer/backend/gles/sampler_library_gles.cc b/impeller/renderer/backend/gles/sampler_library_gles.cc index cf06b42149da1..7f4cd3d243180 100644 --- a/impeller/renderer/backend/gles/sampler_library_gles.cc +++ b/impeller/renderer/backend/gles/sampler_library_gles.cc @@ -19,6 +19,9 @@ SamplerLibraryGLES::~SamplerLibraryGLES() = default; // |SamplerLibrary| std::shared_ptr SamplerLibraryGLES::GetSampler( SamplerDescriptor descriptor) { + // TODO(bdero): Change this validation once optional support for kDecal is + // added to the OpenGLES backend: + // https://github.com/flutter/flutter/issues/129358 if (descriptor.width_address_mode == SamplerAddressMode::kDecal || descriptor.height_address_mode == SamplerAddressMode::kDecal || descriptor.depth_address_mode == SamplerAddressMode::kDecal) {