Ошибка проверки: VK_KHR_portability_subset должен быть включен, поскольку физическое устройство VkPhysicalDeviceC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Ошибка проверки: VK_KHR_portability_subset должен быть включен, поскольку физическое устройство VkPhysicalDevice

Сообщение Anonymous »

здравствуйте, у всех есть ошибка
Это сообщение об ошибке указывает на то, что расширение VK_KHR_portability_subset должно быть включено при создании устройства Vulkan. Похоже, что реализация Vulkan в macOS (с использованием MoltenVK) требует этого расширения для правильной работы.
В моем приложении Vulkan я пытаюсь создать логическое устройство без включения этого расширения, что скорее всего, вызывает ошибку. Подозреваю, что мне нужно включить VK_KHR_portability_subset в список необходимых расширений устройства при настройке структуры VkDeviceCreateInfo.
Просьба о помощи:
Может ли кто-нибудь пожалуйста, помогите мне понять, почему возникает эта ошибка и как правильно включить расширение VK_KHR_portability_subset в моем приложении Vulkan на macOS? Мы будем очень признательны за любые рекомендации по устранению этой ошибки проверки.

Код: Выделить всё

validation layer: Validation Error: \[ VUID-VkDeviceCreateInfo-pProperties-04451 \] Object 0: handle = 0x600002e50360, type = VK_OBJECT_TYPE_PHYSICAL_DEVICE; | MessageID = 0x3a3b6ca0 | vkCreateDevice():  VK_KHR_portability_subset must be enabled because physical device VkPhysicalDevice 0x600002e50360\[

могу ли я получить помощь?
спасибо

Код: Выделить всё

#ifndef WINDOW_H
#define WINDOW_H

#define GLFW_INCLUDE_VULKAN

#include 
#include 
#include
#include

#ifdef NDEBUG
const bool enableValidationLayers = false;
#else
const bool enableValidationLayers = true;
#endif

namespace Application {

struct QueueFamilyIndices {
std::optional graphicsFamily;

std::optional presentFamily;

bool isComplete() {
return graphicsFamily.has_value();
}
};

struct SwapChainSupportDetails {
VkSurfaceCapabilitiesKHR capabilities;
std::vector formats;
std::vector presentModes;
};

class Window {
public:
void run();

private:
GLFWwindow *window;
uint32_t WIDTH = 800;
uint32_t HEIGHT = 600;
VkInstance instance;
VkDebugUtilsMessengerEXT debugMessenger;
const std::vector validationLayers = {
"VK_LAYER_KHRONOS_validation"
};

void initWindow();

void initVulkan();

void mainLoop() const;

void cleanup() const;

void setupDebugMessenger();

std::vector getRequiredExtensions(bool includePortabilityExtension = true);

void extensionProperties() const;

bool checkValidationLayerSupport();

static void mouse_button_callback(GLFWwindow *window, int button, int action, int mods);

void createInstance();

VkPhysicalDevice physicalDevice = VK_NULL_HANDLE;

QueueFamilyIndices findQueueFamilies(VkPhysicalDevice device);

void pickPhysicalDevice();

bool isDeviceSuitable(const VkPhysicalDevice &device, int &score);

int rateDeviceSuitability(VkPhysicalDevice devices);

VkDevice device;

VkQueue graphicsQueue;

void createLogicalDevice();

VkSurfaceKHR surface;

void createSurface();

VkQueue presentQueue;

const std::vector deviceExtensions = {
VK_KHR_SWAPCHAIN_EXTENSION_NAME
};

bool checkDeviceExtensionSupport(VkPhysicalDevice device);

SwapChainSupportDetails querySwapChainSupport(VkPhysicalDevice device);
};
}

#endif // WINDOW_HPP

Код: Выделить всё

//
// Created by Abdulkafi on 03/10/2024 A.
//
#include "Window.hpp"
#include 
#include 
#include 

namespace Application {
static VKAPI_ATTR VkBool32 VKAPI_CALL debugCallback(
VkDebugUtilsMessageSeverityFlagBitsEXT meesageSeverity,
VkDebugUtilsMessageTypeFlagsEXT messageType,
const VkDebugUtilsMessengerCallbackDataEXT *pCallbackDate,
void *pUserData) {
std::cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79100232/validation-error-vk-khr-portability-subset-must-be-enabled-because-physical-dev[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»