@@ -164,6 +164,26 @@ Texture* Texture::Builder::build(Engine& engine) {
164
164
(isProtectedTexturesSupported && useProtectedMemory) || !useProtectedMemory)
165
165
<< " Texture is PROTECTED but protected textures are not supported" ;
166
166
167
+ const auto validateSamplerType = [&engine = downcast (engine)](SamplerType const sampler) -> bool {
168
+ switch (sampler) {
169
+ case SamplerType::SAMPLER_2D:
170
+ case SamplerType::SAMPLER_CUBEMAP:
171
+ case SamplerType::SAMPLER_EXTERNAL:
172
+ return true ;
173
+ case SamplerType::SAMPLER_3D:
174
+ case SamplerType::SAMPLER_2D_ARRAY:
175
+ return engine.hasFeatureLevel (FeatureLevel::FEATURE_LEVEL_1);
176
+ case SamplerType::SAMPLER_CUBEMAP_ARRAY:
177
+ return engine.hasFeatureLevel (FeatureLevel::FEATURE_LEVEL_2);
178
+ }
179
+ return false ;
180
+ };
181
+
182
+ // Validate sampler before any further interaction with it.
183
+ FILAMENT_CHECK_PRECONDITION (validateSamplerType (mImpl ->mTarget ))
184
+ << " SamplerType " << uint8_t (mImpl ->mTarget ) << " not support at feature level "
185
+ << uint8_t (engine.getActiveFeatureLevel ());
186
+
167
187
// SAMPLER_EXTERNAL implies imported.
168
188
if (mImpl ->mTarget == SamplerType::SAMPLER_EXTERNAL) {
169
189
mImpl ->mExternal = true ;
@@ -216,24 +236,6 @@ Texture* Texture::Builder::build(Engine& engine) {
216
236
FILAMENT_CHECK_PRECONDITION (!swizzled) << " WebGL does not support texture swizzling." ;
217
237
#endif
218
238
219
- auto validateSamplerType = [&engine = downcast (engine)](SamplerType const sampler) -> bool {
220
- switch (sampler) {
221
- case SamplerType::SAMPLER_2D:
222
- case SamplerType::SAMPLER_CUBEMAP:
223
- case SamplerType::SAMPLER_EXTERNAL:
224
- return true ;
225
- case SamplerType::SAMPLER_3D:
226
- case SamplerType::SAMPLER_2D_ARRAY:
227
- return engine.hasFeatureLevel (FeatureLevel::FEATURE_LEVEL_1);
228
- case SamplerType::SAMPLER_CUBEMAP_ARRAY:
229
- return engine.hasFeatureLevel (FeatureLevel::FEATURE_LEVEL_2);
230
- }
231
- };
232
-
233
- FILAMENT_CHECK_PRECONDITION (validateSamplerType (mImpl ->mTarget ))
234
- << " SamplerType " << uint8_t (mImpl ->mTarget ) << " not support at feature level "
235
- << uint8_t (engine.getActiveFeatureLevel ());
236
-
237
239
FILAMENT_CHECK_PRECONDITION ((swizzled && sampleable) || !swizzled)
238
240
<< " Swizzled texture must be SAMPLEABLE" ;
239
241
0 commit comments