Skip to content

Commit a2fd5fa

Browse files
committed
Address review: DCHECK array layer count, TODO for Dart surfacing
1 parent a2141b6 commit a2fd5fa

3 files changed

Lines changed: 11 additions & 4 deletions

File tree

‎engine/src/flutter/impeller/renderer/backend/gles/blit_command_gles.cc‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,9 @@ bool BlitCopyBufferToTextureCommandGLES::Encode(
182182
texture_target = GL_TEXTURE_CUBE_MAP_POSITIVE_X + slice;
183183
break;
184184
case TextureType::kTexture2DArray:
185+
// TODO(bdero): Surface array-texture support up to the Flutter GPU Dart
186+
// API so callers get a clear error at texture creation instead of a
187+
// failed upload on contexts without array support.
185188
if (!reactor.GetProcTable().GetCapabilities()->SupportsTextureArrays()) {
186189
VALIDATION_LOG
187190
<< "2D array textures are not supported on this context.";

‎engine/src/flutter/impeller/renderer/backend/gles/test/texture_gles_unittests.cc‎

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
#include "flutter/testing/testing.h"
1111
#include "gtest/gtest.h"
1212
#include "impeller/base/validation.h"
13-
#include "impeller/core/formats.h"
14-
#include "impeller/core/texture_descriptor.h"
1513
#include "impeller/core/buffer_view.h"
14+
#include "impeller/core/formats.h"
1615
#include "impeller/core/range.h"
16+
#include "impeller/core/texture_descriptor.h"
1717
#include "impeller/renderer/backend/gles/handle_gles.h"
1818
#include "impeller/renderer/backend/gles/proc_table_gles.h"
1919
#include "impeller/renderer/backend/gles/test/mock_gles.h"
@@ -204,8 +204,10 @@ TEST_P(TextureGLESTest, CanCreateAndUpload2DArrayTexture) {
204204
/*mip_level=*/0, slice));
205205
}
206206
EXPECT_TRUE(blit_pass->EncodeCommands());
207-
EXPECT_TRUE(
208-
GetContext()->GetCommandQueue()->Submit({std::move(command_buffer)}).ok());
207+
EXPECT_TRUE(GetContext()
208+
->GetCommandQueue()
209+
->Submit({std::move(command_buffer)})
210+
.ok());
209211
EXPECT_TRUE(context_gles.GetReactor()->React());
210212
}
211213

‎engine/src/flutter/lib/gpu/texture.cc‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
#include "flutter/lib/gpu/texture.h"
66

77
#include <cstring>
8+
#include <limits>
89

910
#include "flutter/lib/gpu/formats.h"
1011
#include "flutter/lib/ui/painting/image.h"
@@ -219,6 +220,7 @@ bool InternalFlutterGpu_Texture_Initialize(Dart_Handle wrapper,
219220
if (layer_count < 1) {
220221
return false;
221222
}
223+
FML_DCHECK(layer_count <= std::numeric_limits<uint16_t>::max());
222224
impeller::TextureDescriptor desc;
223225
desc.storage_mode = flutter::gpu::ToImpellerStorageMode(storage_mode);
224226
desc.size = {width, height};

0 commit comments

Comments
 (0)