я использую версию Macbook OS Lets
у меня ошибка
уровень проверки: ошибка проверки: [ VUID-VkDeviceCreateInfo-pProperties-04451] Объект 0: дескриптор = 0x600002e50360, тип = VK_OBJECT_TYPE_PHYSICAL_DEVICE; | Идентификатор сообщения = 0x3a3b6ca0 | vkCreateDevice(): VK_KHR_portability_subset должен быть включен, поскольку физическое устройство VkPhysicalDevice 0x600002e50360[
могу ли я получить помощь?
спасибо
Код: Выделить всё
//
// Created by Abdulkafi on 03/10/2024 A.
//
#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]
Мобильная версия