diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..259148f --- /dev/null +++ b/.gitignore @@ -0,0 +1,32 @@ +# Prerequisites +*.d + +# Compiled Object files +*.slo +*.lo +*.o +*.obj + +# Precompiled Headers +*.gch +*.pch + +# Compiled Dynamic libraries +*.so +*.dylib +*.dll + +# Fortran module files +*.mod +*.smod + +# Compiled Static libraries +*.lai +*.la +*.a +*.lib + +# Executables +*.exe +*.out +*.app diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0dc246a --- /dev/null +++ b/Makefile @@ -0,0 +1,17 @@ +_BREW_PREFIX=$(shell brew --prefix) +VULKAN_SDK ?= ${HOME}/VulkanSDK/1.3.236.0 +VK_ICD_FILENAMES=${VULKAN_SDK}/macOS/share/vulkan/icd.d/MoltenVK_icd.json +VK_LAYER_PATH=${VULKAN_SDK}/macOS/share/vulkan/explicit_layer.d + +.PHONY: main +main: main.cpp + # compile + clang++ -I${_BREW_PREFIX}/include -I${VULKAN_SDK}/macOS/include -c main.cpp -o main.o + # link + clang++ -L${_BREW_PREFIX}/lib -lglfw.3.3 -L${VULKAN_SDK}/macOS/lib -lvulkan.1.3.236 -l vulkan.1 main.o -o main + +.PHONY: run +run: main + chmod +x ./main + ./main + diff --git a/README.md b/README.md new file mode 100644 index 0000000..02726dc --- /dev/null +++ b/README.md @@ -0,0 +1,10 @@ +Tested on macOS Ventura 13.1 with M1 processor. + +Install VulkanSDK: https://vulkan.lunarg.com/ + +``` +brew install glfw glm +export VULKAN_SDK=$HOME/path/to/your/VulkanSDK/1.3.236.0 + +make +``` diff --git a/main b/main new file mode 100755 index 0000000..142a19b Binary files /dev/null and b/main differ diff --git a/main.cpp b/main.cpp new file mode 100644 index 0000000..e7335bc --- /dev/null +++ b/main.cpp @@ -0,0 +1,35 @@ +#define GLFW_INCLUDE_VULKAN +#include + +#define GLM_FORCE_RADIANS +#define GLM_FORCE_DEPTH_ZERO_TO_ONE +#include +#include + +#include + +int main() { + glfwInit(); + + glfwWindowHint(GLFW_CLIENT_API, GLFW_NO_API); + GLFWwindow* window = glfwCreateWindow(800, 600, "Vulkan window", nullptr, nullptr); + + uint32_t extensionCount = 0; + vkEnumerateInstanceExtensionProperties(nullptr, &extensionCount, nullptr); + + std::cout << extensionCount << " extensions supported\n"; + + glm::mat4 matrix; + glm::vec4 vec; + auto test = matrix * vec; + + while(!glfwWindowShouldClose(window)) { + glfwPollEvents(); + } + + glfwDestroyWindow(window); + + glfwTerminate(); + + return 0; +} diff --git a/vulkan-playground.xcodeproj/project.pbxproj b/vulkan-playground.xcodeproj/project.pbxproj deleted file mode 100644 index 82d18c2..0000000 --- a/vulkan-playground.xcodeproj/project.pbxproj +++ /dev/null @@ -1,278 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 56; - objects = { - -/* Begin PBXBuildFile section */ - 11DF0D402977FD9A00D1F0F7 /* main.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 11DF0D3F2977FD9A00D1F0F7 /* main.cpp */; }; -/* End PBXBuildFile section */ - -/* Begin PBXCopyFilesBuildPhase section */ - 11DF0D3A2977FD9A00D1F0F7 /* CopyFiles */ = { - isa = PBXCopyFilesBuildPhase; - buildActionMask = 2147483647; - dstPath = /usr/share/man/man1/; - dstSubfolderSpec = 0; - files = ( - ); - runOnlyForDeploymentPostprocessing = 1; - }; -/* End PBXCopyFilesBuildPhase section */ - -/* Begin PBXFileReference section */ - 11DF0D3C2977FD9A00D1F0F7 /* vulkan-playground */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = "vulkan-playground"; sourceTree = BUILT_PRODUCTS_DIR; }; - 11DF0D3F2977FD9A00D1F0F7 /* main.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = main.cpp; sourceTree = ""; }; -/* End PBXFileReference section */ - -/* Begin PBXFrameworksBuildPhase section */ - 11DF0D392977FD9A00D1F0F7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 11DF0D332977FD9A00D1F0F7 = { - isa = PBXGroup; - children = ( - 11DF0D3E2977FD9A00D1F0F7 /* vulkan-playground */, - 11DF0D3D2977FD9A00D1F0F7 /* Products */, - ); - sourceTree = ""; - }; - 11DF0D3D2977FD9A00D1F0F7 /* Products */ = { - isa = PBXGroup; - children = ( - 11DF0D3C2977FD9A00D1F0F7 /* vulkan-playground */, - ); - name = Products; - sourceTree = ""; - }; - 11DF0D3E2977FD9A00D1F0F7 /* vulkan-playground */ = { - isa = PBXGroup; - children = ( - 11DF0D3F2977FD9A00D1F0F7 /* main.cpp */, - ); - path = "vulkan-playground"; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 11DF0D3B2977FD9A00D1F0F7 /* vulkan-playground */ = { - isa = PBXNativeTarget; - buildConfigurationList = 11DF0D432977FD9A00D1F0F7 /* Build configuration list for PBXNativeTarget "vulkan-playground" */; - buildPhases = ( - 11DF0D382977FD9A00D1F0F7 /* Sources */, - 11DF0D392977FD9A00D1F0F7 /* Frameworks */, - 11DF0D3A2977FD9A00D1F0F7 /* CopyFiles */, - ); - buildRules = ( - ); - dependencies = ( - ); - name = "vulkan-playground"; - productName = "vulkan-playground"; - productReference = 11DF0D3C2977FD9A00D1F0F7 /* vulkan-playground */; - productType = "com.apple.product-type.tool"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - 11DF0D342977FD9A00D1F0F7 /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastUpgradeCheck = 1410; - TargetAttributes = { - 11DF0D3B2977FD9A00D1F0F7 = { - CreatedOnToolsVersion = 14.1; - }; - }; - }; - buildConfigurationList = 11DF0D372977FD9A00D1F0F7 /* Build configuration list for PBXProject "vulkan-playground" */; - compatibilityVersion = "Xcode 14.0"; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = 11DF0D332977FD9A00D1F0F7; - productRefGroup = 11DF0D3D2977FD9A00D1F0F7 /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - 11DF0D3B2977FD9A00D1F0F7 /* vulkan-playground */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXSourcesBuildPhase section */ - 11DF0D382977FD9A00D1F0F7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 11DF0D402977FD9A00D1F0F7 /* main.cpp in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin XCBuildConfiguration section */ - 11DF0D412977FD9A00D1F0F7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = dwarf; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_DYNAMIC_NO_PIC = NO; - GCC_NO_COMMON_BLOCKS = YES; - GCC_OPTIMIZATION_LEVEL = 0; - GCC_PREPROCESSOR_DEFINITIONS = ( - "DEBUG=1", - "$(inherited)", - ); - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = macosx; - }; - name = Debug; - }; - 11DF0D422977FD9A00D1F0F7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - CLANG_ENABLE_MODULES = YES; - CLANG_ENABLE_OBJC_ARC = YES; - CLANG_ENABLE_OBJC_WEAK = YES; - CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; - CLANG_WARN_BOOL_CONVERSION = YES; - CLANG_WARN_COMMA = YES; - CLANG_WARN_CONSTANT_CONVERSION = YES; - CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; - CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; - CLANG_WARN_DOCUMENTATION_COMMENTS = YES; - CLANG_WARN_EMPTY_BODY = YES; - CLANG_WARN_ENUM_CONVERSION = YES; - CLANG_WARN_INFINITE_RECURSION = YES; - CLANG_WARN_INT_CONVERSION = YES; - CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; - CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; - CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; - CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; - CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; - CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; - CLANG_WARN_STRICT_PROTOTYPES = YES; - CLANG_WARN_SUSPICIOUS_MOVE = YES; - CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; - CLANG_WARN_UNREACHABLE_CODE = YES; - CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; - COPY_PHASE_STRIP = NO; - DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - GCC_C_LANGUAGE_STANDARD = gnu11; - GCC_NO_COMMON_BLOCKS = YES; - GCC_WARN_64_TO_32_BIT_CONVERSION = YES; - GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; - GCC_WARN_UNDECLARED_SELECTOR = YES; - GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; - GCC_WARN_UNUSED_FUNCTION = YES; - GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 13.0; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = macosx; - }; - name = Release; - }; - 11DF0D442977FD9A00D1F0F7 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Debug; - }; - 11DF0D452977FD9A00D1F0F7 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - CODE_SIGN_STYLE = Automatic; - PRODUCT_NAME = "$(TARGET_NAME)"; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - 11DF0D372977FD9A00D1F0F7 /* Build configuration list for PBXProject "vulkan-playground" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 11DF0D412977FD9A00D1F0F7 /* Debug */, - 11DF0D422977FD9A00D1F0F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 11DF0D432977FD9A00D1F0F7 /* Build configuration list for PBXNativeTarget "vulkan-playground" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 11DF0D442977FD9A00D1F0F7 /* Debug */, - 11DF0D452977FD9A00D1F0F7 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - }; - rootObject = 11DF0D342977FD9A00D1F0F7 /* Project object */; -} diff --git a/vulkan-playground.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/vulkan-playground.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/vulkan-playground.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/vulkan-playground.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/vulkan-playground.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist deleted file mode 100644 index 18d9810..0000000 --- a/vulkan-playground.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist +++ /dev/null @@ -1,8 +0,0 @@ - - - - - IDEDidComputeMac32BitWarning - - - diff --git a/vulkan-playground.xcodeproj/xcuserdata/mahdi.xcuserdatad/xcschemes/xcschememanagement.plist b/vulkan-playground.xcodeproj/xcuserdata/mahdi.xcuserdatad/xcschemes/xcschememanagement.plist deleted file mode 100644 index db87b62..0000000 --- a/vulkan-playground.xcodeproj/xcuserdata/mahdi.xcuserdatad/xcschemes/xcschememanagement.plist +++ /dev/null @@ -1,14 +0,0 @@ - - - - - SchemeUserState - - vulkan-playground.xcscheme_^#shared#^_ - - orderHint - 0 - - - - diff --git a/vulkan-playground/main.cpp b/vulkan-playground/main.cpp deleted file mode 100644 index b605f2e..0000000 --- a/vulkan-playground/main.cpp +++ /dev/null @@ -1,14 +0,0 @@ -// -// main.cpp -// vulkan-playground -// -// Created by Mahdi Dibaiee on 18/01/2023. -// - -#include - -int main(int argc, const char * argv[]) { - // insert code here... - std::cout << "Hello, World!\n"; - return 0; -}