Blender V4.3
blender::gpu::MTLTexture Class Reference

#include <mtl_texture.hh>

Inherits blender::gpu::Texture.

Public Member Functions

uint gl_bindcode_get () const override
 
const char * get_name ()
 
bool has_custom_swizzle ()
 
id< MTLBufferget_vertex_buffer () const
 
const intget_texture_metdata_ptr () const
 
Alias resource access to buffer backed content using Storage Buffer.
MTLStorageBufget_storagebuf ()
 
- Public Member Functions inherited from blender::gpu::Texture
int width_get () const
 
int height_get () const
 
int depth_get () const
 
eGPUTextureUsage usage_get () const
 
void mip_size_get (int mip, int r_size[3]) const
 
int mip_width_get (int mip) const
 
int mip_height_get (int mip) const
 
int mip_depth_get (int mip) const
 
int dimensions_count () const
 
int layer_count () const
 
int mip_count () const
 
eGPUTextureFormat format_get () const
 
eGPUTextureFormatFlag format_flag_get () const
 
eGPUTextureType type_get () const
 
GPUAttachmentType attachment_type (int slot) const
 
 Texture (const char *name)
 
virtual ~Texture ()
 
bool init_1D (int w, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_2D (int w, int h, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_3D (int w, int h, int d, int mip_len, eGPUTextureFormat format)
 
bool init_cubemap (int w, int layers, int mip_len, eGPUTextureFormat format)
 
bool init_buffer (VertBuf *vbo, eGPUTextureFormat format)
 
bool init_view (GPUTexture *src, eGPUTextureFormat format, eGPUTextureType type, int mip_start, int mip_len, int layer_start, int layer_len, bool cube_as_array, bool use_stencil)
 
void usage_set (eGPUTextureUsage usage_flags)
 
void attach_to (FrameBuffer *fb, GPUAttachmentType type)
 
void detach_from (FrameBuffer *fb)
 
void update (eGPUDataFormat format, const void *data)
 

Friends

class MTLContext
 
class MTLStateManager
 
class MTLFrameBuffer
 
class MTLStorageBuf
 

Creation & Deletion

 MTLTexture (const char *name)
 
 MTLTexture (const char *name, eGPUTextureFormat format, eGPUTextureType type, id< MTLTexture > metal_texture)
 
 ~MTLTexture ()
 

Operations

void update_sub (int mip, int offset[3], int extent[3], eGPUDataFormat type, const void *data) override
 
void update_sub (int offset[3], int extent[3], eGPUDataFormat format, GPUPixelBuffer *pixbuf) override
 
void generate_mipmap () override
 
void copy_to (Texture *dst) override
 
void clear (eGPUDataFormat format, const void *data) override
 
void swizzle_set (const char swizzle_mask[4]) override
 
void mip_range_set (int min, int max) override
 
void * read (int mip, eGPUDataFormat type) override
 
bool init_internal () override
 
bool init_internal (VertBuf *vbo) override
 
bool init_internal (GPUTexture *src, int mip_offset, int layer_offset, bool use_stencil) override
 

SRGB Handling.

bool is_format_srgb ()
 

METAL Resource creation and management

bool texture_is_baked ()
 

Additional Inherited Members

- Public Attributes inherited from blender::gpu::Texture
GPUSamplerState sampler_state = GPUSamplerState::default_sampler()
 
int refcount = 1
 
int src_w = 0
 
int src_h = 0
 
void ** py_ref = nullptr
 
- Protected Attributes inherited from blender::gpu::Texture
int w_
 
int h_
 
int d_
 
eGPUTextureFormat format_
 
eGPUTextureFormatFlag format_flag_
 
eGPUTextureType type_
 
eGPUTextureUsage gpu_image_usage_flags_
 
int mipmaps_ = -1
 
int mip_min_ = 0
 
int mip_max_ = 0
 
char name_ [DEBUG_NAME_LEN]
 
GPUAttachmentType fb_attachment_ [GPU_TEX_MAX_FBO_ATTACHED]
 
FrameBufferfb_ [GPU_TEX_MAX_FBO_ATTACHED]
 

Detailed Description

Definition at line 174 of file mtl_texture.hh.

Constructor & Destructor Documentation

◆ MTLTexture() [1/2]

blender::gpu::gpu::MTLTexture::MTLTexture ( const char * name)

Definition at line 67 of file mtl_texture.mm.

◆ MTLTexture() [2/2]

blender::gpu::gpu::MTLTexture::MTLTexture ( const char * name,
eGPUTextureFormat format,
eGPUTextureType type,
id< MTLTexture > metal_texture )

◆ ~MTLTexture()

blender::gpu::gpu::MTLTexture::~MTLTexture ( )

Member Function Documentation

◆ clear()

◆ copy_to()

◆ generate_mipmap()

◆ get_name()

const char * blender::gpu::MTLTexture::get_name ( )
inline

◆ get_storagebuf()

MTLStorageBuf * blender::gpu::gpu::MTLTexture::get_storagebuf ( )

◆ get_texture_metdata_ptr()

const int * blender::gpu::MTLTexture::get_texture_metdata_ptr ( ) const
inline

◆ get_vertex_buffer()

id< MTLBuffer > blender::gpu::MTLTexture::get_vertex_buffer ( ) const
inline

Definition at line 305 of file mtl_texture.hh.

Referenced by blender::gpu::MTLVertBuf::bind_as_texture().

◆ gl_bindcode_get()

uint blender::gpu::MTLTexture::gl_bindcode_get ( ) const
overridevirtual

Implements blender::gpu::Texture.

◆ has_custom_swizzle()

bool blender::gpu::MTLTexture::has_custom_swizzle ( )
inline

Definition at line 297 of file mtl_texture.hh.

Referenced by blender::gpu::MTLContext::ensure_texture_bindings().

◆ init_internal() [1/3]

bool blender::gpu::gpu::MTLTexture::init_internal ( )
overrideprotectedvirtual

Implements blender::gpu::Texture.

Definition at line 2055 of file mtl_texture.mm.

References GPU_max_texture_3d_size(), and blender::gpu::GPU_TEXTURE_3D.

◆ init_internal() [2/3]

bool blender::gpu::gpu::MTLTexture::init_internal ( GPUTexture * src,
int mip_offset,
int layer_offset,
bool use_stencil )
overrideprotectedvirtual

◆ init_internal() [3/3]

◆ is_format_srgb()

bool blender::gpu::MTLTexture::is_format_srgb ( )

◆ mip_range_set()

void blender::gpu::gpu::MTLTexture::mip_range_set ( int min,
int max )
overridevirtual

◆ read()

◆ swizzle_set()

void blender::gpu::gpu::MTLTexture::swizzle_set ( const char swizzle_mask[4])
overridevirtual

Implements blender::gpu::Texture.

Definition at line 1510 of file mtl_texture.mm.

References blender::gpu::swizzle_to_mtl().

◆ texture_is_baked()

bool blender::gpu::gpu::MTLTexture::texture_is_baked ( )

Definition at line 2219 of file mtl_texture.mm.

◆ update_sub() [1/2]

void blender::gpu::gpu::MTLTexture::update_sub ( int mip,
int offset[3],
int extent[3],
eGPUDataFormat type,
const void * data )
overridevirtual

Implements blender::gpu::Texture.

Definition at line 491 of file mtl_texture.mm.

References blender::gpu::MTLBufferPool::allocate_with_data(), blender::gpu::MTLComputeState::bind_compute_buffer(), blender::gpu::MTLComputeState::bind_compute_bytes(), blender::gpu::MTLComputeState::bind_compute_texture(), blender::gpu::MTLComputeState::bind_pso(), BLI_assert, BLI_assert_unreachable, blender::gpu::MTLContext::device, divide_ceil_u(), blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLCommandBufferManager::ensure_begin_compute_encoder(), blender::gpu::MTLBuffer::free(), blender::gpu::MTLContext::get(), blender::gpu::MTLCommandBufferManager::get_compute_state(), blender::gpu::MTLContext::get_global_memory_manager(), blender::gpu::MTLBuffer::get_metal_buffer(), blender::gpu::get_mtl_format_bytesize(), blender::gpu::get_mtl_format_num_components(), GPU_DATA_10_11_11_REV, GPU_DATA_2_10_10_10_REV, GPU_DATA_UINT_24_8, blender::gpu::GPU_FORMAT_COMPRESSED, blender::gpu::GPU_FORMAT_DEPTH, GPU_SRGB8_A8, blender::gpu::GPU_TEXTURE_1D, blender::gpu::GPU_TEXTURE_1D_ARRAY, blender::gpu::GPU_TEXTURE_2D, blender::gpu::GPU_TEXTURE_2D_ARRAY, blender::gpu::GPU_TEXTURE_3D, blender::gpu::GPU_TEXTURE_ARRAY, blender::gpu::GPU_TEXTURE_BUFFER, blender::gpu::GPU_TEXTURE_CUBE, blender::gpu::GPU_TEXTURE_CUBE_ARRAY, blender::gpu::gpu_texture_format_to_metal(), GPU_TEXTURE_USAGE_FORMAT_VIEW, GPU_TEXTURE_USAGE_SHADER_WRITE, blender::gpu::MTLContext::main_command_buffer, max_ulul(), blender::gpu::mtl_format_get_writeable_view_format(), MTL_LOG_ERROR, MTL_LOG_WARNING, params, blender::gpu::MTLContext::pipeline_state, blender::gpu::MTLCommandBufferManager::submit(), blender::gpu::tex_data_format_to_msl_texture_template_type(), blender::gpu::tex_data_format_to_msl_type_str(), blender::gpu::to_block_size(), blender::gpu::to_bytesize(), blender::gpu::to_component_len(), and blender::gpu::MTLContextGlobalShaderPipelineState::unpack_row_length.

◆ update_sub() [2/2]

Friends And Related Symbol Documentation

◆ MTLContext

friend class MTLContext
friend

Definition at line 175 of file mtl_texture.hh.

◆ MTLFrameBuffer

friend class MTLFrameBuffer
friend

Definition at line 177 of file mtl_texture.hh.

◆ MTLStateManager

friend class MTLStateManager
friend

Definition at line 176 of file mtl_texture.hh.

◆ MTLStorageBuf

friend class MTLStorageBuf
friend

Definition at line 178 of file mtl_texture.hh.


The documentation for this class was generated from the following files: