예제 #1
0
파일: context.py 프로젝트: Echelon9/vulk
    def _create_instance(self, window, configuration):
        '''Create Vulkan instance

        *Parameters:*

        - `window`: The window for Vulkan
        - `configuration`: Configuration from Application
        '''

        extensions = VulkContext._get_instance_extensions(
            window, configuration)
        layers = VulkContext._get_layers(configuration)

        app_info = vk.VkApplicationInfo(
            sType=vk.VK_STRUCTURE_TYPE_APPLICATION_INFO,
            pApplicationName=configuration.name,
            applicationVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            pEngineName=ENGINE_NAME,
            engineVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            apiVersion=vk.VK_API_VERSION_1_0)

        instance_create_info = vk.VkInstanceCreateInfo(
            sType=vk.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
            flags=0,
            pApplicationInfo=app_info,
            enabledExtensionCount=len(extensions),
            ppEnabledExtensionNames=extensions,
            enabledLayerCount=len(layers),
            ppEnabledLayerNames=layers)

        self.instance = vk.vkCreateInstance(pCreateInfo=instance_create_info)
예제 #2
0
    def init(self, name, version, init_debugger, instance_extensions):

        app_info = vulkan.VkApplicationInfo(
            pApplicationName=name,
            applicationVersion=vulkan.VK_MAKE_VERSION(version[0], version[1],
                                                      version[2]),
            apiVersion=vulkan.VK_API_VERSION_1_0)

        extensions = []
        self.layers = []
        init_debugger_info = None

        if init_debugger:

            extensions.append(vulkan.VK_EXT_DEBUG_UTILS_EXTENSION_NAME)
            self.layers.extend(init_debugger.LAYERS)
            init_debugger_info = init_debugger.info

        instance_info = vulkan.VkInstanceCreateInfo(
            pApplicationInfo=app_info,
            ppEnabledExtensionNames=instance_extensions + extensions,
            ppEnabledLayerNames=self.layers,
            pNext=init_debugger_info)

        self.vk_instance = vulkan.vkCreateInstance(instance_info, None)
예제 #3
0
파일: vulk.py 프로젝트: minuJeong/gl_kata
    def init(self):
        application_info = vulkan.VkApplicationInfo(
            sType=vulkan.VK_STRUCTURE_TYPE_APPLICATION_INFO,
            pApplicationName="Triangle",
        )
        instance_create_info = vulkan.VkInstanceCreateInfo(
            sType=vulkan.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
            pNext=None,
            flags=0,
            pApplicationInfo=application_info,
            ppEnabledExtensionNames=glfw.get_required_instance_extensions(),
        )

        self.instance = vulkan.vkCreateInstance(instance_create_info, None)
        if not self.instance:
            raise Exception("can't create vulkan instance")

        self.device = None
        for device in vulkan.vkEnumeratePhysicalDevices(self.instance):
            if device:
                self.device = device
                break

        if not self.device:
            raise Exception("no suitable device is found")

        for x in dir(self.instance):
            print(x)
예제 #4
0
    def __create_instance(self):
        app_info = vk.VkApplicationInfo(
            pApplicationName='Python VK',
            applicationVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            pEngineName='pyvulkan',
            engineVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            apiVersion=vk.VK_API_VERSION)

        extensions = [
            e.extensionName
            for e in vk.vkEnumerateInstanceExtensionProperties(None)
        ]

        instance_info = vk.VkInstanceCreateInfo(
            pApplicationInfo=app_info,
            enabledLayerCount=0,
            enabledExtensionCount=len(extensions),
            ppEnabledExtensionNames=extensions)

        self.__instance = vk.vkCreateInstance(instance_info, None)
예제 #5
0
def init_instance():
    ''' Most things set to default values courtesy of the vulkan wrapper to the API '''

    application_info = vk.VkApplicationInfo(
        sType=vk.VK_STRUCTURE_TYPE_APPLICATION_INFO)

    instance_create_info = vk.VkInstanceCreateInfo(
        sType=vk.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
        pApplicationInfo=application_info,
        enabledLayerCount=0,
        enabledExtensionCount=0)

    #allocation = vk.vkAllocateMemory()
    instance = vk.vkCreateInstance(instance_create_info, pAllocator=None)

    if vk.VK_SUCCESS == 0:
        print("debug: instance creation success")
    else:
        print("Failed to create instance. Error: {}".format(vk.VK_SUCCESS))

    return instance
예제 #6
0
    def _create_instance(self):
        """Create Vulkan instance"""
        extensions = self._get_instance_extensions()
        layers = self._get_layers()

        app_info = vk.VkApplicationInfo(
            sType=vk.VK_STRUCTURE_TYPE_APPLICATION_INFO,
            pApplicationName="Vulk-app",
            applicationVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            pEngineName=ENGINE_NAME,
            engineVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            apiVersion=vk.VK_API_VERSION_1_0)

        instance_create_info = vk.VkInstanceCreateInfo(
            sType=vk.VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO,
            flags=0,
            pApplicationInfo=app_info,
            enabledExtensionCount=len(extensions),
            ppEnabledExtensionNames=extensions,
            enabledLayerCount=len(layers),
            ppEnabledLayerNames=layers)

        self.instance = vk.vkCreateInstance(instance_create_info, None)
예제 #7
0
    def _create_instance(self, app_name: str):
        """Create Vulkan instance."""
        app_info = vk.VkApplicationInfo(
            pApplicationName=app_name,
            applicationVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            pEngineName='No Engine',
            engineVersion=vk.VK_MAKE_VERSION(1, 0, 0),
            apiVersion=vk.VK_API_VERSION_1_0,
        )

        if self.debug:
            # TODO: Check whether validation layers are supported
            layers = ['VK_LAYER_KHRONOS_validation']
        else:
            layers = []
        create_info = vk.VkInstanceCreateInfo(
            pApplicationInfo=app_info,
            ppEnabledExtensionNames=[
                VK_KHR_EXTERNAL_MEMORY_CAPABILITIES,
                VK_KHR_EXTERNAL_SEMAPHORE_CAPABILITIES
            ],
            ppEnabledLayerNames=layers)
        self.vk_instance = vk.vkCreateInstance(create_info, None)
        print('vk vk_instance created')