Blender V4.5
GHOST_ContextVK.cc File Reference
#include "GHOST_ContextVK.hh"
#include "vulkan/vk_ghost_api.hh"
#include "CLG_log.h"
#include <vector>
#include <cassert>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <mutex>
#include <optional>
#include <sstream>
#include <sys/stat.h>

Go to the source code of this file.

Classes

class  GHOST_DeviceVK

Macros

#define FORMAT_ERROR(X)
#define __STR(A)
#define VK_CHECK(__expression)

Functions

static const char * vulkan_error_as_string (VkResult result)
static bool contains_extension (const vector< VkExtensionProperties > &extension_list, const char *extension_name)
static vector< VkExtensionProperties > getExtensionsAvailable ()
static bool checkExtensionSupport (const vector< VkExtensionProperties > &extensions_available, const char *extension_name)
static void requireExtension (const vector< VkExtensionProperties > &extensions_available, vector< const char * > &extensions_enabled, const char *extension_name)
static GHOST_TSuccess selectPresentMode (VkPhysicalDevice device, VkSurfaceKHR surface, VkPresentModeKHR *r_presentMode)
static bool selectSurfaceFormat (const VkPhysicalDevice physical_device, const VkSurfaceKHR surface, VkSurfaceFormatKHR &r_surfaceFormat)

Variables

static CLG_LogRef LOG = {"ghost.vulkan"}

Vulkan Device

static std::optional< GHOST_DeviceVKvulkan_device
static GHOST_TSuccess ensure_vulkan_device (VkInstance vk_instance, VkSurfaceKHR vk_surface, const GHOST_GPUDevice &preferred_device, const vector< const char * > &required_extensions)

Macro Definition Documentation

◆ __STR

#define __STR ( A)
Value:
"" #A
#define A

Definition at line 94 of file GHOST_ContextVK.cc.

◆ FORMAT_ERROR

#define FORMAT_ERROR ( X)
Value:
case X: { \
return "" #X; \
}
#define X

Referenced by vulkan_error_as_string().

◆ VK_CHECK

#define VK_CHECK ( __expression)
Value:
do { \
VkResult r = (__expression); \
if (r != VK_SUCCESS) { \
CLOG_ERROR( \
&LOG, "%s resulted in code %s.", __STR(__expression), vulkan_error_as_string(r)); \
return GHOST_kFailure; \
} \
} while (0)
#define __STR(A)
static const char * vulkan_error_as_string(VkResult result)
@ GHOST_kFailure
Definition GHOST_Types.h:80
#define LOG(severity)
Definition log.h:32

Definition at line 95 of file GHOST_ContextVK.cc.

Referenced by GHOST_ContextVK::initializeDrawingContext().

Function Documentation

◆ checkExtensionSupport()

bool checkExtensionSupport ( const vector< VkExtensionProperties > & extensions_available,
const char * extension_name )
static

Definition at line 807 of file GHOST_ContextVK.cc.

References checkExtensionSupport().

Referenced by checkExtensionSupport(), and requireExtension().

◆ contains_extension()

bool contains_extension ( const vector< VkExtensionProperties > & extension_list,
const char * extension_name )
static

◆ ensure_vulkan_device()

◆ getExtensionsAvailable()

vector< VkExtensionProperties > getExtensionsAvailable ( )
static

◆ requireExtension()

void requireExtension ( const vector< VkExtensionProperties > & extensions_available,
vector< const char * > & extensions_enabled,
const char * extension_name )
static

◆ selectPresentMode()

GHOST_TSuccess selectPresentMode ( VkPhysicalDevice device,
VkSurfaceKHR surface,
VkPresentModeKHR * r_presentMode )
static

Definition at line 830 of file GHOST_ContextVK.cc.

References GHOST_kSuccess, and selectPresentMode().

Referenced by selectPresentMode().

◆ selectSurfaceFormat()

bool selectSurfaceFormat ( const VkPhysicalDevice physical_device,
const VkSurfaceKHR surface,
VkSurfaceFormatKHR & r_surfaceFormat )
static

Select the surface format that we will use.

We will select any 8bit UNORM surface.

Definition at line 862 of file GHOST_ContextVK.cc.

References selectSurfaceFormat().

Referenced by selectSurfaceFormat().

◆ vulkan_error_as_string()

const char * vulkan_error_as_string ( VkResult result)
static

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"ghost.vulkan"}
static

Definition at line 42 of file GHOST_ContextVK.cc.

Referenced by GHOST_DeviceVK::ensure_device().

◆ vulkan_device

std::optional<GHOST_DeviceVK> vulkan_device
static

A shared device between multiple contexts.

The logical device needs to be shared as multiple contexts can be created and the logical vulkan device they share should be the same otherwise memory operations might be done on the incorrect device.

Definition at line 453 of file GHOST_ContextVK.cc.

Referenced by ensure_vulkan_device(), GHOST_ContextVK::getVulkanHandles(), GHOST_ContextVK::initializeDrawingContext(), GHOST_ContextVK::swapBuffers(), and GHOST_ContextVK::~GHOST_ContextVK().