Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 1b289e2

Browse files
author
Jonah Williams
authored
Revert "[Impeller] change default sampler descriptor to use nearest mip level and remove kNone (#40460)" (#40481)
Revert "[Impeller] change default sampler descriptor to use nearest mip level and remove kNone"
1 parent 2b3cb10 commit 1b289e2

File tree

9 files changed

+27
-29
lines changed

9 files changed

+27
-29
lines changed

impeller/aiks/aiks_unittests.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,8 @@ TEST_P(AiksTest, CanRenderTiledTexture) {
128128
Entity::TileMode::kClamp, Entity::TileMode::kRepeat,
129129
Entity::TileMode::kMirror, Entity::TileMode::kDecal};
130130
const char* mip_filter_names[] = {"None", "Nearest", "Linear"};
131-
const MipFilter mip_filters[] = {MipFilter::kNearest, MipFilter::kLinear};
131+
const MipFilter mip_filters[] = {MipFilter::kNone, MipFilter::kNearest,
132+
MipFilter::kLinear};
132133
const char* min_mag_filter_names[] = {"Nearest", "Linear"};
133134
const MinMagFilter min_mag_filters[] = {MinMagFilter::kNearest,
134135
MinMagFilter::kLinear};

impeller/entity/contents/text_contents.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ static bool CommonRender(
114114
sampler_desc.min_filter = MinMagFilter::kLinear;
115115
sampler_desc.mag_filter = MinMagFilter::kLinear;
116116
}
117-
sampler_desc.mip_filter = MipFilter::kNearest;
117+
sampler_desc.mip_filter = MipFilter::kNone;
118118

119119
typename FS::FragInfo frag_info;
120120
frag_info.text_color = ToVector(color.Premultiply());

impeller/renderer/backend/gles/sampler_gles.cc

Lines changed: 12 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
// found in the LICENSE file.
44

55
#include "impeller/renderer/backend/gles/sampler_gles.h"
6-
#include <iostream>
76

87
#include "impeller/renderer/backend/gles/formats_gles.h"
98
#include "impeller/renderer/backend/gles/proc_table_gles.h"
@@ -20,19 +19,15 @@ bool SamplerGLES::IsValid() const {
2019
return true;
2120
}
2221

23-
static GLint ToParam(MinMagFilter minmag_filter,
24-
std::optional<MipFilter> mip_filter = std::nullopt) {
25-
if (!mip_filter.has_value()) {
26-
switch (minmag_filter) {
27-
case MinMagFilter::kNearest:
28-
return GL_NEAREST;
29-
case MinMagFilter::kLinear:
30-
return GL_LINEAR;
31-
}
32-
FML_UNREACHABLE();
33-
}
34-
35-
switch (mip_filter.value()) {
22+
static GLint ToParam(MinMagFilter minmag_filter, MipFilter mip_filter) {
23+
switch (mip_filter) {
24+
case MipFilter::kNone:
25+
switch (minmag_filter) {
26+
case MinMagFilter::kNearest:
27+
return GL_NEAREST;
28+
case MinMagFilter::kLinear:
29+
return GL_LINEAR;
30+
}
3631
case MipFilter::kNearest:
3732
switch (minmag_filter) {
3833
case MinMagFilter::kNearest:
@@ -74,17 +69,12 @@ bool SamplerGLES::ConfigureBoundTexture(const TextureGLES& texture,
7469
if (!target.has_value()) {
7570
return false;
7671
}
77-
const auto& desc = GetDescriptor();
78-
79-
std::optional<MipFilter> mip_filter = std::nullopt;
80-
if (texture.GetTextureDescriptor().mip_count > 1) {
81-
mip_filter = desc.mip_filter;
82-
}
8372

73+
const auto& desc = GetDescriptor();
8474
gl.TexParameteri(target.value(), GL_TEXTURE_MIN_FILTER,
85-
ToParam(desc.min_filter, mip_filter));
75+
ToParam(desc.min_filter, desc.mip_filter));
8676
gl.TexParameteri(target.value(), GL_TEXTURE_MAG_FILTER,
87-
ToParam(desc.mag_filter));
77+
ToParam(desc.mag_filter, MipFilter::kNone));
8878
gl.TexParameteri(target.value(), GL_TEXTURE_WRAP_S,
8979
ToAddressMode(desc.width_address_mode));
9080
gl.TexParameteri(target.value(), GL_TEXTURE_WRAP_T,

impeller/renderer/backend/metal/formats_mtl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -332,6 +332,8 @@ constexpr MTLSamplerMinMagFilter ToMTLSamplerMinMagFilter(MinMagFilter filter) {
332332

333333
constexpr MTLSamplerMipFilter ToMTLSamplerMipFilter(MipFilter filter) {
334334
switch (filter) {
335+
case MipFilter::kNone:
336+
return MTLSamplerMipFilterNotMipmapped;
335337
case MipFilter::kNearest:
336338
return MTLSamplerMipFilterNearest;
337339
case MipFilter::kLinear:

impeller/renderer/backend/vulkan/formats_vk.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,8 @@ constexpr vk::SamplerMipmapMode ToVKSamplerMipmapMode(MipFilter filter) {
225225
return vk::SamplerMipmapMode::eNearest;
226226
case MipFilter::kLinear:
227227
return vk::SamplerMipmapMode::eLinear;
228+
case MipFilter::kNone:
229+
return vk::SamplerMipmapMode::eNearest;
228230
}
229231

230232
FML_UNREACHABLE();

impeller/renderer/formats.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ enum class MinMagFilter {
247247
};
248248

249249
enum class MipFilter {
250+
/// Always sample from mip level 0. Other mip levels are ignored.
251+
kNone,
250252
/// Sample from the nearest mip level.
251253
kNearest,
252254
/// Sample from the two nearest mip levels and linearly interpolate between

impeller/renderer/renderer_unittests.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -724,14 +724,15 @@ TEST_P(RendererTest, CanGenerateMipmaps) {
724724

725725
bool first_frame = true;
726726
Renderer::RenderCallback callback = [&](RenderTarget& render_target) {
727-
const char* mip_filter_names[] = {"Nearest", "Linear"};
728-
const MipFilter mip_filters[] = {MipFilter::kNearest, MipFilter::kLinear};
727+
const char* mip_filter_names[] = {"None", "Nearest", "Linear"};
728+
const MipFilter mip_filters[] = {MipFilter::kNone, MipFilter::kNearest,
729+
MipFilter::kLinear};
729730
const char* min_filter_names[] = {"Nearest", "Linear"};
730731
const MinMagFilter min_filters[] = {MinMagFilter::kNearest,
731732
MinMagFilter::kLinear};
732733

733734
// UI state.
734-
static int selected_mip_filter = 1;
735+
static int selected_mip_filter = 2;
735736
static int selected_min_filter = 0;
736737
static float lod = 4.5;
737738

impeller/renderer/sampler_descriptor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Context;
1818
struct SamplerDescriptor final : public Comparable<SamplerDescriptor> {
1919
MinMagFilter min_filter = MinMagFilter::kNearest;
2020
MinMagFilter mag_filter = MinMagFilter::kNearest;
21-
MipFilter mip_filter = MipFilter::kNearest;
21+
MipFilter mip_filter = MipFilter::kNone;
2222

2323
SamplerAddressMode width_address_mode = SamplerAddressMode::kClampToEdge;
2424
SamplerAddressMode height_address_mode = SamplerAddressMode::kClampToEdge;

impeller/scene/geometry.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -246,7 +246,7 @@ void SkinnedVertexBufferGeometry::BindToCommand(
246246
SamplerDescriptor sampler_desc;
247247
sampler_desc.min_filter = MinMagFilter::kNearest;
248248
sampler_desc.mag_filter = MinMagFilter::kNearest;
249-
sampler_desc.mip_filter = MipFilter::kNearest;
249+
sampler_desc.mip_filter = MipFilter::kNone;
250250
sampler_desc.width_address_mode = SamplerAddressMode::kRepeat;
251251
sampler_desc.label = "NN Repeat";
252252

0 commit comments

Comments
 (0)