fix that buffoonery
This commit is contained in:
@@ -45,25 +45,10 @@ bool Engine::createInstance() {
|
|||||||
.apiVersion = VK_API_VERSION_1_4 // this one is most important
|
.apiVersion = VK_API_VERSION_1_4 // this one is most important
|
||||||
};
|
};
|
||||||
|
|
||||||
// get necessary extensions that our windowing library requires
|
// get extensions that our windowing library requires
|
||||||
uint32_t instanceExtensionsCount = 0;
|
uint32_t instanceExtensionsCount = 0;
|
||||||
char const* const* instanceExtensions{ SDL_Vulkan_GetInstanceExtensions(&instanceExtensionsCount) };
|
char const* const* instanceExtensions{ SDL_Vulkan_GetInstanceExtensions(&instanceExtensionsCount) };
|
||||||
|
|
||||||
// get required validation layers as specified by our app
|
|
||||||
std::vector<const char*> requiredValidationLayers;
|
|
||||||
if(enableValidationLayers) requiredValidationLayers.assign(validationLayers.begin(), validationLayers.end());
|
|
||||||
|
|
||||||
auto validationLayerProperties = context_.enumerateInstanceLayerProperties();
|
|
||||||
auto unsupportedLayer = std::ranges::find_if(requiredValidationLayers, [&validationLayerProperties](const auto& requiredLayer) {
|
|
||||||
return std::ranges::none_of(validationLayerProperties, [requiredLayer](const auto& layerProperty) {
|
|
||||||
return strcmp(layerProperty.layerName, requiredLayer) == 0;
|
|
||||||
});
|
|
||||||
}); // TODO: what black magic even is this
|
|
||||||
if(unsupportedLayer != requiredValidationLayers.end()) {
|
|
||||||
std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] Required validation layer not supported: " << *unsupportedLayer << std::endl;
|
|
||||||
errorCount++;
|
|
||||||
}
|
|
||||||
|
|
||||||
// get all available extensions
|
// get all available extensions
|
||||||
auto extensionProperties = context_.enumerateInstanceExtensionProperties();
|
auto extensionProperties = context_.enumerateInstanceExtensionProperties();
|
||||||
|
|
||||||
@@ -73,12 +58,11 @@ bool Engine::createInstance() {
|
|||||||
std::cout << "\t" << extensionProperty.extensionName << std::endl;
|
std::cout << "\t" << extensionProperty.extensionName << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// check that all required extensions are available
|
||||||
for(uint32_t i = 0; i < instanceExtensionsCount; i++) { // for each extension that we require
|
for(uint32_t i = 0; i < instanceExtensionsCount; i++) { // for each extension that we require
|
||||||
bool found = false;
|
bool found = false;
|
||||||
for(const auto& extensionProperty : extensionProperties) { // see if it matches any extensions that are provided
|
for(const auto& extensionProperty : extensionProperties) { // see if it matches any extensions that are provided
|
||||||
if(strcmp(extensionProperty.extensionName, instanceExtensions[i]) == 0) {
|
if(strcmp(extensionProperty.extensionName, instanceExtensions[i]) == 0) {
|
||||||
std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] Required SDL3 extension not supported: " << instanceExtensions[i] << std::endl;
|
|
||||||
} else {
|
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -90,7 +74,39 @@ bool Engine::createInstance() {
|
|||||||
// in case you're curious
|
// in case you're curious
|
||||||
//std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] SDL3 extension located: " << instanceExtensions[i] << std::endl;
|
//std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] SDL3 extension located: " << instanceExtensions[i] << std::endl;
|
||||||
}
|
}
|
||||||
} // if any weren't then we must exit
|
}
|
||||||
|
|
||||||
|
// get required validation layers as specified by our app
|
||||||
|
std::vector<const char*> requiredValidationLayers;
|
||||||
|
if(enableValidationLayers) requiredValidationLayers.assign(validationLayers.begin(), validationLayers.end());
|
||||||
|
|
||||||
|
// get available validation layers
|
||||||
|
auto validationLayerProperties = context_.enumerateInstanceLayerProperties();
|
||||||
|
|
||||||
|
// again print if we feel like it
|
||||||
|
std::cout << "Available Vulkan Validation Layers: " << std::endl;
|
||||||
|
for(const auto& validationLayer : validationLayerProperties) {
|
||||||
|
std::cout << "\t" << validationLayer.layerName << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// check that all required validation layers are avilable
|
||||||
|
for(int i = 0; i < requiredValidationLayers.size(); i++) {
|
||||||
|
bool found = false;
|
||||||
|
for(const auto& validationLayer : validationLayerProperties) {
|
||||||
|
if(strcmp(requiredValidationLayers[i], validationLayer.layerName) == 0) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(!found) {
|
||||||
|
errorCount++;
|
||||||
|
std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] Required validation layer not supported: " << requiredValidationLayers[i] << std::endl;
|
||||||
|
} else { // in case you're curious
|
||||||
|
//std::cout << "[" << __FUNCTION__ << ": " << __LINE__ << "] VkValidation layer located: " << requiredValidationLayers[i] << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if any we had errors then we must exit
|
||||||
if(errorCount != 0) return false;
|
if(errorCount != 0) return false;
|
||||||
|
|
||||||
vk::InstanceCreateInfo instanceCreateInfo {
|
vk::InstanceCreateInfo instanceCreateInfo {
|
||||||
|
|||||||
Reference in New Issue
Block a user