[Impeller] make sampler use string_view instead of std::string. (#56821)
I believe these are always const strings anyway, so remove the copy associated with using std::string.
diff --git a/impeller/core/sampler_descriptor.cc b/impeller/core/sampler_descriptor.cc
index 9e990898..5f668bb 100644
--- a/impeller/core/sampler_descriptor.cc
+++ b/impeller/core/sampler_descriptor.cc
@@ -4,19 +4,17 @@
#include "impeller/core/sampler_descriptor.h"
-#include "fml/logging.h"
-
namespace impeller {
SamplerDescriptor::SamplerDescriptor() = default;
-SamplerDescriptor::SamplerDescriptor(std::string label,
+SamplerDescriptor::SamplerDescriptor(std::string_view label,
MinMagFilter min_filter,
MinMagFilter mag_filter,
MipFilter mip_filter)
: min_filter(min_filter),
mag_filter(mag_filter),
mip_filter(mip_filter),
- label(std::move(label)) {}
+ label(label) {}
} // namespace impeller
diff --git a/impeller/core/sampler_descriptor.h b/impeller/core/sampler_descriptor.h
index 0e92745..31e91c1 100644
--- a/impeller/core/sampler_descriptor.h
+++ b/impeller/core/sampler_descriptor.h
@@ -21,11 +21,11 @@
SamplerAddressMode height_address_mode = SamplerAddressMode::kClampToEdge;
SamplerAddressMode depth_address_mode = SamplerAddressMode::kClampToEdge;
- std::string label = "NN Clamp Sampler";
+ std::string_view label = "NN Clamp Sampler";
SamplerDescriptor();
- SamplerDescriptor(std::string label,
+ SamplerDescriptor(std::string_view label,
MinMagFilter min_filter,
MinMagFilter mag_filter,
MipFilter mip_filter);
diff --git a/impeller/display_list/canvas.cc b/impeller/display_list/canvas.cc
index 4e5a4dc..08264d3 100644
--- a/impeller/display_list/canvas.cc
+++ b/impeller/display_list/canvas.cc
@@ -782,6 +782,7 @@
contents->SetEffectTransform(effect_transform);
contents->SetTexture(texture);
contents->SetTileMode(x_tile_mode, y_tile_mode);
+ contents->SetSamplerDescriptor(sampler_descriptor);
entity.SetContents(paint.WithFilters(std::move(contents)));
AddRenderEntityToCurrentPass(entity);
diff --git a/impeller/renderer/backend/metal/sampler_library_mtl.mm b/impeller/renderer/backend/metal/sampler_library_mtl.mm
index 0f24029..7253833 100644
--- a/impeller/renderer/backend/metal/sampler_library_mtl.mm
+++ b/impeller/renderer/backend/metal/sampler_library_mtl.mm
@@ -34,9 +34,11 @@
if (@available(iOS 14.0, macos 10.12, *)) {
desc.borderColor = MTLSamplerBorderColorTransparentBlack;
}
+#ifdef IMPELLER_DEBUG
if (!descriptor.label.empty()) {
- desc.label = @(descriptor.label.c_str());
+ desc.label = @(descriptor.label.data());
}
+#endif // IMPELLER_DEBUG
auto mtl_sampler = [device_ newSamplerStateWithDescriptor:desc];
if (!mtl_sampler) {
diff --git a/impeller/renderer/backend/vulkan/sampler_vk.cc b/impeller/renderer/backend/vulkan/sampler_vk.cc
index 836f9bd..8a1eacc 100644
--- a/impeller/renderer/backend/vulkan/sampler_vk.cc
+++ b/impeller/renderer/backend/vulkan/sampler_vk.cc
@@ -92,7 +92,7 @@
}
if (!desc.label.empty()) {
- ContextVK::SetDebugName(device, sampler.value.get(), desc.label.c_str());
+ ContextVK::SetDebugName(device, sampler.value.get(), desc.label.data());
}
return std::move(sampler.value);