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

Commit 29f2dc3

Browse files
authored
[Impeller] Remove unactionable error logs and use structure chains for instance creation. (#43629)
I didn't know this when I wrote it initially but structure chains will throw a compile time error if a chain member violates the Vulkan spec. pNext chaining is easy to mess up otherwise and we should use structure chains where possible. We are already doing this during pipeline construction.
1 parent dcb65cc commit 29f2dc3

1 file changed

Lines changed: 9 additions & 16 deletions

File tree

impeller/renderer/backend/vulkan/context_vk.cc

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -185,28 +185,21 @@ void ContextVK::Setup(Settings settings) {
185185
application_info.setPEngineName("Impeller");
186186
application_info.setPApplicationName("Impeller");
187187

188+
vk::StructureChain<vk::InstanceCreateInfo, vk::ValidationFeaturesEXT>
189+
instance_chain;
190+
191+
if (!caps->AreValidationsEnabled()) {
192+
instance_chain.unlink<vk::ValidationFeaturesEXT>();
193+
}
194+
188195
std::vector<vk::ValidationFeatureEnableEXT> enabled_validations = {
189196
vk::ValidationFeatureEnableEXT::eSynchronizationValidation,
190197
};
191198

192-
vk::ValidationFeaturesEXT validation;
199+
auto validation = instance_chain.get<vk::ValidationFeaturesEXT>();
193200
validation.setEnabledValidationFeatures(enabled_validations);
194201

195-
vk::InstanceCreateInfo instance_info;
196-
if (caps->AreValidationsEnabled()) {
197-
std::stringstream ss;
198-
ss << "Enabling validation layers, features: [";
199-
for (const auto& validation : enabled_validations) {
200-
ss << vk::to_string(validation) << " ";
201-
}
202-
ss << "]";
203-
FML_LOG(ERROR) << ss.str();
204-
#if !defined(IMPELLER_ENABLE_VULKAN_VALIDATION_LAYERS) && FML_OS_ANDROID
205-
FML_LOG(ERROR) << "Vulkan validation layers turned on but the gn argument "
206-
"`--enable-vulkan-validation-layers` is missing.";
207-
#endif
208-
instance_info.pNext = &validation;
209-
}
202+
auto instance_info = instance_chain.get<vk::InstanceCreateInfo>();
210203
instance_info.setPEnabledLayerNames(enabled_layers_c);
211204
instance_info.setPEnabledExtensionNames(enabled_extensions_c);
212205
instance_info.setPApplicationInfo(&application_info);

0 commit comments

Comments
 (0)