Blender V4.3
blender::gpu Namespace Reference

Namespaces

namespace  debug
 
namespace  GLVertArray
 
namespace  render_graph
 
namespace  shader
 
namespace  shader_builder
 
namespace  tests
 

Classes

class  B10F_G11G_R11F
 
class  BindSpaceImages
 
class  BindSpaceStorageBuffers
 
class  BindSpaceTextures
 
class  BindSpaceUniformBuffers
 
struct  BufferBindingCached
 
struct  CompareMTLBuffer
 
struct  ComponentValue
 
class  Context
 
struct  DebugScope
 
class  DepthComponent24
 
class  DrawList
 
class  DummyBackend
 
class  DummyBatch
 
class  DummyContext
 
class  DummyFrameBuffer
 
class  DummyVertexBuffer
 
class  Fence
 
class  FloatingPointFormat
 
class  FrameBuffer
 
class  GLBackend
 
class  GLBatch
 
class  GLCompute
 
class  GLContext
 
class  GLDrawList
 
class  GLFence
 
class  GLFrameBuffer
 
class  GLImmediate
 
class  GLIndexBuf
 
class  GLLogParser
 
class  GLPixelBuffer
 
class  GLQueryPool
 
class  GLShader
 
class  GLShaderCompiler
 
class  GLShaderInterface
 
class  GLSharedOrphanLists
 
struct  GLSource
 
class  GLSources
 
struct  GLSourcesBaked
 
class  GLStateManager
 
class  GLStorageBuf
 
class  GLTexture
 
class  GLUniformBuf
 
class  GLVaoCache
 
class  GLVertBuf
 
class  GPUBackend
 
struct  GPUCapabilities
 
struct  GPULogItem
 
class  GPULogParser
 
class  GPUPlatformGlobal
 
union  GPUState
 
union  GPUStateMutable
 
class  GPUTest
 
class  HALF4
 
class  Immediate
 
class  IndexBuf
 
struct  LogCursor
 
struct  MSLBufferBlock
 
struct  MSLConstant
 
struct  MSLFragmentOutputAttribute
 
class  MSLGeneratorInterface
 
struct  MSLSharedMemoryBlock
 
struct  MSLTextureResource
 
struct  MSLUniform
 
struct  MSLVertexInputAttribute
 
struct  MSLVertexOutputAttribute
 
struct  MTLAttachment
 
class  MTLBackend
 
class  MTLBatch
 
struct  MTLBoundShaderState
 
class  MTLBuffer
 
struct  MTLBufferArgumentData
 
struct  MTLBufferHandle
 
class  MTLBufferPool
 
struct  MTLBufferRange
 
struct  MTLCapabilities
 
class  MTLCircularBuffer
 
class  MTLCommandBufferManager
 
struct  MTLComputePipelineStateCommon
 
struct  MTLComputePipelineStateDescriptor
 
struct  MTLComputePipelineStateInstance
 
class  MTLComputeState
 
class  MTLContext
 
class  MTLContextComputeUtils
 
struct  MTLContextDepthStencilState
 
struct  MTLContextGlobalShaderPipelineState
 
struct  MTLContextTextureUtils
 
class  MTLDrawList
 
class  MTLFence
 
class  MTLFrameBuffer
 
class  MTLImmediate
 
class  MTLIndexBuf
 
class  MTLLogParser
 
class  MTLParallelShaderCompiler
 
class  MTLPixelBuffer
 
class  MTLQueryPool
 
class  MTLRenderPassState
 
struct  MTLRenderPipelineStateDescriptor
 
struct  MTLRenderPipelineStateInstance
 
class  MTLSafeFreeList
 
struct  MTLSamplerArray
 
struct  MTLSamplerBinding
 
struct  MTLSamplerState
 
class  MTLScratchBufferManager
 
class  MTLShader
 
struct  MTLShaderBufferBlock
 
struct  MTLShaderBuilder
 
class  MTLShaderCompiler
 
struct  MTLShaderConstant
 
struct  MTLShaderInputAttribute
 
class  MTLShaderInterface
 
struct  MTLShaderSampler
 
struct  MTLShaderTexture
 
struct  MTLShaderUniform
 
struct  MTLSSBOAttribute
 
class  MTLStateManager
 
class  MTLStorageBuf
 
struct  MTLStorageBufferBinding
 
class  MTLTexture
 
struct  MTLTextureBinding
 
class  MTLUniformBuf
 
struct  MTLUniformBufferBinding
 
class  MTLVertBuf
 
struct  MTLVertexAttributeDescriptorPSO
 
struct  MTLVertexBufferLayoutDescriptorPSO
 
struct  MTLVertexDescriptor
 
class  PixelBuffer
 
struct  PixelValue
 
class  QueryPool
 
struct  SamplerStateBindingCached
 
class  Shader
 
class  ShaderCompiler
 
class  ShaderCompilerGeneric
 
struct  ShaderInput
 
class  ShaderInterface
 
struct  SignedNormalized
 
struct  SpecializationStateDescriptor
 
struct  SPIRVSidecar
 
class  StateManager
 
struct  Std140
 
struct  Std430
 
class  StorageBuf
 
class  Texture
 
struct  TextureBindingCached
 
class  UniformBuf
 
struct  UnsignedNormalized
 
class  VertBuf
 
struct  VertexBufferID
 
struct  VertexFormatConverter
 
class  VKBackend
 
class  VKBatch
 
class  VKBuffer
 
struct  VKBufferWithOffset
 
struct  VKComputeInfo
 
class  VKContext
 
class  VKDescriptorPools
 
class  VKDescriptorSet
 
struct  VKDescriptorSetLayoutInfo
 
class  VKDescriptorSetLayouts
 
class  VKDescriptorSetTracker
 
class  VKDevice
 
class  VKDiscardPool
 
class  VKDrawList
 
class  VKFence
 
class  VKFrameBuffer
 
struct  VKGraphicsInfo
 
class  VKImageView
 
struct  VKImageViewInfo
 
class  VKImmediate
 
class  VKIndexBuffer
 
class  VKLogParser
 
class  VKPipelinePool
 
class  VKPixelBuffer
 
class  VKPushConstants
 
class  VKQueryPool
 
struct  VKResourceBinding
 
class  VKResourcePool
 
class  VKResourceTracker
 
class  VKSampler
 
class  VKSamplers
 
class  VKShader
 
class  VKShaderCompiler
 
class  VKShaderInterface
 
class  VKShaderModule
 
class  VKStagingBuffer
 
class  VKStateManager
 
class  VKStorageBuffer
 
struct  VKSubmissionID
 
class  VKSubmissionTracker
 
class  VKTexture
 
class  VKThreadData
 
class  VKUniformBuffer
 
class  VKVertexAttributeObject
 
class  VKVertexBuffer
 
struct  VKWorkarounds
 

Typedefs

using DebugStack = Vector<StringRef>
 
using MSLFragmentTileInputAttribute = MSLFragmentOutputAttribute
 
using AttributeMask = uint16_t
 
Memory Management.
using MTLTemporaryBuffer = MTLBufferRange
 

Enumerations

enum  GPUIndexBufType { GPU_INDEX_U16 , GPU_INDEX_U32 }
 
enum  GPUQueryType { GPU_QUERY_OCCLUSION = 0 }
 
enum class  Severity { Unknown , Warning , Error , Note }
 
enum  eGPUTextureFormatFlag {
  GPU_FORMAT_DEPTH = (1 << 0) , GPU_FORMAT_STENCIL = (1 << 1) , GPU_FORMAT_INTEGER = (1 << 2) , GPU_FORMAT_NORMALIZED_INTEGER = (1 << 3) ,
  GPU_FORMAT_FLOAT = (1 << 4) , GPU_FORMAT_COMPRESSED = (1 << 5) , GPU_FORMAT_SRGB = (1 << 6) , GPU_FORMAT_SIGNED = (1 << 7) ,
  GPU_FORMAT_DEPTH_STENCIL = (GPU_FORMAT_DEPTH | GPU_FORMAT_STENCIL)
}
 
enum  eGPUTextureType {
  GPU_TEXTURE_1D = (1 << 0) , GPU_TEXTURE_2D = (1 << 1) , GPU_TEXTURE_3D = (1 << 2) , GPU_TEXTURE_CUBE = (1 << 3) ,
  GPU_TEXTURE_ARRAY = (1 << 4) , GPU_TEXTURE_BUFFER = (1 << 5) , GPU_TEXTURE_1D_ARRAY = (GPU_TEXTURE_1D | GPU_TEXTURE_ARRAY) , GPU_TEXTURE_2D_ARRAY = (GPU_TEXTURE_2D | GPU_TEXTURE_ARRAY) ,
  GPU_TEXTURE_CUBE_ARRAY = (GPU_TEXTURE_CUBE | GPU_TEXTURE_ARRAY)
}
 
enum  eGPUSamplerFormat {
  GPU_SAMPLER_TYPE_FLOAT = 0 , GPU_SAMPLER_TYPE_INT = 1 , GPU_SAMPLER_TYPE_UINT = 2 , GPU_SAMPLER_TYPE_DEPTH = 3 ,
  GPU_SAMPLER_TYPE_MAX = 4
}
 
enum  AppleGPUType { APPLE_GPU_UNKNOWN = 0 , APPLE_GPU_M1 = 1 , APPLE_GPU_M2 = 2 , APPLE_GPU_M3 = 3 }
 
enum  MTLPipelineStateDirtyFlag {
  MTL_PIPELINE_STATE_NULL_FLAG = 0 , MTL_PIPELINE_STATE_VIEWPORT_FLAG = (1 << 0) , MTL_PIPELINE_STATE_SCISSOR_FLAG = (1 << 1) , MTL_PIPELINE_STATE_DEPTHSTENCIL_FLAG = (1 << 2) ,
  MTL_PIPELINE_STATE_PSO_FLAG = (1 << 3) , MTL_PIPELINE_STATE_FRONT_FACING_FLAG = (1 << 4) , MTL_PIPELINE_STATE_CULLMODE_FLAG = (1 << 5) , MTL_PIPELINE_STATE_ALL_FLAG
}
 
enum  MSLTextureSamplerAccess {
  TEXTURE_ACCESS_NONE = 0 , TEXTURE_ACCESS_SAMPLE , TEXTURE_ACCESS_READ , TEXTURE_ACCESS_WRITE ,
  TEXTURE_ACCESS_READWRITE
}
 
enum class  ShaderStage : uint8_t { VERTEX = 1 << 0 , FRAGMENT = 1 << 1 , COMPUTE = 2 << 1 , ANY = (ShaderStage::VERTEX | ShaderStage::FRAGMENT | ShaderStage::COMPUTE) }
 
enum class  eImageViewUsage { ShaderBinding , Attachment }
 
enum class  VKImageViewArrayed { DONT_CARE , NOT_ARRAYED , ARRAYED }
 

Functions

size_t to_bytesize (GPUIndexBufType type)
 
int indices_per_primitive (GPUPrimType prim_type)
 
static GPUContextwrap (Context *ctx)
 
static Contextunwrap (GPUContext *ctx)
 
static const Contextunwrap (const GPUContext *ctx)
 
static GPUDrawList * wrap (DrawList *vert)
 
static DrawListunwrap (GPUDrawList *vert)
 
static const DrawListunwrap (const GPUDrawList *vert)
 
static GPUFrameBuffer * wrap (FrameBuffer *vert)
 
static FrameBufferunwrap (GPUFrameBuffer *vert)
 
static const FrameBufferunwrap (const GPUFrameBuffer *vert)
 
static char * create_key (eGPUSupportLevel support_level, const char *vendor, const char *renderer, const char *version)
 
static char * create_gpu_name (const char *vendor, const char *renderer, const char *version)
 
static void sort_input_list (MutableSpan< ShaderInput > dst)
 
static GPUShaderwrap (Shader *vert)
 
static Shaderunwrap (GPUShader *vert)
 
static const Shaderunwrap (const GPUShader *vert)
 
 BLI_STATIC_ASSERT (sizeof(GPUState)==sizeof(uint64_t), "GPUState is too big.")
 
bool operator== (const GPUState &a, const GPUState &b)
 
bool operator!= (const GPUState &a, const GPUState &b)
 
GPUState operator^ (const GPUState &a, const GPUState &b)
 
GPUState operator~ (const GPUState &a)
 
 BLI_STATIC_ASSERT (sizeof(GPUStateMutable)==sizeof(GPUStateMutable::data), "GPUStateMutable is too big.")
 
bool operator== (const GPUStateMutable &a, const GPUStateMutable &b)
 
bool operator!= (const GPUStateMutable &a, const GPUStateMutable &b)
 
GPUStateMutable operator^ (const GPUStateMutable &a, const GPUStateMutable &b)
 
GPUStateMutable operator~ (const GPUStateMutable &a)
 
static GPUFencewrap (Fence *pixbuf)
 
static Fenceunwrap (GPUFence *pixbuf)
 
static const Fenceunwrap (const GPUFence *pixbuf)
 
static GPUStorageBuf * wrap (StorageBuf *storage_buf)
 
static StorageBufunwrap (GPUStorageBuf *storage_buf)
 
static const StorageBufunwrap (const GPUStorageBuf *storage_buf)
 
static GPUTexture * wrap (Texture *vert)
 
static Textureunwrap (GPUTexture *vert)
 
static const Textureunwrap (const GPUTexture *vert)
 
static GPUPixelBuffer * wrap (PixelBuffer *pixbuf)
 
static PixelBufferunwrap (GPUPixelBuffer *pixbuf)
 
static const PixelBufferunwrap (const GPUPixelBuffer *pixbuf)
 
size_t to_bytesize (eGPUTextureFormat format)
 
size_t to_block_size (eGPUTextureFormat data_type)
 
eGPUTextureFormatFlag to_format_flag (eGPUTextureFormat format)
 
int to_component_len (eGPUTextureFormat format)
 
size_t to_bytesize (eGPUDataFormat data_format)
 
size_t to_bytesize (eGPUTextureFormat tex_format, eGPUDataFormat data_format)
 
constexpr bool validate_data_format (eGPUTextureFormat tex_format, eGPUDataFormat data_format)
 
eGPUDataFormat to_data_format (eGPUTextureFormat tex_format)
 
eGPUFrameBufferBits to_framebuffer_bits (eGPUTextureFormat tex_format)
 
static eGPUTextureFormat to_texture_format (const GPUVertFormat *format)
 
static GPUUniformBuf * wrap (UniformBuf *vert)
 
static UniformBufunwrap (GPUUniformBuf *vert)
 
static const UniformBufunwrap (const GPUUniformBuf *vert)
 
 ENUM_OPERATORS (MTLPipelineStateDirtyFlag, MTL_PIPELINE_STATE_CULLMODE_FLAG)
 
static MTLPrimitiveTopologyClass mtl_prim_type_to_topology_class (MTLPrimitiveType prim_type)
 
static MTLPrimitiveType gpu_prim_type_to_metal (GPUPrimType prim_type)
 
static bool mtl_needs_topology_emulation (GPUPrimType prim_type)
 
static bool mtl_vertex_count_fits_primitive_type (uint32_t vertex_count, MTLPrimitiveType prim_type)
 
static MTLVisibilityResultMode to_mtl_type (GPUQueryType type)
 
bool mtl_vertex_format_resize (MTLVertexFormat mtl_format, uint32_t components, MTLVertexFormat *r_convertedFormat)
 
bool mtl_convert_vertex_format (MTLVertexFormat shader_attrib_format, GPUVertCompType component_type, uint32_t component_length, GPUVertFetchMode fetch_mode, MTLVertexFormat *r_convertedFormat)
 
uint comp_count_from_vert_format (MTLVertexFormat vert_format)
 
GPUVertFetchMode fetchmode_from_vert_format (MTLVertexFormat vert_format)
 
GPUVertCompType comp_type_from_vert_format (MTLVertexFormat vert_format)
 
const char * to_string (ShaderStage stage)
 
MTLParallelShaderCompilerget_shared_parallel_shader_compiler ()
 
void release_shared_parallel_shader_compiler ()
 
const char * get_stage_class_name (ShaderStage stage)
 
const char * get_shader_stage_instance_name (ShaderStage stage)
 
bool is_builtin_type (std::string type)
 
bool is_matrix_type (const std::string &type)
 
bool is_matrix_type (const shader::Type &type)
 
int get_matrix_location_count (const std::string &type)
 
int get_matrix_location_count (const shader::Type &type)
 
std::string get_matrix_subtype (const std::string &type)
 
shader::Type get_matrix_subtype (const shader::Type &type)
 
std::string get_attribute_conversion_function (bool *uses_conversion, const shader::Type &type)
 
const char * to_string_msl (const shader::Interpolation &interp)
 
char * next_symbol_in_range (char *begin, char *end, char symbol)
 
char * next_word_in_range (char *begin, char *end)
 
 ENUM_OPERATORS (ShaderStage, ShaderStage::ANY)
 
uint get_shader_stage_index (ShaderStage stage)
 
MTLVertexFormat mtl_datatype_to_vertex_type (eMTLDataType type)
 
std::string tex_data_format_to_msl_type_str (eGPUDataFormat type)
 
std::string tex_data_format_to_msl_texture_template_type (eGPUDataFormat type)
 
MTLTextureType to_metal_type (eGPUTextureType type)
 
bool mtl_format_is_writable (MTLPixelFormat format)
 
MTLPixelFormat mtl_format_get_writeable_view_format (MTLPixelFormat format)
 
MTLTextureUsage mtl_usage_from_gpu (eGPUTextureUsage usage)
 
eGPUTextureUsage gpu_usage_from_mtl (MTLTextureUsage mtl_usage)
 
 DEBUG_FUNC_OVERRIDE (glClear, GLbitfield, mask)
 
 DEBUG_FUNC_OVERRIDE (glDeleteTextures, GLsizei, n, const GLuint *, textures)
 
 DEBUG_FUNC_OVERRIDE (glDrawArrays, GLenum, mode, GLint, first, GLsizei, count)
 
 DEBUG_FUNC_OVERRIDE (glFinish, void)
 
 DEBUG_FUNC_OVERRIDE (glFlush, void)
 
 DEBUG_FUNC_OVERRIDE (glGenTextures, GLsizei, n, GLuint *, textures)
 
 DEBUG_FUNC_OVERRIDE (glGetTexImage, GLenum, target, GLint, level, GLenum, format, GLenum, type, void *, pixels)
 
 DEBUG_FUNC_OVERRIDE (glReadBuffer, GLenum, mode)
 
 DEBUG_FUNC_OVERRIDE (glReadPixels, GLint, x, GLint, y, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, void *, pixels)
 
 DEBUG_FUNC_OVERRIDE (glTexImage1D, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLint, border, GLenum, format, GLenum, type, const void *, pixels)
 
 DEBUG_FUNC_OVERRIDE (glTexImage2D, GLenum, target, GLint, level, GLint, internalformat, GLsizei, width, GLsizei, height, GLint, border, GLenum, format, GLenum, type, const void *, pixels)
 
 DEBUG_FUNC_OVERRIDE (glTexParameteri, GLenum, target, GLenum, pname, GLint, param)
 
 DEBUG_FUNC_OVERRIDE (glTexParameteriv, GLenum, target, GLenum, pname, const GLint *, params)
 
 DEBUG_FUNC_OVERRIDE (glTexSubImage1D, GLenum, target, GLint, level, GLint, xoffset, GLsizei, width, GLenum, format, GLenum, type, const void *, pixels)
 
 DEBUG_FUNC_OVERRIDE (glTexSubImage2D, GLenum, target, GLint, level, GLint, xoffset, GLint, yoffset, GLsizei, width, GLsizei, height, GLenum, format, GLenum, type, const void *, pixels)
 
static GLenum to_gl (GPUIndexBufType type)
 
static GLenum to_gl (GPUPrimType prim_type)
 
static GLenum to_gl (GPUQueryType type)
 
static GLbitfield to_gl (eGPUBarrier barrier_bits)
 
GLenum to_gl_internal_format (eGPUTextureFormat format)
 
GLenum to_gl_target (eGPUTextureType type)
 
GLenum to_gl_proxy (eGPUTextureType type)
 
GLenum swizzle_to_gl (const char swizzle)
 
GLenum to_gl (eGPUDataFormat format)
 
GLenum to_gl_data_format (eGPUTextureFormat format)
 
GLenum channel_len_to_gl (int channel_len)
 
static GLenum to_gl (GPUUsageType type)
 
static GLenum to_gl (GPUVertCompType type)
 
template<typename Layout >
static void def_attr (const shader::Type type, const int array_size, const uint32_t expected_alignment, const uint32_t expected_reserve, uint32_t *r_offset)
 
 TEST (std140, fl)
 
 TEST (std140, _2fl)
 
 TEST (std140, _3fl)
 
 TEST (std140, _4fl)
 
 TEST (std140, fl2)
 
 TEST (std140, fl_fl2)
 
 TEST (std140, fl_vec2)
 
 TEST (std140, gpu_shader_2D_widget_base)
 
 TEST (std430, overlay_grid)
 
 TEST (std430, simple_lighting)
 
static Vector< StringRefNullmissing_capabilities_get (VkPhysicalDevice vk_physical_device)
 
static eGPUOSType determine_os_type ()
 
VKBatchunwrap (Batch *batch)
 
static VmaAllocationCreateFlags vma_allocation_flags (GPUUsageType usage)
 
static VkMemoryPropertyFlags vma_preferred_flags ()
 
static VkMemoryPropertyFlags vma_required_flags (const bool is_host_visible)
 
VkImageAspectFlags to_vk_image_aspect_flag_bits (const eGPUTextureFormat format)
 
VkImageAspectFlags to_vk_image_aspect_flag_bits (const eGPUFrameBufferBits buffers)
 
eGPUTextureFormat to_gpu_format (const VkFormat format)
 
VkFormat to_vk_format (const eGPUTextureFormat format)
 
static VkFormat to_vk_format_norm (const GPUVertCompType type, const uint32_t size)
 
static VkFormat to_vk_format_float (const GPUVertCompType type, const uint32_t size)
 
static VkFormat to_vk_format_int (const GPUVertCompType type, const uint32_t size)
 
VkFormat to_vk_format (const GPUVertCompType type, const uint32_t size, GPUVertFetchMode fetch_mode)
 
VkFormat to_vk_format (const shader::Type type)
 
VkQueryType to_vk_query_type (const GPUQueryType query_type)
 
VkImageType to_vk_image_type (const eGPUTextureType type)
 
VkImageViewType to_vk_image_view_type (const eGPUTextureType type, const eImageViewUsage view_type, VKImageViewArrayed arrayed)
 
VkComponentSwizzle to_vk_component_swizzle (const char swizzle)
 
template<typename T >
void copy_color (T dst[4], const T *src)
 
VkClearColorValue to_vk_clear_color_value (const eGPUDataFormat format, const void *data)
 
VkIndexType to_vk_index_type (const GPUIndexBufType index_type)
 
VkPrimitiveTopology to_vk_primitive_topology (const GPUPrimType prim_type)
 
VkCullModeFlags to_vk_cull_mode_flags (const eGPUFaceCullTest cull_test)
 
VkSamplerAddressMode to_vk_sampler_address_mode (const GPUSamplerExtendMode extend_mode)
 
static VkDescriptorType to_vk_descriptor_type_image (const shader::ImageType &image_type)
 
static VkDescriptorType to_vk_descriptor_type_sampler (const shader::ImageType &image_type)
 
VkDescriptorType to_vk_descriptor_type (const shader::ShaderCreateInfo::Resource &resource)
 
template<typename T >
VkObjectType to_vk_object_type (T)
 
BLI_INLINE bool operator== (const VKContext &a, const VKContext &b)
 
bool conversion_needed (const GPUVertFormat &vertex_format)
 
void convert_in_place (void *data, const GPUVertFormat &vertex_format, const uint vertex_len)
 
constexpr GPULoadStore default_load_store ()
 
static VKFrameBufferunwrap (FrameBuffer *framebuffer)
 
static VkFormat to_non_srgb_format (const VkFormat format)
 
static VkDeviceSize new_buffer_size (size_t sub_buffer_size)
 
static VKIndexBufferunwrap (IndexBuf *index_buffer)
 
template<typename LayoutT >
static uint32_t element_stride (const shader::Type type)
 
template<typename LayoutT >
static uint32_t array_stride (const shader::Type type)
 
template<typename LayoutT >
static void align (const shader::Type &type, const int32_t array_size, uint32_t *r_offset)
 
template<typename LayoutT >
static void reserve (const shader::Type type, int32_t array_size, uint32_t *r_offset)
 
template<typename LayoutT >
static void align_end_of_struct (uint32_t *r_offset)
 
static VKPixelBufferunwrap (PixelBuffer *pixel_buffer)
 
template<typename LayoutT >
static VKPushConstants::Layout::PushConstant init_constant (const shader::ShaderCreateInfo::PushConst &push_constant, const ShaderInput &shader_input, uint32_t *r_offset)
 
template<typename LayoutT >
uint32_t struct_size (Span< shader::ShaderCreateInfo::PushConst > push_constants)
 
template<typename LayoutT >
void init_struct (const shader::ShaderCreateInfo &info, const VKShaderInterface &interface, Vector< VKPushConstants::Layout::PushConstant > &r_struct, uint32_t *r_offset)
 
static std::string main_function_wrapper (std::string &pre_main, std::string &post_main)
 
static std::string combine_sources (Span< const char * > sources)
 
static Type to_component_type (const Type &type)
 
static StageInterfaceInfofind_interface_by_name (const Span< StageInterfaceInfo * > ifaces, const StringRefNull name)
 
static void declare_emit_vertex (std::stringstream &ss)
 
static VKShaderunwrap (Shader &shader)
 
static VKShaderunwrap (Shader *shader)
 
static int32_t shader_input_index (const ShaderInput *shader_inputs, const ShaderInput *shader_input)
 
BLI_INLINE VKStorageBufferunwrap (StorageBuf *storage_buffer)
 
static VkImageAspectFlags to_vk_image_aspect_single_bit (const VkImageAspectFlags format, bool stencil)
 
static VkImageUsageFlags to_vk_image_usage (const eGPUTextureUsage usage, const eGPUTextureFormatFlag format_flag)
 
static VkImageCreateFlags to_vk_image_create (const eGPUTextureType texture_type, const eGPUTextureFormatFlag format_flag, const eGPUTextureUsage usage)
 
BLI_INLINE VKTextureunwrap (Texture *tex)
 
BLI_INLINE Texturewrap (VKTexture *texture)
 
static std::string to_string_handle (uint64_t vk_handle)
 
std::string to_string (VkBuffer vk_handle)
 
std::string to_string (VkImage vk_handle)
 
std::string to_string (VkImageView vk_handle)
 
std::string to_string (VkRenderPass vk_handle)
 
std::string to_string (VkFramebuffer vk_handle)
 
std::string to_string (VkPipelineLayout vk_handle)
 
std::string to_string (VkPipeline vk_handle)
 
std::string to_string (VkDescriptorSet vk_handle)
 
const char * to_string (const VkAttachmentLoadOp vk_attachment_load_op)
 
const char * to_string (const VkAttachmentStoreOp vk_attachment_store_op)
 
const char * to_string (const VkFilter vk_filter)
 
const char * to_string (const VkImageLayout vk_image_layout)
 
const char * to_string (const VkIndexType vk_index_type)
 
const char * to_string (const VkObjectType vk_object_type)
 
const char * to_string (const VkPipelineBindPoint vk_pipeline_bind_point)
 
const char * to_string (const VkResolveModeFlagBits vk_resolve_mode_flag_bits)
 
const char * to_string (const VkSubpassContents vk_subpass_contents)
 
std::string to_string_vk_access_flags (const VkAccessFlags vk_access_flags)
 
std::string to_string_vk_dependency_flags (const VkDependencyFlags vk_dependency_flags)
 
std::string to_string_vk_image_aspect_flags (const VkImageAspectFlags vk_image_aspect_flags)
 
std::string to_string_vk_pipeline_stage_flags (const VkPipelineStageFlags vk_pipeline_stage_flags)
 
std::string to_string_vk_rendering_flags (const VkRenderingFlags vk_rendering_flags)
 
std::string to_string_vk_shader_stage_flags (const VkShaderStageFlags vk_shader_stage_flags)
 
std::string to_string (const VkBufferCopy &vk_buffer_copy, int indentation_level)
 
std::string to_string (const VkBufferImageCopy &vk_buffer_image_copy, int indentation_level)
 
std::string to_string (const VkBufferMemoryBarrier &vk_buffer_memory_barrier, int indentation_level)
 
std::string to_string (const VkClearAttachment &vk_clear_attachment, int indentation_level)
 
std::string to_string (const VkClearDepthStencilValue &vk_clear_depth_stencil_value, int indentation_level)
 
std::string to_string (const VkClearRect &vk_clear_rect, int indentation_level)
 
std::string to_string (const VkExtent2D &vk_extent2_d, int indentation_level)
 
std::string to_string (const VkExtent3D &vk_extent3_d, int indentation_level)
 
std::string to_string (const VkImageBlit &vk_image_blit, int indentation_level)
 
std::string to_string (const VkImageCopy &vk_image_copy, int indentation_level)
 
std::string to_string (const VkImageMemoryBarrier &vk_image_memory_barrier, int indentation_level)
 
std::string to_string (const VkImageSubresourceLayers &vk_image_subresource_layers, int indentation_level)
 
std::string to_string (const VkImageSubresourceRange &vk_image_subresource_range, int indentation_level)
 
std::string to_string (const VkMemoryBarrier &vk_memory_barrier, int indentation_level)
 
std::string to_string (const VkOffset2D &vk_offset2_d, int indentation_level)
 
std::string to_string (const VkOffset3D &vk_offset3_d, int indentation_level)
 
std::string to_string (const VkRect2D &vk_rect2_d, int indentation_level)
 
std::string to_string (const VkRenderPassBeginInfo &vk_render_pass_begin_info, int indentation_level)
 
std::string to_string (const VkRenderingAttachmentInfo &vk_rendering_attachment_info, int indentation_level)
 
std::string to_string (const VkRenderingInfo &vk_rendering_info, int indentation_level)
 
BLI_INLINE UniformBufwrap (VKUniformBuffer *uniform_buffer)
 
BLI_INLINE VKVertexBufferunwrap (VertBuf *vertex_buffer)
 
Shader Debug Printf
void printf_begin (Context *ctx)
 
void printf_end (Context *ctx)
 
Capabilities
static const char * mtl_extensions_get_null (int)
 
bool supports_barycentric_whitelist (id< MTLDevice > device)
 
bool is_apple_sillicon (id< MTLDevice > device)
 
static int get_num_performance_cpu_cores (id< MTLDevice > device)
 
static int get_num_efficiency_cpu_cores (id< MTLDevice > device)
 
static bool detect_mip_render_workaround ()
 
static const char * gl_extension_get (int i)
 
static void detect_workarounds ()
 
Swap-chain management and Metal presentation.
void present (MTLRenderPassDescriptor *blit_descriptor, id< MTLRenderPipelineState > blit_pso, id< MTLTexture > swapchain_texture, id< CAMetalDrawable > drawable)
 
Texture State Management
static MTLSamplerAddressMode to_mtl_type (GPUSamplerExtendMode wrap_mode)
 
MTLLoadAction mtl_load_action_from_gpu (eGPULoadOp action)
 
MTLStoreAction mtl_store_action_from_gpu (eGPUStoreOp action)
 
Index buffer optimization and topology emulation

Index buffer optimization and emulation. Optimize index buffers by eliminating restart-indices. Emulate unsupported index types e.g. Triangle Fan and Line Loop.

template<typename T >
static uint32_t populate_optimized_tri_strip_buf (Span< T > original_data, MutableSpan< T > output_data, uint32_t input_index_len)
 
template<typename T >
static uint32_t populate_emulated_tri_fan_buf (Span< T > original_data, MutableSpan< T > output_data, uint32_t input_index_len)
 
Shader specialization common utilities.
static void populate_specialization_constant_values (MTLFunctionConstantValues *values, const Shader::Constants &shader_constants, const SpecializationStateDescriptor &specialization_descriptor)
 
Create Info
const char * to_string (const shader::PrimitiveOut &layout)
 
const char * to_string (const shader::PrimitiveIn &layout)
 
const char * to_string (const shader::Interpolation &interp)
 
const char * to_string (const shader::Type &type)
 
static const char * to_string (const eGPUTextureFormat &type)
 
static const char * to_string (const DepthWrite &value)
 
static void print_image_type (std::ostream &os, const ImageType &type, const ShaderCreateInfo::Resource::BindType bind_type)
 
static std::ostream & print_qualifier (std::ostream &os, const Qualifier &qualifiers)
 
static void print_resource (std::ostream &os, const VKDescriptorSet::Location location, const ShaderCreateInfo::Resource &res)
 
static void print_resource (std::ostream &os, const VKShaderInterface &shader_interface, const ShaderCreateInfo::Resource &res)
 
int get_location_count (const Type &type)
 
static void print_interface_as_attributes (std::ostream &os, const std::string &prefix, const StageInterfaceInfo &iface, int &location)
 
static void print_interface_as_struct (std::ostream &os, const std::string &prefix, const StageInterfaceInfo &iface, int &location, const StringRefNull &suffix)
 
static void print_interface (std::ostream &os, const std::string &prefix, const StageInterfaceInfo &iface, int &location, const StringRefNull &suffix="")
 
Shader Translation utility functions.
static eMTLDataType to_mtl_type (Type type)
 
static std::regex remove_non_numeric_characters ("[^0-9]")
 
static void remove_multiline_comments_func (std::string &str)
 
static void remove_singleline_comments_func (std::string &str)
 
static bool is_program_word (const char *chr, int *len)
 
static int backwards_program_word_scan (const char *array_loc, const char *min)
 
static void extract_and_replace_clipping_distances (std::string &vertex_source, MSLGeneratorInterface &msl_iface)
 
static void replace_outvars (std::string &str)
 
static void replace_matrix_constructors (std::string &str)
 
static void replace_array_initializers_func (std::string &str)
 
static bool balanced_braces (char *current_str_begin, char *current_str_end)
 
static void extract_global_scope_constants (std::string &str, std::stringstream &)
 
static bool extract_ssbo_pragma_info (const MTLShader *shader, const MSLGeneratorInterface &, const std::string &in_vertex_src, MTLPrimitiveType &out_prim_tye, uint32_t &out_num_output_verts)
 
void extract_shared_memory_blocks (MSLGeneratorInterface &msl_iface, std::string &glsl_compute_source)
 
MTLShader builtin shader generation utilities.
static void print_resource (std::ostream &os, const ShaderCreateInfo::Resource &res)
 
Shader Translation.
static void generate_specialization_constant_declarations (const shader::ShaderCreateInfo *info, std::stringstream &ss)
 
constexpr size_t const_strlen (const char *str)
 
static char parameter_delimiter (bool &is_first_parameter)
 
static uint32_t name_buffer_copystr (char **name_buffer_ptr, const char *str_to_copy, uint32_t &name_buffer_size, uint32_t &name_buffer_offset)
 
State setting functions
static MTLCompareFunction gpu_depth_function_to_metal (eGPUDepthTest depth_func)
 
static MTLCompareFunction gpu_stencil_func_to_metal (eGPUStencilTest stencil_func)
 
static void mtl_stencil_set_op_separate (MTLContext *context, eGPUFaceCullTest face, MTLStencilOperation stencil_fail, MTLStencilOperation depth_test_fail, MTLStencilOperation depthstencil_pass)
 
static void mtl_stencil_set_op (MTLContext *context, MTLStencilOperation stencil_fail, MTLStencilOperation depth_test_fail, MTLStencilOperation depthstencil_pass)
 
Texture Utility Functions
MTLPixelFormat gpu_texture_format_to_metal (eGPUTextureFormat tex_format)
 
size_t get_mtl_format_bytesize (MTLPixelFormat tex_format)
 
int get_mtl_format_num_components (MTLPixelFormat tex_format)
 
bool mtl_format_supports_blending (MTLPixelFormat format)
 
Operations
static MTLTextureSwizzle swizzle_to_mtl (const char swizzle)
 
Platform
static bool match_renderer (StringRef renderer, const Vector< std::string > &items)
 
Enums Conversion
static GLenum to_gl (const GPUAttachmentType type)
 
static GLbitfield to_gl (const eGPUFrameBufferBits bits)
 
Binding assignment

To mimic vulkan, we assign binding at shader creation to avoid shader recompilation. In the future, we should set it in the shader using layout(binding = i) and query its value.

static int block_binding (int32_t program, uint32_t block_index)
 
static int sampler_binding (int32_t program, uint32_t uniform_index, int32_t uniform_location, int *sampler_len)
 
static int image_binding (int32_t program, uint32_t uniform_index, int32_t uniform_location, int *image_len)
 
static int ssbo_binding (int32_t program, uint32_t ssbo_index)
 
Creation / Destruction
static Type gpu_type_from_gl_type (int gl_type)
 
Sampler objects
static GLenum to_gl (GPUSamplerExtendMode extend_mode)
 
Vertex Array Bindings
static uint16_t vbo_bind (const ShaderInterface *interface, const GPUVertFormat *format, uint v_first, uint v_len, const bool use_instancing)
 
API
void convert_host_to_device (void *dst_buffer, const void *src_buffer, size_t buffer_size, eGPUDataFormat host_format, eGPUTextureFormat host_texture_format, eGPUTextureFormat device_format)
 
void convert_device_to_host (void *dst_buffer, const void *src_buffer, size_t buffer_size, eGPUDataFormat host_format, eGPUTextureFormat host_texture_format, eGPUTextureFormat device_format)
 
Vertex Attributes
static bool attribute_check (const GPUVertAttr attribute, GPUVertCompType comp_type, GPUVertFetchMode fetch_mode)
 
static bool attribute_check (const GPUVertAttr attribute, GPUVertCompType comp_type, uint comp_len)
 
Load/Store operations
static VkAttachmentLoadOp to_vk_attachment_load_op (eGPULoadOp load_op)
 
static VkAttachmentStoreOp to_vk_attachment_store_op (eGPUStoreOp store_op)
 
static void set_load_store (VkRenderingAttachmentInfo &r_rendering_attachment, const GPULoadStore &ls)
 
Blit operations
static void blit_aspect (VKContext &context, VKTexture &dst_texture, VKTexture &src_texture, int dst_offset_x, int dst_offset_y, VkImageAspectFlags image_aspect)
 
SPIR-V disk cache
static std::optional< std::string > cache_dir_get ()
 
static bool read_spirv_from_disk (VKShaderModule &shader_module)
 
static void write_spirv_to_disk (VKShaderModule &shader_module)
 
Compilation
static const std::string to_stage_name (shaderc_shader_kind stage)
 
static bool compile_ex (shaderc::Compiler &compiler, VKShader &shader, shaderc_shader_kind stage, VKShaderModule &shader_module)
 
Update bindings
static uint32_t to_binding_location_len (const GPUVertAttr &attribute)
 
static uint32_t to_binding_location_len (const shader::Type type)
 

Variables

constexpr uint32_t RESTART_INDEX = 0xFFFFFFFF
 
GPUCapabilities GCaps
 
GPUPlatformGlobal GPG
 
thread_local NSAutoreleasePool * g_autoreleasepool = nil
 
thread_local int g_autoreleasepool_depth = 0
 
static const size_t VISIBILITY_COUNT_PER_BUFFER = 512
 
static const size_t VISIBILITY_RESULT_SIZE_IN_BYTES = 8
 
MTLParallelShaderCompilerg_shared_parallel_shader_compiler = nullptr
 
std::mutex g_shared_parallel_shader_compiler_mutex
 
static const int MTL_MAX_MIPMAP_COUNT = 15
 
static const int MTL_MAX_FBO_ATTACHED = 16
 
const MTLSamplerState DEFAULT_SAMPLER_STATE = {GPUSamplerState::default_sampler() }
 
static const char * KNOWN_CRASHING_DRIVER = "instable driver"
 
static CLG_LogRef LOG = {"gpu.vulkan"}
 
constexpr size_t DEFAULT_INTERNAL_BUFFER_SIZE = 4 * 1024 * 1024
 
static constexpr int BIND_SPACE_IMAGE_OFFSET = 512
 
sRGB Rendering Workaround

The viewport overlay frame-buffer is sRGB and will expect shaders to output display referred Linear colors. But other frame-buffers (i.e: the area frame-buffers) are not sRGB and require the shader output color to be in sRGB space (assumed display encoded color-space as the time of writing). For this reason we have a uniform to switch the transform on and off depending on the current frame-buffer color-space.

static int g_shader_builtin_srgb_transform = 0
 
static bool g_shader_builtin_srgb_is_dirty = false
 
Platform/driver/device information
constexpr int32_t PCI_ID_NVIDIA = 0x10de
 
constexpr int32_t PCI_ID_INTEL = 0x8086
 
constexpr int32_t PCI_ID_AMD = 0x1002
 
constexpr int32_t PCI_ID_ATI = 0x1022
 
constexpr int32_t PCI_ID_APPLE = 0x106b
 

Conversion types

enum class  ConversionType {
  PASS_THROUGH , FLOAT_TO_UNORM8 , UNORM8_TO_FLOAT , FLOAT_TO_SNORM8 ,
  SNORM8_TO_FLOAT , FLOAT_TO_UNORM16 , UNORM16_TO_FLOAT , FLOAT_TO_SNORM16 ,
  SNORM16_TO_FLOAT , FLOAT_TO_UNORM32 , UNORM32_TO_FLOAT , UI32_TO_UI16 ,
  UI16_TO_UI32 , UI32_TO_UI8 , UI8_TO_UI32 , I32_TO_I16 ,
  I16_TO_I32 , I32_TO_I8 , I8_TO_I32 , HALF_TO_FLOAT ,
  FLOAT_TO_HALF , FLOAT_TO_SRGBA8 , SRGBA8_TO_FLOAT , FLOAT_TO_DEPTH_COMPONENT24 ,
  DEPTH_COMPONENT24_TO_FLOAT , FLOAT_TO_B10F_G11F_R11F , B10F_G11F_R11F_TO_FLOAT , FLOAT3_TO_HALF4 ,
  HALF4_TO_FLOAT3 , FLOAT3_TO_FLOAT4 , FLOAT4_TO_FLOAT3 , UINT_TO_DEPTH_COMPONENT24 ,
  DEPTH_COMPONENT24_TO_UINT , UNSUPPORTED
}
 
static ConversionType type_of_conversion_float (const eGPUTextureFormat host_format, const eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_int (eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_uint (eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_half (eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_ubyte (eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_r11g11b10 (eGPUTextureFormat device_format)
 
static ConversionType type_of_conversion_r10g10b10a2 (eGPUTextureFormat device_format)
 
static ConversionType host_to_device (const eGPUDataFormat host_format, const eGPUTextureFormat host_texture_format, const eGPUTextureFormat device_format)
 
static ConversionType reversed (ConversionType type)
 

Data Conversion

using UI8 = ComponentValue<uint8_t>
 
using UI16 = ComponentValue<uint16_t>
 
using UI32 = ComponentValue<uint32_t>
 
using I8 = ComponentValue<int8_t>
 
using I16 = ComponentValue<int16_t>
 
using I32 = ComponentValue<int32_t>
 
using F32 = ComponentValue<float>
 
using SRGBA8 = PixelValue<ColorSceneLinearByteEncoded4b<eAlpha::Premultiplied>>
 
using FLOAT3 = PixelValue<float3>
 
using FLOAT4 = PixelValue<ColorSceneLinear4f<eAlpha::Premultiplied>>
 
constexpr uint32_t MASK_10_BITS = 0b1111111111
 
constexpr uint32_t MASK_11_BITS = 0b11111111111
 
constexpr uint8_t SHIFT_B = 22
 
constexpr uint8_t SHIFT_G = 11
 
constexpr uint8_t SHIFT_R = 0
 
static uint32_t float_to_uint32_t (float value)
 
static float uint32_t_to_float (uint32_t value)
 
template<typename StorageType >
void convert (SignedNormalized< StorageType > &dst, const F32 &src)
 
template<typename StorageType >
void convert (F32 &dst, const SignedNormalized< StorageType > &src)
 
template<typename StorageType >
void convert (UnsignedNormalized< StorageType > &dst, const F32 &src)
 
template<typename StorageType >
void convert (F32 &dst, const UnsignedNormalized< StorageType > &src)
 
template<typename StorageType >
void convert (UnsignedNormalized< StorageType > &, const UI32 &)
 
template<typename StorageType >
void convert (UI32 &dst, const UnsignedNormalized< StorageType > &src)
 
template<typename DestinationType , typename SourceType >
void convert (DestinationType &dst, const SourceType &src)
 
static void convert (SRGBA8 &dst, const FLOAT4 &src)
 
static void convert (FLOAT3 &dst, const HALF4 &src)
 
static void convert (HALF4 &dst, const FLOAT3 &src)
 
static void convert (FLOAT3 &dst, const FLOAT4 &src)
 
static void convert (FLOAT4 &dst, const FLOAT3 &src)
 
static void convert (FLOAT3 &dst, const B10F_G11G_R11F &src)
 
static void convert (B10F_G11G_R11F &dst, const FLOAT3 &src)
 
template<typename DestinationType , typename SourceType >
void convert (MutableSpan< DestinationType > dst, Span< SourceType > src)
 
template<typename DestinationType , typename SourceType >
void convert_per_component (void *dst_memory, const void *src_memory, size_t buffer_size, eGPUTextureFormat device_format)
 
template<typename DestinationType , typename SourceType >
void convert_per_pixel (void *dst_memory, const void *src_memory, size_t buffer_size)
 
static void convert_buffer (void *dst_memory, const void *src_memory, size_t buffer_size, eGPUTextureFormat device_format, ConversionType type)
 

Floating point conversions

using FormatF32 = FloatingPointFormat<true, 23, 8>
 
using FormatF11 = FloatingPointFormat<false, 6, 5>
 
using FormatF10 = FloatingPointFormat<false, 5, 5>
 
template<typename DestinationFormat , typename SourceFormat , bool ClampNegativeToZero = true>
uint32_t convert_float_formats (uint32_t value)
 

Typedef Documentation

◆ AttributeMask

◆ DebugStack

Definition at line 18 of file gpu_debug_private.hh.

◆ F32

Definition at line 626 of file vk_data_conversion.cc.

◆ FLOAT3

Definition at line 628 of file vk_data_conversion.cc.

◆ FLOAT4

◆ FormatF10

Definition at line 277 of file vk_data_conversion.hh.

◆ FormatF11

Definition at line 276 of file vk_data_conversion.hh.

◆ FormatF32

Definition at line 275 of file vk_data_conversion.hh.

◆ I16

Definition at line 624 of file vk_data_conversion.cc.

◆ I32

Definition at line 625 of file vk_data_conversion.cc.

◆ I8

Definition at line 623 of file vk_data_conversion.cc.

◆ MSLFragmentTileInputAttribute

◆ MTLTemporaryBuffer

◆ SRGBA8

◆ UI16

Definition at line 621 of file vk_data_conversion.cc.

◆ UI32

Definition at line 622 of file vk_data_conversion.cc.

◆ UI8

Definition at line 620 of file vk_data_conversion.cc.

Enumeration Type Documentation

◆ AppleGPUType

Enumerator
APPLE_GPU_UNKNOWN 
APPLE_GPU_M1 
APPLE_GPU_M2 
APPLE_GPU_M3 

Definition at line 33 of file mtl_capabilities.hh.

◆ ConversionType

enum class blender::gpu::ConversionType
strong
Enumerator
PASS_THROUGH 

No conversion needed, result can be directly read back to host memory.

FLOAT_TO_UNORM8 
UNORM8_TO_FLOAT 
FLOAT_TO_SNORM8 
SNORM8_TO_FLOAT 
FLOAT_TO_UNORM16 
UNORM16_TO_FLOAT 
FLOAT_TO_SNORM16 
SNORM16_TO_FLOAT 
FLOAT_TO_UNORM32 
UNORM32_TO_FLOAT 
UI32_TO_UI16 
UI16_TO_UI32 
UI32_TO_UI8 
UI8_TO_UI32 
I32_TO_I16 
I16_TO_I32 
I32_TO_I8 
I8_TO_I32 
HALF_TO_FLOAT 

Convert device 16F to floats.

FLOAT_TO_HALF 
FLOAT_TO_SRGBA8 
SRGBA8_TO_FLOAT 
FLOAT_TO_DEPTH_COMPONENT24 
DEPTH_COMPONENT24_TO_FLOAT 
FLOAT_TO_B10F_G11F_R11F 
B10F_G11F_R11F_TO_FLOAT 
FLOAT3_TO_HALF4 
HALF4_TO_FLOAT3 
FLOAT3_TO_FLOAT4 
FLOAT4_TO_FLOAT3 
UINT_TO_DEPTH_COMPONENT24 
DEPTH_COMPONENT24_TO_UINT 
UNSUPPORTED 

The requested conversion isn't supported.

Definition at line 23 of file vk_data_conversion.cc.

◆ eGPUSamplerFormat

Enumerator
GPU_SAMPLER_TYPE_FLOAT 
GPU_SAMPLER_TYPE_INT 
GPU_SAMPLER_TYPE_UINT 
GPU_SAMPLER_TYPE_DEPTH 
GPU_SAMPLER_TYPE_MAX 

Definition at line 60 of file gpu_texture_private.hh.

◆ eGPUTextureFormatFlag

Enumerator
GPU_FORMAT_DEPTH 
GPU_FORMAT_STENCIL 
GPU_FORMAT_INTEGER 
GPU_FORMAT_NORMALIZED_INTEGER 
GPU_FORMAT_FLOAT 
GPU_FORMAT_COMPRESSED 
GPU_FORMAT_SRGB 
GPU_FORMAT_SIGNED 
GPU_FORMAT_DEPTH_STENCIL 

Definition at line 20 of file gpu_texture_private.hh.

◆ eGPUTextureType

Enumerator
GPU_TEXTURE_1D 
GPU_TEXTURE_2D 
GPU_TEXTURE_3D 
GPU_TEXTURE_CUBE 
GPU_TEXTURE_ARRAY 
GPU_TEXTURE_BUFFER 
GPU_TEXTURE_1D_ARRAY 
GPU_TEXTURE_2D_ARRAY 
GPU_TEXTURE_CUBE_ARRAY 

Definition at line 43 of file gpu_texture_private.hh.

◆ eImageViewUsage

enum class blender::gpu::eImageViewUsage
strong

Based on the usage of an Image View a different image view type should be created.

When using a GPU_TEXTURE_CUBE as an frame buffer attachment it will be used as a GPU_TEXTURE_2D_ARRAY. eg only a single side of the cube map will be attached. But when bound as a shader resource the cube-map will be used.

Enumerator
ShaderBinding 

Image View will be used as a bindable shader resource.

Attachment 

Image View will be used as an frame-buffer attachment.

Definition at line 35 of file vk_common.hh.

◆ GPUIndexBufType

Enumerator
GPU_INDEX_U16 
GPU_INDEX_U32 

Definition at line 24 of file GPU_index_buffer.hh.

◆ GPUQueryType

Enumerator
GPU_QUERY_OCCLUSION 

Definition at line 17 of file gpu_query.hh.

◆ MSLTextureSamplerAccess

Enumerator
TEXTURE_ACCESS_NONE 
TEXTURE_ACCESS_SAMPLE 
TEXTURE_ACCESS_READ 
TEXTURE_ACCESS_WRITE 
TEXTURE_ACCESS_READWRITE 

Definition at line 250 of file mtl_shader_generator.hh.

◆ MTLPipelineStateDirtyFlag

Enumerator
MTL_PIPELINE_STATE_NULL_FLAG 
MTL_PIPELINE_STATE_VIEWPORT_FLAG 
MTL_PIPELINE_STATE_SCISSOR_FLAG 
MTL_PIPELINE_STATE_DEPTHSTENCIL_FLAG 
MTL_PIPELINE_STATE_PSO_FLAG 
MTL_PIPELINE_STATE_FRONT_FACING_FLAG 
MTL_PIPELINE_STATE_CULLMODE_FLAG 
MTL_PIPELINE_STATE_ALL_FLAG 

Definition at line 422 of file mtl_context.hh.

◆ Severity

enum class blender::gpu::Severity
strong
Enumerator
Unknown 
Warning 
Error 
Note 

Definition at line 219 of file gpu_shader_private.hh.

◆ ShaderStage

enum class blender::gpu::ShaderStage : uint8_t
strong
Enumerator
VERTEX 
FRAGMENT 
COMPUTE 
ANY 

Definition at line 70 of file mtl_shader_interface.hh.

◆ VKImageViewArrayed

Enumerator
DONT_CARE 
NOT_ARRAYED 
ARRAYED 

Definition at line 42 of file vk_common.hh.

Function Documentation

◆ align()

template<typename LayoutT >
static void blender::gpu::align ( const shader::Type & type,
const int32_t array_size,
uint32_t * r_offset )
static

Move the r_offset to the next alignment where the given type+array_size can be reserved.

'type': The type that needs to be aligned. 'array_size': The array_size that needs to be aligned. (0=no array). 'r_offset': After the call it will point to the byte where the reservation can happen.

Definition at line 77 of file vk_memory_layout.hh.

Referenced by align_end_of_struct(), def_attr(), init_constant(), and struct_size().

◆ align_end_of_struct()

template<typename LayoutT >
static void blender::gpu::align_end_of_struct ( uint32_t * r_offset)
static

Update 'r_offset' to be aligned to the end of the struct.

Call this function when all attributes have been added to make sure that the struct size is correct.

Definition at line 115 of file vk_memory_layout.hh.

References align(), and blender::gpu::shader::VEC4.

Referenced by init_struct(), struct_size(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ array_stride()

template<typename LayoutT >
static uint32_t blender::gpu::array_stride ( const shader::Type type)
static

Definition at line 62 of file vk_memory_layout.hh.

Referenced by reserve().

◆ attribute_check() [1/2]

static bool blender::gpu::attribute_check ( const GPUVertAttr attribute,
GPUVertCompType comp_type,
GPUVertFetchMode fetch_mode )
static

Definition at line 1084 of file vk_data_conversion.cc.

◆ attribute_check() [2/2]

static bool blender::gpu::attribute_check ( const GPUVertAttr attribute,
GPUVertCompType comp_type,
uint comp_len )
static

Definition at line 1091 of file vk_data_conversion.cc.

◆ backwards_program_word_scan()

static int blender::gpu::backwards_program_word_scan ( const char * array_loc,
const char * min )
static

Definition at line 205 of file mtl_shader_generator.mm.

References min.

Referenced by replace_array_initializers_func().

◆ balanced_braces()

static bool blender::gpu::balanced_braces ( char * current_str_begin,
char * current_str_end )
static

Definition at line 449 of file mtl_shader_generator.mm.

Referenced by extract_global_scope_constants().

◆ BLI_STATIC_ASSERT() [1/2]

blender::gpu::BLI_STATIC_ASSERT ( sizeof(GPUState) = =sizeof(uint64_t),
"GPUState is too big."  )

◆ BLI_STATIC_ASSERT() [2/2]

blender::gpu::BLI_STATIC_ASSERT ( sizeof(GPUStateMutable) = =sizeof(GPUStateMutable::data),
"GPUStateMutable is too big."  )

◆ blit_aspect()

◆ block_binding()

static int blender::gpu::block_binding ( int32_t program,
uint32_t block_index )
inlinestatic

◆ cache_dir_get()

static std::optional< std::string > blender::gpu::cache_dir_get ( )
static

◆ channel_len_to_gl()

GLenum blender::gpu::channel_len_to_gl ( int channel_len)
inline

Assume UNORM/Float target. Used with #glReadPixels.

Definition at line 488 of file gl_texture.hh.

References BLI_assert_msg.

Referenced by blender::gpu::GLFrameBuffer::read().

◆ combine_sources()

static std::string blender::gpu::combine_sources ( Span< const char * > sources)
static

◆ comp_count_from_vert_format()

uint blender::gpu::comp_count_from_vert_format ( MTLVertexFormat vert_format)
inline

Definition at line 1198 of file mtl_shader.hh.

References BLI_assert_msg.

◆ comp_type_from_vert_format()

GPUVertCompType blender::gpu::comp_type_from_vert_format ( MTLVertexFormat vert_format)
inline

◆ compile_ex()

◆ const_strlen()

size_t blender::gpu::const_strlen ( const char * str)
constexpr

◆ conversion_needed()

bool blender::gpu::conversion_needed ( const GPUVertFormat & vertex_format)

Are all attributes of the given vertex format natively supported or does conversion needs to happen.

Parameters
vertex_formatthe vertex format to check if an associated buffer requires conversion being done on the host.

◆ convert() [1/15]

static void blender::gpu::convert ( B10F_G11G_R11F & dst,
const FLOAT3 & src )
static

◆ convert() [2/15]

template<typename DestinationType , typename SourceType >
void blender::gpu::convert ( DestinationType & dst,
const SourceType & src )

Definition at line 791 of file vk_data_conversion.cc.

◆ convert() [3/15]

◆ convert() [4/15]

template<typename StorageType >
void blender::gpu::convert ( F32 & dst,
const UnsignedNormalized< StorageType > & src )

◆ convert() [5/15]

static void blender::gpu::convert ( FLOAT3 & dst,
const B10F_G11G_R11F & src )
static

◆ convert() [6/15]

static void blender::gpu::convert ( FLOAT3 & dst,
const FLOAT4 & src )
static

◆ convert() [7/15]

◆ convert() [8/15]

static void blender::gpu::convert ( FLOAT4 & dst,
const FLOAT3 & src )
static

◆ convert() [9/15]

◆ convert() [10/15]

template<typename DestinationType , typename SourceType >
void blender::gpu::convert ( MutableSpan< DestinationType > dst,
Span< SourceType > src )

◆ convert() [11/15]

◆ convert() [12/15]

static void blender::gpu::convert ( SRGBA8 & dst,
const FLOAT4 & src )
static

◆ convert() [13/15]

template<typename StorageType >
void blender::gpu::convert ( UI32 & dst,
const UnsignedNormalized< StorageType > & src )

◆ convert() [14/15]

template<typename StorageType >
void blender::gpu::convert ( UnsignedNormalized< StorageType > & ,
const UI32 &  )

Definition at line 778 of file vk_data_conversion.cc.

References BLI_assert_unreachable.

◆ convert() [15/15]

template<typename StorageType >
void blender::gpu::convert ( UnsignedNormalized< StorageType > & dst,
const F32 & src )

◆ convert_buffer()

◆ convert_device_to_host()

void blender::gpu::convert_device_to_host ( void * dst_buffer,
const void * src_buffer,
size_t buffer_size,
eGPUDataFormat host_format,
eGPUTextureFormat host_texture_format,
eGPUTextureFormat device_format )

Convert device buffer to host buffer.

Parameters
dst_bufferhost buffer
src_bufferdevice buffer.
buffer_sizenumber of pixels to convert from the start of the given buffer.
host_formatformat of the host buffer
host_texture_formattexture format of the host buffer.
device_formatformat of the device buffer.
Note
Will assert when the host_format/device_format combination isn't valid (validate_data_format) or supported. Some combinations aren't supported in Vulkan due to platform incompatibility.

Definition at line 1064 of file vk_data_conversion.cc.

References BLI_assert_msg, convert_buffer(), host_to_device(), reversed(), and UNSUPPORTED.

Referenced by blender::gpu::VKTexture::read_sub(), blender::gpu::tests::TEST(), and blender::gpu::tests::TEST().

◆ convert_float_formats()

template<typename DestinationFormat , typename SourceFormat , bool ClampNegativeToZero = true>
uint32_t blender::gpu::convert_float_formats ( uint32_t value)

Convert between low precision floating (including 32 bit floats).

The input and output values are bits (uint32_t) as this function does a bit-wise operations to convert between the formats. Additional conversion rules can be applied to the conversion function. Due to the implementation the compiler would make an optimized version depending on the actual possibilities.

Definition at line 306 of file vk_data_conversion.hh.

References is_zero(), and result.

Referenced by convert(), convert(), blender::gpu::tests::TEST(), and blender::gpu::tests::TEST().

◆ convert_host_to_device()

void blender::gpu::convert_host_to_device ( void * dst_buffer,
const void * src_buffer,
size_t buffer_size,
eGPUDataFormat host_format,
eGPUTextureFormat host_texture_format,
eGPUTextureFormat device_format )

Convert host buffer to device buffer.

Parameters
dst_bufferdevice buffer.
src_bufferhost buffer.
buffer_sizenumber of pixels to convert from the start of the given buffer.
host_formatformat of the host buffer.
host_texture_formattexture format of the host buffer.
device_formatformat of the device buffer.
Note
Will assert when the host_format/device_format combination isn't valid (validate_data_format) or supported. Some combinations aren't supported in Vulkan due to platform incompatibility.

Definition at line 1052 of file vk_data_conversion.cc.

References BLI_assert, convert_buffer(), host_to_device(), and UNSUPPORTED.

Referenced by blender::gpu::tests::TEST(), blender::gpu::tests::TEST(), and blender::gpu::VKTexture::update_sub().

◆ convert_in_place()

void blender::gpu::convert_in_place ( void * data,
const GPUVertFormat & vertex_format,
const uint vertex_len )

Convert the given data to contain Vulkan natively supported data formats.

When for an vertex attribute the fetch mode is set to GPU_FETCH_INT_TO_FLOAT and the attribute is an int32_t or uint32_t the conversion will be done. Attributes of 16 or 8 bits are supported natively and will be done in Vulkan.

Parameters
dataBuffer to convert. Data will be converted in place.
vertex_formatVertex format of the given data. Attributes that aren't supported will be converted to a supported one.
vertex_lenNumber of vertices of the given data buffer; The number of vertices to convert.

◆ convert_per_component()

template<typename DestinationType , typename SourceType >
void blender::gpu::convert_per_component ( void * dst_memory,
const void * src_memory,
size_t buffer_size,
eGPUTextureFormat device_format )

Definition at line 879 of file vk_data_conversion.cc.

References convert(), and to_component_len().

Referenced by convert_buffer().

◆ convert_per_pixel()

template<typename DestinationType , typename SourceType >
void blender::gpu::convert_per_pixel ( void * dst_memory,
const void * src_memory,
size_t buffer_size )

Definition at line 893 of file vk_data_conversion.cc.

References convert().

Referenced by convert_buffer().

◆ copy_color()

template<typename T >
void blender::gpu::copy_color ( T dst[4],
const T * src )

Definition at line 797 of file vk_common.cc.

Referenced by to_vk_clear_color_value().

◆ create_gpu_name()

static char * blender::gpu::create_gpu_name ( const char * vendor,
const char * renderer,
const char * version )
static

◆ create_key()

static char * blender::gpu::create_key ( eGPUSupportLevel support_level,
const char * vendor,
const char * renderer,
const char * version )
static

◆ DEBUG_FUNC_OVERRIDE() [1/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glClear ,
GLbitfield ,
mask  )

◆ DEBUG_FUNC_OVERRIDE() [2/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glDeleteTextures ,
GLsizei ,
n ,
const GLuint * ,
textures  )

◆ DEBUG_FUNC_OVERRIDE() [3/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glDrawArrays ,
GLenum ,
mode ,
GLint ,
first ,
GLsizei ,
count  )

◆ DEBUG_FUNC_OVERRIDE() [4/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glFinish ,
void  )

◆ DEBUG_FUNC_OVERRIDE() [5/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glFlush ,
void  )

◆ DEBUG_FUNC_OVERRIDE() [6/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glGenTextures ,
GLsizei ,
n ,
GLuint * ,
textures  )

◆ DEBUG_FUNC_OVERRIDE() [7/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glGetTexImage ,
GLenum ,
target ,
GLint ,
level ,
GLenum ,
format ,
GLenum ,
type ,
void * ,
pixels  )

◆ DEBUG_FUNC_OVERRIDE() [8/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glReadBuffer ,
GLenum ,
mode  )

◆ DEBUG_FUNC_OVERRIDE() [9/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glReadPixels ,
GLint ,
x ,
GLint ,
y ,
GLsizei ,
width ,
GLsizei ,
height ,
GLenum ,
format ,
GLenum ,
type ,
void * ,
pixels  )

◆ DEBUG_FUNC_OVERRIDE() [10/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexImage1D ,
GLenum ,
target ,
GLint ,
level ,
GLint ,
internalformat ,
GLsizei ,
width ,
GLint ,
border ,
GLenum ,
format ,
GLenum ,
type ,
const void * ,
pixels  )

◆ DEBUG_FUNC_OVERRIDE() [11/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexImage2D ,
GLenum ,
target ,
GLint ,
level ,
GLint ,
internalformat ,
GLsizei ,
width ,
GLsizei ,
height ,
GLint ,
border ,
GLenum ,
format ,
GLenum ,
type ,
const void * ,
pixels  )

◆ DEBUG_FUNC_OVERRIDE() [12/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexParameteri ,
GLenum ,
target ,
GLenum ,
pname ,
GLint ,
param  )

◆ DEBUG_FUNC_OVERRIDE() [13/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexParameteriv ,
GLenum ,
target ,
GLenum ,
pname ,
const GLint * ,
params  )

◆ DEBUG_FUNC_OVERRIDE() [14/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexSubImage1D ,
GLenum ,
target ,
GLint ,
level ,
GLint ,
xoffset ,
GLsizei ,
width ,
GLenum ,
format ,
GLenum ,
type ,
const void * ,
pixels  )

◆ DEBUG_FUNC_OVERRIDE() [15/15]

blender::gpu::DEBUG_FUNC_OVERRIDE ( glTexSubImage2D ,
GLenum ,
target ,
GLint ,
level ,
GLint ,
xoffset ,
GLint ,
yoffset ,
GLsizei ,
width ,
GLsizei ,
height ,
GLenum ,
format ,
GLenum ,
type ,
const void * ,
pixels  )

◆ declare_emit_vertex()

static void blender::gpu::declare_emit_vertex ( std::stringstream & ss)
static

Definition at line 1058 of file vk_shader.cc.

Referenced by blender::gpu::VKShader::geometry_layout_declare().

◆ def_attr()

template<typename Layout >
static void blender::gpu::def_attr ( const shader::Type type,
const int array_size,
const uint32_t expected_alignment,
const uint32_t expected_reserve,
uint32_t * r_offset )
static

Definition at line 12 of file vk_memory_layout_test.cc.

References align(), EXPECT_EQ(), and reserve().

Referenced by TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), TEST(), and TEST().

◆ default_load_store()

GPULoadStore blender::gpu::default_load_store ( )
constexpr

The default load store action when not using load stores.

Definition at line 21 of file vk_framebuffer.cc.

References GPU_LOADACTION_LOAD, and GPU_STOREACTION_STORE.

Referenced by blender::gpu::VKFrameBuffer::bind(), and blender::gpu::VKFrameBuffer::subpass_transition_impl().

◆ detect_mip_render_workaround()

static bool blender::gpu::detect_mip_render_workaround ( )
static

◆ detect_workarounds()

static void blender::gpu::detect_workarounds ( )
static

Definition at line 292 of file gl_backend.cc.

References BLI_windows_get_directx_driver_version(), blender::gpu::GPUCapabilities::broken_amd_driver, blender::gpu::GLContext::clear_texture_support, blender::gpu::GLContext::debug_layer_support, blender::gpu::GLContext::debug_layer_workaround, blender::gpu::GPUCapabilities::depth_blitting_workaround, blender::gpu::GLContext::derivative_signs, detect_mip_render_workaround(), blender::gpu::GLContext::direct_state_access_support, blender::gpu::GLContext::framebuffer_fetch_support, G, G_DEBUG_GPU_FORCE_WORKAROUNDS, G_DEBUG_GPU_RENDERDOC, GCaps, GPU_DEVICE_ATI, GPU_DEVICE_INTEL, GPU_DEVICE_QUALCOMM, GPU_DRIVER_ANY, GPU_DRIVER_OFFICIAL, GPU_DRIVER_OPENSOURCE, GPU_OS_ANY, GPU_OS_UNIX, GPU_OS_WIN, GPU_type_matches(), blender::gpu::GPUCapabilities::hdr_viewport_support, L, blender::gpu::GLContext::layered_rendering_support, match_renderer(), blender::gpu::GPUCapabilities::minimum_per_vertex_stride, blender::gpu::GPUCapabilities::mip_render_workaround, blender::gpu::GLContext::multi_bind_image_support, blender::gpu::GLContext::multi_bind_support, blender::gpu::GLContext::multi_draw_indirect_support, blender::gpu::GLContext::native_barycentric_support, printf, blender::gpu::GLContext::shader_draw_parameters_support, blender::gpu::GPUCapabilities::shader_draw_parameters_support, blender::gpu::GPUCapabilities::stencil_clasify_buffer_workaround, blender::gpu::GPUCapabilities::stencil_export_support, blender::gpu::GLContext::texture_barrier_support, blender::gpu::GLContext::texture_filter_anisotropic_support, blender::gpu::GLContext::unused_fb_slot_workaround, blender::gpu::GPUCapabilities::use_hq_normals_workaround, and blender::gpu::GPUCapabilities::use_main_context_workaround.

◆ determine_os_type()

static eGPUOSType blender::gpu::determine_os_type ( )
static

Definition at line 206 of file vk_backend.cc.

References GPU_OS_MAC, GPU_OS_UNIX, and GPU_OS_WIN.

Referenced by blender::gpu::VKBackend::platform_init().

◆ element_stride()

template<typename LayoutT >
static uint32_t blender::gpu::element_stride ( const shader::Type type)
static

Definition at line 57 of file vk_memory_layout.hh.

Referenced by reserve().

◆ ENUM_OPERATORS() [1/2]

blender::gpu::ENUM_OPERATORS ( MTLPipelineStateDirtyFlag ,
MTL_PIPELINE_STATE_CULLMODE_FLAG  )

◆ ENUM_OPERATORS() [2/2]

blender::gpu::ENUM_OPERATORS ( ShaderStage ,
ShaderStage::ANY  )

◆ extract_and_replace_clipping_distances()

◆ extract_global_scope_constants()

static void blender::gpu::extract_global_scope_constants ( std::string & str,
std::stringstream &  )
static

Certain Constants (such as arrays, or pointer types) declared in Global-scope end up being initialized per shader thread, resulting in high register pressure within the shader. Here we flag occurrences of these constants such that they can be moved to a place where this is not a problem.

Constants declared within function-scope do not exhibit this problem.

Definition at line 475 of file mtl_shader_generator.mm.

References balanced_braces(), BLI_assert, MTL_LOG_INFO, and str.

◆ extract_shared_memory_blocks()

◆ extract_ssbo_pragma_info()

static bool blender::gpu::extract_ssbo_pragma_info ( const MTLShader * shader,
const MSLGeneratorInterface & ,
const std::string & in_vertex_src,
MTLPrimitiveType & out_prim_tye,
uint32_t & out_num_output_verts )
static

◆ fetchmode_from_vert_format()

GPUVertFetchMode blender::gpu::fetchmode_from_vert_format ( MTLVertexFormat vert_format)
inline

◆ find_interface_by_name()

static StageInterfaceInfo * blender::gpu::find_interface_by_name ( const Span< StageInterfaceInfo * > ifaces,
const StringRefNull name )
static

◆ float_to_uint32_t()

static uint32_t blender::gpu::float_to_uint32_t ( float value)
static

Definition at line 593 of file vk_data_conversion.cc.

Referenced by convert().

◆ generate_specialization_constant_declarations()

static void blender::gpu::generate_specialization_constant_declarations ( const shader::ShaderCreateInfo * info,
std::stringstream & ss )
static

◆ get_attribute_conversion_function()

std::string blender::gpu::get_attribute_conversion_function ( bool * uses_conversion,
const shader::Type & type )
inline

◆ get_location_count()

int blender::gpu::get_location_count ( const Type & type)
inline

◆ get_matrix_location_count() [1/2]

int blender::gpu::get_matrix_location_count ( const shader::Type & type)
inline

◆ get_matrix_location_count() [2/2]

◆ get_matrix_subtype() [1/2]

shader::Type blender::gpu::get_matrix_subtype ( const shader::Type & type)
inline

◆ get_matrix_subtype() [2/2]

◆ get_mtl_format_bytesize()

size_t blender::gpu::get_mtl_format_bytesize ( MTLPixelFormat tex_format)

◆ get_mtl_format_num_components()

int blender::gpu::get_mtl_format_num_components ( MTLPixelFormat tex_format)

Definition at line 269 of file mtl_texture_util.mm.

References BLI_assert_msg.

Referenced by blender::gpu::MTLTexture::update_sub().

◆ get_num_efficiency_cpu_cores()

static int blender::gpu::get_num_efficiency_cpu_cores ( id< MTLDevice > device)
static

Definition at line 325 of file mtl_backend.mm.

References BLI_assert, is_apple_sillicon(), and NULL.

◆ get_num_performance_cpu_cores()

static int blender::gpu::get_num_performance_cpu_cores ( id< MTLDevice > device)
static

Definition at line 300 of file mtl_backend.mm.

References BLI_assert, is_apple_sillicon(), and NULL.

◆ get_shader_stage_index()

◆ get_shader_stage_instance_name()

◆ get_shared_parallel_shader_compiler()

◆ get_stage_class_name()

◆ gl_extension_get()

static const char * blender::gpu::gl_extension_get ( int i)
static

Definition at line 287 of file gl_backend.cc.

◆ gpu_depth_function_to_metal()

static MTLCompareFunction blender::gpu::gpu_depth_function_to_metal ( eGPUDepthTest depth_func)
static

◆ gpu_prim_type_to_metal()

◆ gpu_stencil_func_to_metal()

static MTLCompareFunction blender::gpu::gpu_stencil_func_to_metal ( eGPUStencilTest stencil_func)
static

◆ gpu_texture_format_to_metal()

◆ gpu_type_from_gl_type()

static Type blender::gpu::gpu_type_from_gl_type ( int gl_type)
static

Definition at line 156 of file gl_shader_interface.cc.

References BLI_assert.

Referenced by blender::gpu::GLShaderInterface::GLShaderInterface().

◆ gpu_usage_from_mtl()

eGPUTextureUsage blender::gpu::gpu_usage_from_mtl ( MTLTextureUsage mtl_usage)
inline

◆ host_to_device()

◆ image_binding()

static int blender::gpu::image_binding ( int32_t program,
uint32_t uniform_index,
int32_t uniform_location,
int * image_len )
inlinestatic

◆ indices_per_primitive()

◆ init_constant()

◆ init_struct()

◆ is_apple_sillicon()

bool blender::gpu::is_apple_sillicon ( id< MTLDevice > device)

Definition at line 289 of file mtl_backend.mm.

References BLI_assert.

Referenced by get_num_efficiency_cpu_cores(), and get_num_performance_cpu_cores().

◆ is_builtin_type()

◆ is_matrix_type() [1/2]

bool blender::gpu::is_matrix_type ( const shader::Type & type)
inline

◆ is_matrix_type() [2/2]

◆ is_program_word()

static bool blender::gpu::is_program_word ( const char * chr,
int * len )
static

Definition at line 185 of file mtl_shader_generator.mm.

References len.

Referenced by replace_outvars().

◆ main_function_wrapper()

static std::string blender::gpu::main_function_wrapper ( std::string & pre_main,
std::string & post_main )
static

◆ match_renderer()

static bool blender::gpu::match_renderer ( StringRef renderer,
const Vector< std::string > & items )
static

◆ missing_capabilities_get()

◆ mtl_convert_vertex_format()

bool blender::gpu::mtl_convert_vertex_format ( MTLVertexFormat shader_attrib_format,
GPUVertCompType component_type,
uint32_t component_length,
GPUVertFetchMode fetch_mode,
MTLVertexFormat * r_convertedFormat )
inline

Returns whether the METAL API can internally convert between the input type of data in the incoming vertex buffer and the format used by the vertex attribute inside the shader.

  • Returns TRUE if the type can be converted internally, along with returning the appropriate type to be passed into the #MTLVertexAttributeDescriptorPSO.
  • Returns FALSE if the type cannot be converted internally e.g. casting Int4 to Float4.

If implicit conversion is not possible, then we can fallback to performing manual attribute conversion using the special attribute read function specializations in the shader. These functions selectively convert between types based on the specified vertex attribute GPUVertFetchMode fetch_mode e.g. GPU_FETCH_INT.

Definition at line 797 of file mtl_shader.hh.

References BLI_assert, BLI_assert_msg, BLI_assert_unreachable, GPU_COMP_F32, GPU_COMP_I10, GPU_COMP_I16, GPU_COMP_I32, GPU_COMP_I8, GPU_COMP_MAX, GPU_COMP_U16, GPU_COMP_U32, GPU_COMP_U8, GPU_FETCH_FLOAT, GPU_FETCH_INT, GPU_FETCH_INT_TO_FLOAT, GPU_FETCH_INT_TO_FLOAT_UNIT, mtl_vertex_format_resize(), normalized(), and UNUSED_VARS_NDEBUG.

Referenced by blender::gpu::MTLImmediate::end().

◆ mtl_datatype_to_vertex_type()

MTLVertexFormat blender::gpu::mtl_datatype_to_vertex_type ( eMTLDataType type)

◆ mtl_extensions_get_null()

static const char * blender::gpu::mtl_extensions_get_null ( int )
static

Definition at line 262 of file mtl_backend.mm.

◆ mtl_format_get_writeable_view_format()

MTLPixelFormat blender::gpu::mtl_format_get_writeable_view_format ( MTLPixelFormat format)
inline

Definition at line 605 of file mtl_texture.hh.

Referenced by blender::gpu::MTLTexture::update_sub().

◆ mtl_format_is_writable()

bool blender::gpu::mtl_format_is_writable ( MTLPixelFormat format)
inline

Definition at line 586 of file mtl_texture.hh.

◆ mtl_format_supports_blending()

◆ mtl_load_action_from_gpu()

MTLLoadAction blender::gpu::mtl_load_action_from_gpu ( eGPULoadOp action)

◆ mtl_needs_topology_emulation()

static bool blender::gpu::mtl_needs_topology_emulation ( GPUPrimType prim_type)
inlinestatic

◆ mtl_prim_type_to_topology_class()

static MTLPrimitiveTopologyClass blender::gpu::mtl_prim_type_to_topology_class ( MTLPrimitiveType prim_type)
inlinestatic

◆ mtl_stencil_set_op()

static void blender::gpu::mtl_stencil_set_op ( MTLContext * context,
MTLStencilOperation stencil_fail,
MTLStencilOperation depth_test_fail,
MTLStencilOperation depthstencil_pass )
static

Definition at line 276 of file mtl_state.mm.

References GPU_CULL_BACK, GPU_CULL_FRONT, and mtl_stencil_set_op_separate().

◆ mtl_stencil_set_op_separate()

◆ mtl_store_action_from_gpu()

MTLStoreAction blender::gpu::mtl_store_action_from_gpu ( eGPUStoreOp action)

◆ mtl_usage_from_gpu()

◆ mtl_vertex_count_fits_primitive_type()

static bool blender::gpu::mtl_vertex_count_fits_primitive_type ( uint32_t vertex_count,
MTLPrimitiveType prim_type )
inlinestatic

Definition at line 79 of file mtl_primitive.hh.

References BLI_assert.

Referenced by blender::gpu::MTLImmediate::end().

◆ mtl_vertex_format_resize()

bool blender::gpu::mtl_vertex_format_resize ( MTLVertexFormat mtl_format,
uint32_t components,
MTLVertexFormat * r_convertedFormat )
inline

Definition at line 516 of file mtl_shader.hh.

Referenced by blender::gpu::MTLImmediate::end(), and mtl_convert_vertex_format().

◆ name_buffer_copystr()

static uint32_t blender::gpu::name_buffer_copystr ( char ** name_buffer_ptr,
const char * str_to_copy,
uint32_t & name_buffer_size,
uint32_t & name_buffer_offset )
static

Add string to name buffer. Utility function to be used in bake_shader_interface. Returns the offset of the inserted name.

Definition at line 3685 of file mtl_shader_generator.mm.

References BLI_assert, max_ii(), and MEM_reallocN.

Referenced by blender::gpu::MSLGeneratorInterface::bake_shader_interface().

◆ new_buffer_size()

static VkDeviceSize blender::gpu::new_buffer_size ( size_t sub_buffer_size)
static

Definition at line 108 of file vk_immediate.cc.

References DEFAULT_INTERNAL_BUFFER_SIZE, and max_ulul().

◆ next_symbol_in_range()

char * blender::gpu::next_symbol_in_range ( char * begin,
char * end,
char symbol )
inline

Definition at line 851 of file mtl_shader_generator.hh.

Referenced by extract_shared_memory_blocks().

◆ next_word_in_range()

char * blender::gpu::next_word_in_range ( char * begin,
char * end )
inline

Definition at line 861 of file mtl_shader_generator.hh.

Referenced by extract_shared_memory_blocks().

◆ operator!=() [1/2]

bool blender::gpu::operator!= ( const GPUState & a,
const GPUState & b )
inline

Definition at line 62 of file gpu_state_private.hh.

References b.

◆ operator!=() [2/2]

bool blender::gpu::operator!= ( const GPUStateMutable & a,
const GPUStateMutable & b )
inline

Definition at line 111 of file gpu_state_private.hh.

References b.

◆ operator==() [1/3]

bool blender::gpu::operator== ( const GPUState & a,
const GPUState & b )
inline

Definition at line 57 of file gpu_state_private.hh.

References b.

◆ operator==() [2/3]

bool blender::gpu::operator== ( const GPUStateMutable & a,
const GPUStateMutable & b )
inline

Definition at line 106 of file gpu_state_private.hh.

References b.

◆ operator==() [3/3]

BLI_INLINE bool blender::gpu::operator== ( const VKContext & a,
const VKContext & b )

Definition at line 118 of file vk_context.hh.

References b.

◆ operator^() [1/2]

GPUState blender::gpu::operator^ ( const GPUState & a,
const GPUState & b )
inline

Definition at line 67 of file gpu_state_private.hh.

References b, and blender::gpu::GPUState::data.

◆ operator^() [2/2]

GPUStateMutable blender::gpu::operator^ ( const GPUStateMutable & a,
const GPUStateMutable & b )
inline

Definition at line 116 of file gpu_state_private.hh.

References ARRAY_SIZE, b, and blender::gpu::GPUStateMutable::data.

◆ operator~() [1/2]

GPUState blender::gpu::operator~ ( const GPUState & a)
inline

Definition at line 74 of file gpu_state_private.hh.

References blender::gpu::GPUState::data.

◆ operator~() [2/2]

GPUStateMutable blender::gpu::operator~ ( const GPUStateMutable & a)
inline

Definition at line 125 of file gpu_state_private.hh.

References ARRAY_SIZE, and blender::gpu::GPUStateMutable::data.

◆ parameter_delimiter()

◆ populate_emulated_tri_fan_buf()

template<typename T >
static uint32_t blender::gpu::populate_emulated_tri_fan_buf ( Span< T > original_data,
MutableSpan< T > output_data,
uint32_t input_index_len )
static

Definition at line 293 of file mtl_index_buffer.mm.

References T.

Referenced by blender::gpu::MTLIndexBuf::get_index_buffer().

◆ populate_optimized_tri_strip_buf()

template<typename T >
static uint32_t blender::gpu::populate_optimized_tri_strip_buf ( Span< T > original_data,
MutableSpan< T > output_data,
uint32_t input_index_len )
static

Definition at line 236 of file mtl_index_buffer.mm.

References T.

Referenced by blender::gpu::MTLIndexBuf::get_index_buffer().

◆ populate_specialization_constant_values()

static void blender::gpu::populate_specialization_constant_values ( MTLFunctionConstantValues * values,
const Shader::Constants & shader_constants,
const SpecializationStateDescriptor & specialization_descriptor )
static

◆ present()

◆ print_image_type()

static void blender::gpu::print_image_type ( std::ostream & os,
const ImageType & type,
const ShaderCreateInfo::Resource::BindType bind_type )
static

Definition at line 206 of file vk_shader.cc.

Referenced by print_resource(), and print_resource().

◆ print_interface()

◆ print_interface_as_attributes()

static void blender::gpu::print_interface_as_attributes ( std::ostream & os,
const std::string & prefix,
const StageInterfaceInfo & iface,
int & location )
static

◆ print_interface_as_struct()

static void blender::gpu::print_interface_as_struct ( std::ostream & os,
const std::string & prefix,
const StageInterfaceInfo & iface,
int & location,
const StringRefNull & suffix )
static

◆ print_qualifier()

static std::ostream & blender::gpu::print_qualifier ( std::ostream & os,
const Qualifier & qualifiers )
static

Definition at line 335 of file vk_shader.cc.

Referenced by print_resource(), and print_resource().

◆ print_resource() [1/3]

◆ print_resource() [2/3]

◆ print_resource() [3/3]

static void blender::gpu::print_resource ( std::ostream & os,
const VKShaderInterface & shader_interface,
const ShaderCreateInfo::Resource & res )
static

◆ printf_begin()

◆ printf_end()

◆ read_spirv_from_disk()

◆ release_shared_parallel_shader_compiler()

◆ remove_multiline_comments_func()

static void blender::gpu::remove_multiline_comments_func ( std::string & str)
static

Definition at line 135 of file mtl_shader_generator.mm.

References str.

◆ remove_non_numeric_characters()

static std::regex blender::gpu::remove_non_numeric_characters ( "" [^0-9])
static

◆ remove_singleline_comments_func()

static void blender::gpu::remove_singleline_comments_func ( std::string & str)
static

Definition at line 161 of file mtl_shader_generator.mm.

References str.

◆ replace_array_initializers_func()

static void blender::gpu::replace_array_initializers_func ( std::string & str)
static

Definition at line 394 of file mtl_shader_generator.mm.

References backwards_program_word_scan(), clear(), and str.

◆ replace_matrix_constructors()

static void blender::gpu::replace_matrix_constructors ( std::string & str)
static

Definition at line 338 of file mtl_shader_generator.mm.

References ARRAY_SET_ITEMS, and str.

◆ replace_outvars()

static void blender::gpu::replace_outvars ( std::string & str)
static

Replace function parameter patterns containing: out vec3 somevar with THD vec3&somevar. which enables pass by reference via resolved macro: thread vec3& somevar.

Definition at line 276 of file mtl_shader_generator.mm.

References clear(), is_program_word(), and str.

◆ reserve()

template<typename LayoutT >
static void blender::gpu::reserve ( const shader::Type type,
int32_t array_size,
uint32_t * r_offset )
static

Reserve space for the given type and array size.

This function doesn't handle alignment this needs to be done up front by calling 'align<Layout>' function. Caller is responsible for this.

'type': The type that needs to be reserved. 'array_size': The array_size that needs to be reserved. (0=no array). 'r_offset': When calling needs to be pointing to the aligned location where to reserve space. After the call it will point to the byte just after reserved space.

Definition at line 102 of file vk_memory_layout.hh.

References array_stride(), element_stride(), and size().

Referenced by def_attr(), init_constant(), and struct_size().

◆ reversed()

static ConversionType blender::gpu::reversed ( ConversionType type)
static

Definition at line 546 of file vk_data_conversion.cc.

References CASE_PAIR, FLOAT, HALF, PASS_THROUGH, and UNSUPPORTED.

Referenced by convert_device_to_host().

◆ sampler_binding()

◆ set_load_store()

static void blender::gpu::set_load_store ( VkRenderingAttachmentInfo & r_rendering_attachment,
const GPULoadStore & ls )
static

◆ shader_input_index()

static int32_t blender::gpu::shader_input_index ( const ShaderInput * shader_inputs,
const ShaderInput * shader_input )
static

Definition at line 256 of file vk_shader_interface.cc.

◆ sort_input_list()

◆ ssbo_binding()

static int blender::gpu::ssbo_binding ( int32_t program,
uint32_t ssbo_index )
inlinestatic

◆ struct_size()

template<typename LayoutT >
uint32_t blender::gpu::struct_size ( Span< shader::ShaderCreateInfo::PushConst > push_constants)

◆ supports_barycentric_whitelist()

bool blender::gpu::supports_barycentric_whitelist ( id< MTLDevice > device)

Definition at line 267 of file mtl_backend.mm.

References BLI_assert.

Referenced by blender::gpu::MTLBackend::metal_is_supported().

◆ swizzle_to_gl()

GLenum blender::gpu::swizzle_to_gl ( const char swizzle)
inline

Definition at line 338 of file gl_texture.hh.

Referenced by blender::gpu::GLTexture::swizzle_set().

◆ swizzle_to_mtl()

static MTLTextureSwizzle blender::gpu::swizzle_to_mtl ( const char swizzle)
static

Definition at line 1487 of file mtl_texture.mm.

Referenced by blender::gpu::MTLTexture::swizzle_set().

◆ TEST() [1/10]

blender::gpu::TEST ( std140 ,
_2fl  )

◆ TEST() [2/10]

blender::gpu::TEST ( std140 ,
_3fl  )

◆ TEST() [3/10]

blender::gpu::TEST ( std140 ,
_4fl  )

◆ TEST() [4/10]

blender::gpu::TEST ( std140 ,
fl  )

◆ TEST() [5/10]

blender::gpu::TEST ( std140 ,
fl2  )

◆ TEST() [6/10]

blender::gpu::TEST ( std140 ,
fl_fl2  )

◆ TEST() [7/10]

blender::gpu::TEST ( std140 ,
fl_vec2  )

◆ TEST() [8/10]

blender::gpu::TEST ( std140 ,
gpu_shader_2D_widget_base  )

◆ TEST() [9/10]

blender::gpu::TEST ( std430 ,
overlay_grid  )

◆ TEST() [10/10]

blender::gpu::TEST ( std430 ,
simple_lighting  )

◆ tex_data_format_to_msl_texture_template_type()

std::string blender::gpu::tex_data_format_to_msl_texture_template_type ( eGPUDataFormat type)
inline

◆ tex_data_format_to_msl_type_str()

◆ to_binding_location_len() [1/2]

static uint32_t blender::gpu::to_binding_location_len ( const GPUVertAttr & attribute)
static

Definition at line 129 of file vk_vertex_attribute_object.cc.

References blender::ceil_division().

◆ to_binding_location_len() [2/2]

◆ to_block_size()

◆ to_bytesize() [1/4]

◆ to_bytesize() [2/4]

◆ to_bytesize() [3/4]

size_t blender::gpu::to_bytesize ( eGPUTextureFormat tex_format,
eGPUDataFormat data_format )
inline

◆ to_bytesize() [4/4]

◆ to_component_len()

◆ to_component_type()

static Type blender::gpu::to_component_type ( const Type & type)
static

◆ to_data_format()

◆ to_format_flag()

◆ to_framebuffer_bits()

◆ to_gl() [1/10]

static GLbitfield blender::gpu::to_gl ( const eGPUFrameBufferBits bits)
inlinestatic

Definition at line 146 of file gl_framebuffer.hh.

References GPU_COLOR_BIT, GPU_DEPTH_BIT, GPU_STENCIL_BIT, and mask().

◆ to_gl() [2/10]

◆ to_gl() [3/10]

◆ to_gl() [4/10]

◆ to_gl() [5/10]

static GLenum blender::gpu::to_gl ( GPUIndexBufType type)
inlinestatic

Definition at line 63 of file gl_index_buffer.hh.

References GPU_INDEX_U32.

◆ to_gl() [6/10]

◆ to_gl() [7/10]

static GLenum blender::gpu::to_gl ( GPUQueryType type)
inlinestatic

Definition at line 44 of file gl_query.hh.

References BLI_assert, and GPU_QUERY_OCCLUSION.

◆ to_gl() [8/10]

static GLenum blender::gpu::to_gl ( GPUSamplerExtendMode extend_mode)
inlinestatic

A function that maps GPUSamplerExtendMode values to their OpenGL enum counterparts.

Definition at line 479 of file gl_texture.cc.

References BLI_assert_unreachable, GPU_SAMPLER_EXTEND_MODE_CLAMP_TO_BORDER, GPU_SAMPLER_EXTEND_MODE_EXTEND, GPU_SAMPLER_EXTEND_MODE_MIRRORED_REPEAT, and GPU_SAMPLER_EXTEND_MODE_REPEAT.

◆ to_gl() [9/10]

static GLenum blender::gpu::to_gl ( GPUUsageType type)
inlinestatic

◆ to_gl() [10/10]

static GLenum blender::gpu::to_gl ( GPUVertCompType type)
inlinestatic

◆ to_gl_data_format()

◆ to_gl_internal_format()

◆ to_gl_proxy()

◆ to_gl_target()

◆ to_gpu_format()

eGPUTextureFormat blender::gpu::to_gpu_format ( const VkFormat format)

Definition at line 118 of file vk_common.cc.

References BLI_assert_unreachable, GPU_RGBA32F, and GPU_RGBA8.

Referenced by blender::gpu::VKContext::sync_backbuffer().

◆ to_metal_type()

◆ to_mtl_type() [1/3]

static MTLVisibilityResultMode blender::gpu::to_mtl_type ( GPUQueryType type)
inlinestatic

Definition at line 46 of file mtl_query.mm.

References BLI_assert, and GPU_QUERY_OCCLUSION.

◆ to_mtl_type() [2/3]

static MTLSamplerAddressMode blender::gpu::to_mtl_type ( GPUSamplerExtendMode wrap_mode)
inlinestatic

◆ to_mtl_type() [3/3]

◆ to_non_srgb_format()

static VkFormat blender::gpu::to_non_srgb_format ( const VkFormat format)
static

Definition at line 18 of file vk_image_view.cc.

Referenced by blender::gpu::VKImageView::VKImageView().

◆ to_stage_name()

static const std::string blender::gpu::to_stage_name ( shaderc_shader_kind stage)
static

Definition at line 175 of file vk_shader_compiler.cc.

References BLI_assert_msg, and stage.

Referenced by compile_ex().

◆ to_string() [1/44]

static const char * blender::gpu::to_string ( const DepthWrite & value)
static

Definition at line 192 of file vk_shader.cc.

◆ to_string() [2/44]

◆ to_string() [3/44]

static const char * blender::gpu::to_string ( const shader::Interpolation & interp)
inline

◆ to_string() [4/44]

◆ to_string() [5/44]

static const char * blender::gpu::to_string ( const shader::PrimitiveOut & layout)
inline

◆ to_string() [6/44]

◆ to_string() [7/44]

const char * blender::gpu::to_string ( const VkAttachmentLoadOp vk_attachment_load_op)

Definition at line 63 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [8/44]

const char * blender::gpu::to_string ( const VkAttachmentStoreOp vk_attachment_store_op)

Definition at line 81 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [9/44]

std::string blender::gpu::to_string ( const VkBufferCopy & vk_buffer_copy,
int indentation_level )

Definition at line 590 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [10/44]

std::string blender::gpu::to_string ( const VkBufferImageCopy & vk_buffer_image_copy,
int indentation_level )

Definition at line 601 of file vk_to_string.cc.

References to_string().

◆ to_string() [11/44]

std::string blender::gpu::to_string ( const VkBufferMemoryBarrier & vk_buffer_memory_barrier,
int indentation_level )

Definition at line 623 of file vk_to_string.cc.

References to_string(), to_string_vk_access_flags(), and UNUSED_VARS.

◆ to_string() [12/44]

std::string blender::gpu::to_string ( const VkClearAttachment & vk_clear_attachment,
int indentation_level )

Definition at line 636 of file vk_to_string.cc.

References to_string_vk_image_aspect_flags(), and UNUSED_VARS.

◆ to_string() [13/44]

std::string blender::gpu::to_string ( const VkClearDepthStencilValue & vk_clear_depth_stencil_value,
int indentation_level )

Definition at line 646 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [14/44]

std::string blender::gpu::to_string ( const VkClearRect & vk_clear_rect,
int indentation_level )

Definition at line 657 of file vk_to_string.cc.

References to_string().

◆ to_string() [15/44]

std::string blender::gpu::to_string ( const VkExtent2D & vk_extent2_d,
int indentation_level )

Definition at line 670 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [16/44]

std::string blender::gpu::to_string ( const VkExtent3D & vk_extent3_d,
int indentation_level )

Definition at line 680 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [17/44]

const char * blender::gpu::to_string ( const VkFilter vk_filter)

Definition at line 100 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [18/44]

std::string blender::gpu::to_string ( const VkImageBlit & vk_image_blit,
int indentation_level )

Definition at line 691 of file vk_to_string.cc.

References to_string().

◆ to_string() [19/44]

std::string blender::gpu::to_string ( const VkImageCopy & vk_image_copy,
int indentation_level )

Definition at line 706 of file vk_to_string.cc.

References to_string().

◆ to_string() [20/44]

const char * blender::gpu::to_string ( const VkImageLayout vk_image_layout)

Definition at line 115 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [21/44]

std::string blender::gpu::to_string ( const VkImageMemoryBarrier & vk_image_memory_barrier,
int indentation_level )

Definition at line 733 of file vk_to_string.cc.

References to_string(), and to_string_vk_access_flags().

◆ to_string() [22/44]

std::string blender::gpu::to_string ( const VkImageSubresourceLayers & vk_image_subresource_layers,
int indentation_level )

Definition at line 749 of file vk_to_string.cc.

References to_string_vk_image_aspect_flags(), and UNUSED_VARS.

◆ to_string() [23/44]

std::string blender::gpu::to_string ( const VkImageSubresourceRange & vk_image_subresource_range,
int indentation_level )

Definition at line 762 of file vk_to_string.cc.

References to_string_vk_image_aspect_flags(), and UNUSED_VARS.

◆ to_string() [24/44]

const char * blender::gpu::to_string ( const VkIndexType vk_index_type)

Definition at line 175 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [25/44]

std::string blender::gpu::to_string ( const VkMemoryBarrier & vk_memory_barrier,
int indentation_level )

Definition at line 776 of file vk_to_string.cc.

References to_string_vk_access_flags(), and UNUSED_VARS.

◆ to_string() [26/44]

const char * blender::gpu::to_string ( const VkObjectType vk_object_type)

Definition at line 190 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [27/44]

std::string blender::gpu::to_string ( const VkOffset2D & vk_offset2_d,
int indentation_level )

Definition at line 786 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [28/44]

std::string blender::gpu::to_string ( const VkOffset3D & vk_offset3_d,
int indentation_level )

Definition at line 796 of file vk_to_string.cc.

References UNUSED_VARS.

◆ to_string() [29/44]

const char * blender::gpu::to_string ( const VkPipelineBindPoint vk_pipeline_bind_point)

Definition at line 288 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [30/44]

std::string blender::gpu::to_string ( const VkRect2D & vk_rect2_d,
int indentation_level )

Definition at line 807 of file vk_to_string.cc.

References to_string().

◆ to_string() [31/44]

std::string blender::gpu::to_string ( const VkRenderingAttachmentInfo & vk_rendering_attachment_info,
int indentation_level )

Definition at line 838 of file vk_to_string.cc.

References to_string(), and UNUSED_VARS.

◆ to_string() [32/44]

std::string blender::gpu::to_string ( const VkRenderingInfo & vk_rendering_info,
int indentation_level )

Definition at line 854 of file vk_to_string.cc.

References to_string(), and to_string_vk_rendering_flags().

◆ to_string() [33/44]

std::string blender::gpu::to_string ( const VkRenderPassBeginInfo & vk_render_pass_begin_info,
int indentation_level )

Definition at line 822 of file vk_to_string.cc.

References to_string().

◆ to_string() [34/44]

const char * blender::gpu::to_string ( const VkResolveModeFlagBits vk_resolve_mode_flag_bits)

Definition at line 303 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [35/44]

const char * blender::gpu::to_string ( const VkSubpassContents vk_subpass_contents)

Definition at line 327 of file vk_to_string.cc.

References STRINGIFY, and STRINGIFY_ARG.

◆ to_string() [36/44]

const char * blender::gpu::to_string ( ShaderStage stage)

Definition at line 52 of file mtl_shader.mm.

References ANY, COMPUTE, FRAGMENT, stage, and VERTEX.

Referenced by blender::gpu::render_graph::CommandBufferLog::begin_rendering(), blender::gpu::render_graph::CommandBufferLog::bind_descriptor_sets(), blender::gpu::render_graph::CommandBufferLog::bind_pipeline(), blender::gpu::render_graph::CommandBufferLog::blit_image(), blender::gpu::render_graph::CommandBufferLog::clear_attachments(), blender::gpu::render_graph::CommandBufferLog::clear_color_image(), blender::gpu::render_graph::CommandBufferLog::copy_buffer(), blender::gpu::render_graph::CommandBufferLog::copy_buffer_to_image(), blender::gpu::render_graph::CommandBufferLog::copy_image(), blender::gpu::render_graph::CommandBufferLog::copy_image_to_buffer(), blender::gpu::render_graph::VKRenderGraphLink::debug_print(), blender::gpu::render_graph::CommandBufferLog::dispatch_indirect(), blender::gpu::render_graph::CommandBufferLog::fill_buffer(), blender::gpu::MTLShader::finalize(), blender::gpu::GLShader::fragment_interface_declare(), blender::gpu::MTLShader::fragment_interface_declare(), blender::gpu::VKShader::fragment_interface_declare(), blender::gpu::MSLGeneratorInterface::generate_msl_fragment_struct(), blender::gpu::MSLGeneratorInterface::generate_msl_uniform_structs(), blender::gpu::VKShader::geometry_interface_declare(), blender::gpu::GLShader::geometry_layout_declare(), blender::gpu::render_graph::CommandBufferLog::pipeline_barrier(), print_interface(), print_interface_as_attributes(), print_interface_as_struct(), print_resource(), print_resource(), blender::gpu::GLShader::resources_declare(), blender::gpu::VKShader::resources_declare(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), blender::gpu::render_graph::CommandBufferLog::update_buffer(), blender::gpu::GLShader::vertex_interface_declare(), blender::gpu::MTLShader::vertex_interface_declare(), and blender::gpu::VKShader::vertex_interface_declare().

◆ to_string() [37/44]

std::string blender::gpu::to_string ( VkBuffer vk_handle)

Definition at line 23 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [38/44]

std::string blender::gpu::to_string ( VkDescriptorSet vk_handle)

Definition at line 58 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [39/44]

std::string blender::gpu::to_string ( VkFramebuffer vk_handle)

Definition at line 43 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [40/44]

std::string blender::gpu::to_string ( VkImage vk_handle)

Definition at line 28 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [41/44]

std::string blender::gpu::to_string ( VkImageView vk_handle)

Definition at line 33 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [42/44]

std::string blender::gpu::to_string ( VkPipeline vk_handle)

Definition at line 53 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [43/44]

std::string blender::gpu::to_string ( VkPipelineLayout vk_handle)

Definition at line 48 of file vk_to_string.cc.

References to_string_handle().

◆ to_string() [44/44]

std::string blender::gpu::to_string ( VkRenderPass vk_handle)

Definition at line 38 of file vk_to_string.cc.

References to_string_handle().

◆ to_string_handle()

static std::string blender::gpu::to_string_handle ( uint64_t vk_handle)
static

Portable printing of vulkan handles across platforms.

Definition at line 16 of file vk_to_string.cc.

Referenced by to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), to_string(), and to_string().

◆ to_string_msl()

const char * blender::gpu::to_string_msl ( const shader::Interpolation & interp)
inline

◆ to_string_vk_access_flags()

std::string blender::gpu::to_string_vk_access_flags ( const VkAccessFlags vk_access_flags)

◆ to_string_vk_dependency_flags()

std::string blender::gpu::to_string_vk_dependency_flags ( const VkDependencyFlags vk_dependency_flags)

Definition at line 405 of file vk_to_string.cc.

References result, and STRINGIFY.

◆ to_string_vk_image_aspect_flags()

std::string blender::gpu::to_string_vk_image_aspect_flags ( const VkImageAspectFlags vk_image_aspect_flags)

◆ to_string_vk_pipeline_stage_flags()

std::string blender::gpu::to_string_vk_pipeline_stage_flags ( const VkPipelineStageFlags vk_pipeline_stage_flags)

Definition at line 461 of file vk_to_string.cc.

References result, and STRINGIFY.

Referenced by blender::gpu::render_graph::CommandBufferLog::pipeline_barrier().

◆ to_string_vk_rendering_flags()

std::string blender::gpu::to_string_vk_rendering_flags ( const VkRenderingFlags vk_rendering_flags)

Definition at line 524 of file vk_to_string.cc.

References result, and STRINGIFY.

Referenced by to_string().

◆ to_string_vk_shader_stage_flags()

std::string blender::gpu::to_string_vk_shader_stage_flags ( const VkShaderStageFlags vk_shader_stage_flags)

Definition at line 554 of file vk_to_string.cc.

References result, and STRINGIFY.

◆ to_texture_format()

◆ to_vk_attachment_load_op()

static VkAttachmentLoadOp blender::gpu::to_vk_attachment_load_op ( eGPULoadOp load_op)
static

◆ to_vk_attachment_store_op()

static VkAttachmentStoreOp blender::gpu::to_vk_attachment_store_op ( eGPUStoreOp store_op)
static

◆ to_vk_clear_color_value()

VkClearColorValue blender::gpu::to_vk_clear_color_value ( const eGPUDataFormat format,
const void * data )

◆ to_vk_component_swizzle()

VkComponentSwizzle blender::gpu::to_vk_component_swizzle ( const char swizzle)

Definition at line 774 of file vk_common.cc.

References BLI_assert_unreachable.

Referenced by blender::gpu::VKImageView::VKImageView().

◆ to_vk_cull_mode_flags()

VkCullModeFlags blender::gpu::to_vk_cull_mode_flags ( const eGPUFaceCullTest cull_test)

◆ to_vk_descriptor_type()

◆ to_vk_descriptor_type_image()

◆ to_vk_descriptor_type_sampler()

static VkDescriptorType blender::gpu::to_vk_descriptor_type_sampler ( const shader::ImageType & image_type)
static

◆ to_vk_format() [1/3]

◆ to_vk_format() [2/3]

VkFormat blender::gpu::to_vk_format ( const GPUVertCompType type,
const uint32_t size,
GPUVertFetchMode fetch_mode )

◆ to_vk_format() [3/3]

◆ to_vk_format_float()

static VkFormat blender::gpu::to_vk_format_float ( const GPUVertCompType type,
const uint32_t size )
static

◆ to_vk_format_int()

static VkFormat blender::gpu::to_vk_format_int ( const GPUVertCompType type,
const uint32_t size )
static

◆ to_vk_format_norm()

static VkFormat blender::gpu::to_vk_format_norm ( const GPUVertCompType type,
const uint32_t size )
static

◆ to_vk_image_aspect_flag_bits() [1/2]

VkImageAspectFlags blender::gpu::to_vk_image_aspect_flag_bits ( const eGPUFrameBufferBits buffers)

Definition at line 103 of file vk_common.cc.

References buffers, GPU_COLOR_BIT, GPU_DEPTH_BIT, GPU_STENCIL_BIT, and result.

◆ to_vk_image_aspect_flag_bits() [2/2]

◆ to_vk_image_aspect_single_bit()

static VkImageAspectFlags blender::gpu::to_vk_image_aspect_single_bit ( const VkImageAspectFlags format,
bool stencil )
static

◆ to_vk_image_create()

static VkImageCreateFlags blender::gpu::to_vk_image_create ( const eGPUTextureType texture_type,
const eGPUTextureFormatFlag format_flag,
const eGPUTextureUsage usage )
static

◆ to_vk_image_type()

◆ to_vk_image_usage()

static VkImageUsageFlags blender::gpu::to_vk_image_usage ( const eGPUTextureUsage usage,
const eGPUTextureFormatFlag format_flag )
static

◆ to_vk_image_view_type()

◆ to_vk_index_type()

VkIndexType blender::gpu::to_vk_index_type ( const GPUIndexBufType index_type)

◆ to_vk_object_type()

template<typename T >
VkObjectType blender::gpu::to_vk_object_type ( T )

Definition at line 70 of file vk_common.hh.

References BLI_assert_unreachable, T, and VK_EQ_TYPEID.

Referenced by blender::gpu::debug::object_label().

◆ to_vk_primitive_topology()

◆ to_vk_query_type()

VkQueryType blender::gpu::to_vk_query_type ( const GPUQueryType query_type)

Definition at line 672 of file vk_common.cc.

References BLI_assert_unreachable, and GPU_QUERY_OCCLUSION.

Referenced by blender::gpu::VKQueryPool::init().

◆ to_vk_sampler_address_mode()

VkSamplerAddressMode blender::gpu::to_vk_sampler_address_mode ( const GPUSamplerExtendMode extend_mode)

◆ type_of_conversion_float()

◆ type_of_conversion_half()

◆ type_of_conversion_int()

◆ type_of_conversion_r10g10b10a2()

static ConversionType blender::gpu::type_of_conversion_r10g10b10a2 ( eGPUTextureFormat device_format)
static

Definition at line 509 of file vk_data_conversion.cc.

References ELEM, GPU_RGB10_A2, GPU_RGB10_A2UI, PASS_THROUGH, and UNSUPPORTED.

Referenced by host_to_device().

◆ type_of_conversion_r11g11b10()

static ConversionType blender::gpu::type_of_conversion_r11g11b10 ( eGPUTextureFormat device_format)
static

Definition at line 501 of file vk_data_conversion.cc.

References GPU_R11F_G11F_B10F, PASS_THROUGH, and UNSUPPORTED.

Referenced by host_to_device().

◆ type_of_conversion_ubyte()

◆ type_of_conversion_uint()

◆ uint32_t_to_float()

static float blender::gpu::uint32_t_to_float ( uint32_t value)
static

Definition at line 603 of file vk_data_conversion.cc.

Referenced by convert().

◆ unwrap() [1/27]

VKBatch * blender::gpu::unwrap ( Batch * batch)
inline

Definition at line 34 of file vk_batch.hh.

References batch.

Referenced by blender::gpu::VKBackend::compute_dispatch_indirect().

◆ unwrap() [2/27]

static const Context * blender::gpu::unwrap ( const GPUContext * ctx)
inlinestatic

Definition at line 117 of file gpu_context_private.hh.

◆ unwrap() [3/27]

static const DrawList * blender::gpu::unwrap ( const GPUDrawList * vert)
inlinestatic

Definition at line 39 of file gpu_drawlist_private.hh.

◆ unwrap() [4/27]

static const Fence * blender::gpu::unwrap ( const GPUFence * pixbuf)
inlinestatic

Definition at line 188 of file gpu_state_private.hh.

◆ unwrap() [5/27]

static const FrameBuffer * blender::gpu::unwrap ( const GPUFrameBuffer * vert)
inlinestatic

Definition at line 266 of file gpu_framebuffer_private.hh.

◆ unwrap() [6/27]

static const PixelBuffer * blender::gpu::unwrap ( const GPUPixelBuffer * pixbuf)
inlinestatic

Definition at line 361 of file gpu_texture_private.hh.

◆ unwrap() [7/27]

static const Shader * blender::gpu::unwrap ( const GPUShader * vert)
inlinestatic

Definition at line 162 of file gpu_shader_private.hh.

◆ unwrap() [8/27]

static const StorageBuf * blender::gpu::unwrap ( const GPUStorageBuf * storage_buf)
inlinestatic

Definition at line 63 of file gpu_storage_buffer_private.hh.

References storage_buf().

◆ unwrap() [9/27]

static const Texture * blender::gpu::unwrap ( const GPUTexture * vert)
inlinestatic

Definition at line 332 of file gpu_texture_private.hh.

◆ unwrap() [10/27]

static const UniformBuf * blender::gpu::unwrap ( const GPUUniformBuf * vert)
inlinestatic

Definition at line 65 of file gpu_uniform_buffer_private.hh.

◆ unwrap() [11/27]

static VKFrameBuffer * blender::gpu::unwrap ( FrameBuffer * framebuffer)
inlinestatic

Definition at line 153 of file vk_framebuffer.hh.

◆ unwrap() [12/27]

static Context * blender::gpu::unwrap ( GPUContext * ctx)
inlinestatic

Definition at line 113 of file gpu_context_private.hh.

Referenced by blender::gpu::VKContext::active_framebuffer_get(), blender::gpu::MTLDrawList::append(), blender::gpu::VKDrawList::append(), blender::gpu::VKShaderCompiler::batch_is_ready(), blender::gpu::MTLVertBuf::bind_as_texture(), blender::gpu::VKFrameBuffer::blit_to(), blender::gpu::MTLTexture::clear(), blender::gpu::VKFrameBuffer::clear(), blender::gpu::VKStorageBuffer::copy_sub(), blender::gpu::VKTexture::copy_to(), blender::gpu::MTLParallelShaderCompiler::create_compile_threads(), blender::gpu::GLBatch::draw_indirect(), blender::gpu::MTLImmediate::end(), blender::gpu::VKImmediate::end(), GPU_context_active_set(), GPU_context_begin_frame(), GPU_context_discard(), GPU_context_end_frame(), GPU_draw_list_append(), GPU_draw_list_discard(), GPU_draw_list_submit(), GPU_fence_free(), GPU_fence_signal(), GPU_fence_wait(), GPU_framebuffer_bind(), GPU_framebuffer_bind_loadstore(), GPU_framebuffer_bind_no_srgb(), GPU_framebuffer_blit(), GPU_framebuffer_check_valid(), GPU_framebuffer_clear(), GPU_framebuffer_config_array(), GPU_framebuffer_default_size(), GPU_framebuffer_free(), GPU_framebuffer_get_name(), GPU_framebuffer_multi_clear(), GPU_framebuffer_multi_viewports_set(), GPU_framebuffer_py_reference_get(), GPU_framebuffer_py_reference_set(), GPU_framebuffer_read_color(), GPU_framebuffer_read_depth(), GPU_framebuffer_recursive_downsample(), GPU_framebuffer_subpass_transition_array(), gpu_framebuffer_texture_attach_ex(), GPU_framebuffer_texture_detach(), GPU_framebuffer_viewport_get(), GPU_framebuffer_viewport_reset(), GPU_framebuffer_viewport_set(), GPU_offscreen_bind(), GPU_offscreen_draw_to_screen(), GPU_pixel_buffer_free(), GPU_shader_bind(), GPU_shader_constant_bool(), GPU_shader_constant_bool_ex(), GPU_shader_constant_float(), GPU_shader_constant_float_ex(), GPU_shader_constant_int(), GPU_shader_constant_int_ex(), GPU_shader_constant_uint(), GPU_shader_constant_uint_ex(), GPU_shader_free(), GPU_shader_get_name(), GPU_shader_get_program(), GPU_shader_get_ssbo_vertex_fetch_num_verts_per_prim(), GPU_shader_set_parent(), GPU_shader_transform_feedback_disable(), GPU_shader_transform_feedback_enable(), GPU_shader_uniform_float_ex(), GPU_shader_uniform_int_ex(), GPU_shader_uses_ssbo_vertex_fetch(), GPU_shader_warm_cache(), GPU_storagebuf_bind(), GPU_storagebuf_clear(), GPU_storagebuf_copy_sub_from_vertbuf(), GPU_storagebuf_free(), GPU_storagebuf_read(), GPU_storagebuf_sync_as_indirect_buffer(), GPU_storagebuf_sync_to_host(), GPU_storagebuf_unbind(), GPU_storagebuf_update(), GPU_texture_create_view(), GPU_texture_image_bind(), GPU_texture_image_unbind(), GPU_texture_py_reference_get(), GPU_texture_py_reference_set(), GPU_uniformbuf_bind(), GPU_uniformbuf_bind_as_ssbo(), GPU_uniformbuf_clear_to_zero(), GPU_uniformbuf_free(), GPU_uniformbuf_unbind(), GPU_uniformbuf_update(), blender::gpu::VKStateManager::image_bind(), blender::gpu::VKStateManager::image_unbind(), blender::gpu::VKBatch::index_buffer_get(), blender::gpu::GLTexture::init_internal(), blender::gpu::MTLTexture::init_internal(), blender::gpu::VKTexture::init_internal(), blender::gpu::VKTexture::init_internal(), blender::gpu::Texture::init_view(), blender::gpu::VKBatch::instance_buffer_get(), blender::gpu::GLBatch::multi_draw_indirect(), blender::gpu::VKBatch::multi_draw_indirect(), blender::gpu::MTLParallelShaderCompiler::precompile_specializations(), blender::gpu::VKFrameBuffer::read(), blender::gpu::VKFrameBuffer::rendering_ensure(), blender::gpu::MTLDrawList::submit(), blender::gpu::GLFrameBuffer::subpass_transition_impl(), blender::gpu::VKFrameBuffer::subpass_transition_impl(), blender::gpu::MTLFrameBuffer::update_attachments(), blender::gpu::GLVertArray::update_bindings(), blender::gpu::VKVertexAttributeObject::update_bindings(), blender::gpu::VKVertexAttributeObject::update_bindings(), blender::gpu::VKDescriptorSetTracker::update_descriptor_set(), blender::gpu::VKContext::update_pipeline_data(), blender::gpu::VKContext::update_pipeline_data(), blender::gpu::VKFrameBuffer::update_srgb(), blender::gpu::MTLTexture::update_sub(), blender::gpu::VKTexture::update_sub(), and blender::gpu::VKBatch::vertex_buffer_get().

◆ unwrap() [13/27]

static DrawList * blender::gpu::unwrap ( GPUDrawList * vert)
inlinestatic

Definition at line 35 of file gpu_drawlist_private.hh.

◆ unwrap() [14/27]

static Fence * blender::gpu::unwrap ( GPUFence * pixbuf)
inlinestatic

Definition at line 184 of file gpu_state_private.hh.

◆ unwrap() [15/27]

static FrameBuffer * blender::gpu::unwrap ( GPUFrameBuffer * vert)
inlinestatic

Definition at line 262 of file gpu_framebuffer_private.hh.

◆ unwrap() [16/27]

static PixelBuffer * blender::gpu::unwrap ( GPUPixelBuffer * pixbuf)
inlinestatic

Definition at line 357 of file gpu_texture_private.hh.

◆ unwrap() [17/27]

static Shader * blender::gpu::unwrap ( GPUShader * vert)
inlinestatic

Definition at line 158 of file gpu_shader_private.hh.

◆ unwrap() [18/27]

static StorageBuf * blender::gpu::unwrap ( GPUStorageBuf * storage_buf)
inlinestatic

Definition at line 59 of file gpu_storage_buffer_private.hh.

References storage_buf().

◆ unwrap() [19/27]

static Texture * blender::gpu::unwrap ( GPUTexture * vert)
inlinestatic

Definition at line 328 of file gpu_texture_private.hh.

◆ unwrap() [20/27]

static UniformBuf * blender::gpu::unwrap ( GPUUniformBuf * vert)
inlinestatic

Definition at line 61 of file gpu_uniform_buffer_private.hh.

◆ unwrap() [21/27]

static VKIndexBuffer * blender::gpu::unwrap ( IndexBuf * index_buffer)
inlinestatic

Definition at line 47 of file vk_index_buffer.hh.

◆ unwrap() [22/27]

static VKPixelBuffer * blender::gpu::unwrap ( PixelBuffer * pixel_buffer)
inlinestatic

Definition at line 33 of file vk_pixel_buffer.hh.

◆ unwrap() [23/27]

static VKShader & blender::gpu::unwrap ( Shader & shader)
inlinestatic

Definition at line 150 of file vk_shader.hh.

◆ unwrap() [24/27]

static VKShader * blender::gpu::unwrap ( Shader * shader)
inlinestatic

Definition at line 155 of file vk_shader.hh.

◆ unwrap() [25/27]

BLI_INLINE VKStorageBuffer * blender::gpu::unwrap ( StorageBuf * storage_buffer)

Definition at line 53 of file vk_storage_buffer.hh.

◆ unwrap() [26/27]

BLI_INLINE VKTexture * blender::gpu::unwrap ( Texture * tex)

Definition at line 164 of file vk_texture.hh.

References tex.

◆ unwrap() [27/27]

BLI_INLINE VKVertexBuffer * blender::gpu::unwrap ( VertBuf * vertex_buffer)

Definition at line 69 of file vk_vertex_buffer.hh.

◆ validate_data_format()

bool blender::gpu::validate_data_format ( eGPUTextureFormat tex_format,
eGPUDataFormat data_format )
inlineconstexpr

Definition at line 770 of file gpu_texture_private.hh.

References ATTR_FALLTHROUGH, BLI_assert_unreachable, ELEM, GPU_DATA_10_11_11_REV, GPU_DATA_2_10_10_10_REV, GPU_DATA_FLOAT, GPU_DATA_HALF_FLOAT, GPU_DATA_INT, GPU_DATA_UBYTE, GPU_DATA_UINT, GPU_DATA_UINT_24_8, GPU_DEPTH24_STENCIL8, GPU_DEPTH32F_STENCIL8, GPU_DEPTH_COMPONENT16, GPU_DEPTH_COMPONENT24, GPU_DEPTH_COMPONENT32F, GPU_R11F_G11F_B10F, GPU_R16, GPU_R16_SNORM, GPU_R16F, GPU_R16I, GPU_R16UI, GPU_R32F, GPU_R32I, GPU_R32UI, GPU_R8, GPU_R8_SNORM, GPU_R8I, GPU_R8UI, GPU_RG16, GPU_RG16_SNORM, GPU_RG16F, GPU_RG16I, GPU_RG16UI, GPU_RG32F, GPU_RG32I, GPU_RG32UI, GPU_RG8, GPU_RG8_SNORM, GPU_RG8I, GPU_RG8UI, GPU_RGB10_A2, GPU_RGB10_A2UI, GPU_RGB16, GPU_RGB16_SNORM, GPU_RGB16F, GPU_RGB16I, GPU_RGB16UI, GPU_RGB32F, GPU_RGB32I, GPU_RGB32UI, GPU_RGB8, GPU_RGB8_SNORM, GPU_RGB8I, GPU_RGB8UI, GPU_RGB9_E5, GPU_RGBA16, GPU_RGBA16_SNORM, GPU_RGBA16F, GPU_RGBA16I, GPU_RGBA16UI, GPU_RGBA32F, GPU_RGBA32I, GPU_RGBA32UI, GPU_RGBA8, GPU_RGBA8_DXT1, GPU_RGBA8_DXT3, GPU_RGBA8_DXT5, GPU_RGBA8_SNORM, GPU_RGBA8I, GPU_RGBA8UI, GPU_SRGB8, GPU_SRGB8_A8, GPU_SRGB8_A8_DXT1, GPU_SRGB8_A8_DXT3, and GPU_SRGB8_A8_DXT5.

Referenced by blender::gpu::GLTexture::clear(), host_to_device(), blender::gpu::GLTexture::read(), blender::gpu::MTLTexture::read(), blender::gpu::tests::texture_create_upload_read(), blender::gpu::tests::texture_create_upload_read_pixel(), blender::gpu::tests::texture_create_upload_read_with_bias(), blender::gpu::GLTexture::update_sub(), blender::gpu::GLTexture::update_sub(), and blender::gpu::MTLTexture::update_sub().

◆ vbo_bind()

static uint16_t blender::gpu::vbo_bind ( const ShaderInterface * interface,
const GPUVertFormat * format,
uint v_first,
uint v_len,
const bool use_instancing )
static

◆ vma_allocation_flags()

static VmaAllocationCreateFlags blender::gpu::vma_allocation_flags ( GPUUsageType usage)
static

◆ vma_preferred_flags()

static VkMemoryPropertyFlags blender::gpu::vma_preferred_flags ( )
static

Definition at line 43 of file vk_buffer.cc.

Referenced by blender::gpu::VKBuffer::create().

◆ vma_required_flags()

static VkMemoryPropertyFlags blender::gpu::vma_required_flags ( const bool is_host_visible)
static

Definition at line 48 of file vk_buffer.cc.

Referenced by blender::gpu::VKBuffer::create().

◆ wrap() [1/11]

◆ wrap() [2/11]

static GPUDrawList * blender::gpu::wrap ( DrawList * vert)
inlinestatic

Definition at line 31 of file gpu_drawlist_private.hh.

◆ wrap() [3/11]

static GPUFence * blender::gpu::wrap ( Fence * pixbuf)
inlinestatic

Definition at line 180 of file gpu_state_private.hh.

◆ wrap() [4/11]

static GPUFrameBuffer * blender::gpu::wrap ( FrameBuffer * vert)
inlinestatic

Definition at line 258 of file gpu_framebuffer_private.hh.

◆ wrap() [5/11]

static GPUPixelBuffer * blender::gpu::wrap ( PixelBuffer * pixbuf)
inlinestatic

Definition at line 353 of file gpu_texture_private.hh.

◆ wrap() [6/11]

static GPUShader * blender::gpu::wrap ( Shader * vert)
inlinestatic

Definition at line 154 of file gpu_shader_private.hh.

◆ wrap() [7/11]

static GPUStorageBuf * blender::gpu::wrap ( StorageBuf * storage_buf)
inlinestatic

Definition at line 55 of file gpu_storage_buffer_private.hh.

References storage_buf().

◆ wrap() [8/11]

static GPUTexture * blender::gpu::wrap ( Texture * vert)
inlinestatic

Definition at line 324 of file gpu_texture_private.hh.

◆ wrap() [9/11]

static GPUUniformBuf * blender::gpu::wrap ( UniformBuf * vert)
inlinestatic

Definition at line 57 of file gpu_uniform_buffer_private.hh.

◆ wrap() [10/11]

BLI_INLINE Texture * blender::gpu::wrap ( VKTexture * texture)

Definition at line 169 of file vk_texture.hh.

References texture.

◆ wrap() [11/11]

BLI_INLINE UniformBuf * blender::gpu::wrap ( VKUniformBuffer * uniform_buffer)

Definition at line 51 of file vk_uniform_buffer.hh.

◆ write_spirv_to_disk()

static void blender::gpu::write_spirv_to_disk ( VKShaderModule & shader_module)
static

Variable Documentation

◆ BIND_SPACE_IMAGE_OFFSET

int blender::gpu::BIND_SPACE_IMAGE_OFFSET = 512
staticconstexpr

Offset when searching for bindings.

When shaders combine images and samplers, the images have to be offset to find the correct shader input. Both textures and images are stored in the uniform list and their ID can be overlapping.

Definition at line 33 of file vk_state_manager.hh.

Referenced by blender::gpu::VKShaderInterface::init().

◆ DEFAULT_INTERNAL_BUFFER_SIZE

size_t blender::gpu::DEFAULT_INTERNAL_BUFFER_SIZE = 4 * 1024 * 1024
constexpr

◆ DEFAULT_SAMPLER_STATE

◆ g_autoreleasepool

thread_local NSAutoreleasePool* blender::gpu::g_autoreleasepool = nil

◆ g_autoreleasepool_depth

thread_local int blender::gpu::g_autoreleasepool_depth = 0

◆ g_shader_builtin_srgb_is_dirty

bool blender::gpu::g_shader_builtin_srgb_is_dirty = false
static

◆ g_shader_builtin_srgb_transform

int blender::gpu::g_shader_builtin_srgb_transform = 0
static

◆ g_shared_parallel_shader_compiler

MTLParallelShaderCompiler* blender::gpu::g_shared_parallel_shader_compiler = nullptr

◆ g_shared_parallel_shader_compiler_mutex

std::mutex blender::gpu::g_shared_parallel_shader_compiler_mutex

◆ GCaps

◆ GPG

◆ KNOWN_CRASHING_DRIVER

const char* blender::gpu::KNOWN_CRASHING_DRIVER = "instable driver"
static

Definition at line 40 of file vk_backend.cc.

Referenced by missing_capabilities_get().

◆ LOG

◆ MASK_10_BITS

uint32_t blender::gpu::MASK_10_BITS = 0b1111111111
constexpr

Definition at line 843 of file vk_data_conversion.cc.

Referenced by convert().

◆ MASK_11_BITS

uint32_t blender::gpu::MASK_11_BITS = 0b11111111111
constexpr

Definition at line 844 of file vk_data_conversion.cc.

Referenced by convert().

◆ MTL_MAX_FBO_ATTACHED

const int blender::gpu::MTL_MAX_FBO_ATTACHED = 16
static

Definition at line 135 of file mtl_texture.hh.

◆ MTL_MAX_MIPMAP_COUNT

◆ PCI_ID_AMD

int32_t blender::gpu::PCI_ID_AMD = 0x1002
constexpr

Definition at line 262 of file vk_device.cc.

Referenced by blender::gpu::VKDevice::vendor_name().

◆ PCI_ID_APPLE

int32_t blender::gpu::PCI_ID_APPLE = 0x106b
constexpr

Definition at line 264 of file vk_device.cc.

Referenced by blender::gpu::VKDevice::vendor_name().

◆ PCI_ID_ATI

int32_t blender::gpu::PCI_ID_ATI = 0x1022
constexpr

Definition at line 263 of file vk_device.cc.

Referenced by blender::gpu::VKDevice::vendor_name().

◆ PCI_ID_INTEL

int32_t blender::gpu::PCI_ID_INTEL = 0x8086
constexpr

Definition at line 261 of file vk_device.cc.

Referenced by blender::gpu::VKDevice::vendor_name().

◆ PCI_ID_NVIDIA

int32_t blender::gpu::PCI_ID_NVIDIA = 0x10de
constexpr

Definition at line 260 of file vk_device.cc.

Referenced by blender::gpu::VKDevice::vendor_name().

◆ RESTART_INDEX

uint32_t blender::gpu::RESTART_INDEX = 0xFFFFFFFF
constexpr

Value for invisible elements in a GPU_PRIM_POINTS index buffer.

Definition at line 22 of file GPU_index_buffer.hh.

Referenced by GPU_indexbuf_init_ex().

◆ SHIFT_B

uint8_t blender::gpu::SHIFT_B = 22
constexpr

Definition at line 845 of file vk_data_conversion.cc.

Referenced by convert(), and convert().

◆ SHIFT_G

uint8_t blender::gpu::SHIFT_G = 11
constexpr

Definition at line 846 of file vk_data_conversion.cc.

Referenced by convert(), and convert().

◆ SHIFT_R

uint8_t blender::gpu::SHIFT_R = 0
constexpr

Definition at line 847 of file vk_data_conversion.cc.

Referenced by convert(), and convert().

◆ VISIBILITY_COUNT_PER_BUFFER

const size_t blender::gpu::VISIBILITY_COUNT_PER_BUFFER = 512
static

◆ VISIBILITY_RESULT_SIZE_IN_BYTES

const size_t blender::gpu::VISIBILITY_RESULT_SIZE_IN_BYTES = 8
static

Definition at line 17 of file mtl_query.mm.

Referenced by blender::gpu::MTLQueryPool::begin_query().