|
Blender V5.0
|
#include <mtl_texture.hh>
Inherits blender::gpu::Texture.
Public Member Functions | |
| const char * | get_name () |
| bool | has_custom_swizzle () |
| id< MTLBuffer > | get_vertex_buffer () const |
| const int * | get_texture_metadata_ptr () const |
Alias resource access to buffer backed content using Storage Buffer. | |
| MTLStorageBuf * | get_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 |
| TextureFormat | format_get () const |
| GPUTextureFormatFlag | format_flag_get () const |
| GPUTextureType | 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, TextureFormat format) |
| bool | init_2D (int w, int h, int layers, int mip_len, TextureFormat format) |
| bool | init_3D (int w, int h, int d, int mip_len, TextureFormat format) |
| bool | init_cubemap (int w, int layers, int mip_len, TextureFormat format) |
| bool | init_buffer (VertBuf *vbo, TextureFormat format) |
| bool | init_view (Texture *src, TextureFormat format, GPUTextureType 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, TextureFormat format, GPUTextureType type, id< MTLTexture > metal_texture) | |
| ~MTLTexture () override | |
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 (gpu::Texture *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_ |
| TextureFormat | format_ |
| GPUTextureFormatFlag | format_flag_ |
| GPUTextureType | 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] |
| FrameBuffer * | fb_ [GPU_TEX_MAX_FBO_ATTACHED] |
Definition at line 178 of file mtl_texture.hh.
| blender::gpu::gpu::MTLTexture::MTLTexture | ( | const char * | name | ) |
Definition at line 68 of file mtl_texture.mm.
References name, and blender::gpu::Texture::Texture().
| blender::gpu::gpu::MTLTexture::MTLTexture | ( | const char * | name, |
| TextureFormat | format, | ||
| GPUTextureType | type, | ||
| id< MTLTexture > | metal_texture ) |
Definition at line 74 of file mtl_texture.mm.
References BLI_assert, blender::gpu::Texture::gpu_image_usage_flags_, blender::gpu::GPU_TEXTURE_2D, blender::gpu::gpu_usage_from_mtl(), blender::gpu::Texture::init_2D(), name, blender::gpu::Texture::Texture(), and blender::gpu::Texture::type_.
|
override |
Definition at line 101 of file mtl_texture.mm.
References blender::gpu::MTLContext::get(), MTLContext, reset(), blender::gpu::Context::state_manager, and blender::gpu::StateManager::texture_unbind().
|
overridevirtual |
Perform compute-based clear.
Implements blender::gpu::Texture.
Definition at line 1367 of file mtl_texture.mm.
References blender::gpu::Texture::attachment_type(), blender::gpu::MTLComputeState::bind_compute_bytes(), blender::gpu::MTLComputeState::bind_compute_texture(), blender::gpu::MTLComputeState::bind_pso(), BLI_assert, BLI_assert_msg, data, ELEM, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLCommandBufferManager::ensure_begin_compute_encoder(), fb(), blender::gpu::Texture::format_, blender::gpu::MTLContext::get(), blender::gpu::MTLCommandBufferManager::get_compute_state(), GPU_framebuffer_active_get(), GPU_framebuffer_bind(), blender::gpu::GPU_TEXTURE_1D, blender::gpu::GPU_TEXTURE_1D_ARRAY, blender::gpu::Texture::h_, i, blender::gpu::MTLContext::main_command_buffer, MTL_LOG_ERROR, MTLContext, params, blender::gpu::MTLContext::pipeline_state, blender::gpu::tex_data_format_to_msl_texture_template_type(), blender::gpu::tex_data_format_to_msl_type_str(), blender::gpu::to_bytesize(), blender::gpu::to_component_len(), blender::gpu::Texture::type_, blender::gpu::MTLContextGlobalShaderPipelineState::unpack_row_length, and blender::gpu::Texture::w_.
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1303 of file mtl_texture.mm.
References BLI_assert, blender::gpu::Texture::d_, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::Texture::format_, blender::gpu::MTLContext::get(), blender::gpu::GPU_TEXTURE_2D_ARRAY, blender::gpu::GPU_TEXTURE_3D, blender::gpu::GPU_TEXTURE_CUBE_ARRAY, blender::gpu::Texture::h_, blender::gpu::MTLContext::main_command_buffer, blender::gpu::Texture::mip_size_get(), MTLContext, blender::gpu::Texture::Texture(), blender::gpu::Texture::type_, UNUSED_VARS_NDEBUG, and blender::gpu::Texture::w_.
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1254 of file mtl_texture.mm.
References BLI_assert, BLI_assert_msg, blender::gpu::MTLContext::device, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::Texture::format_, blender::gpu::Texture::format_flag_, G, G_DEBUG_GPU, blender::gpu::MTLContext::get(), blender::gpu::GPU_FORMAT_COMPRESSED, blender::gpu::MTLContext::main_command_buffer, blender::gpu::Texture::mipmaps_, MTL_LOG_ERROR, MTL_LOG_WARNING, and MTLContext.
|
inline |
Definition at line 293 of file mtl_texture.hh.
References blender::gpu::Texture::name_.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), blender::gpu::MTLContext::ensure_texture_bindings(), init_internal(), and blender::gpu::MTLContext::texture_bind().
| MTLStorageBuf * blender::gpu::gpu::MTLTexture::get_storagebuf | ( | ) |
Definition at line 2575 of file mtl_texture.mm.
References BLI_assert, BLI_assert_msg, length(), and MTLStorageBuf.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
|
inline |
Definition at line 316 of file mtl_texture.hh.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings(), and blender::gpu::MTLContext::ensure_texture_bindings().
|
inline |
Definition at line 306 of file mtl_texture.hh.
Referenced by blender::gpu::MTLVertBuf::bind_as_texture().
|
inline |
Definition at line 298 of file mtl_texture.hh.
Referenced by blender::gpu::MTLContext::ensure_texture_bindings().
|
overrideprotectedvirtual |
Implements blender::gpu::Texture.
Definition at line 2059 of file mtl_texture.mm.
References blender::gpu::Texture::d_, GPU_max_texture_3d_size(), blender::gpu::GPU_TEXTURE_3D, blender::gpu::Texture::h_, blender::gpu::Texture::type_, and blender::gpu::Texture::w_.
|
overrideprotectedvirtual |
Implements blender::gpu::Texture.
Definition at line 2174 of file mtl_texture.mm.
References BLI_assert, ELEM, blender::gpu::Texture::format_, and GPU_texture_usage().
|
overrideprotectedvirtual |
Implements blender::gpu::Texture.
Definition at line 2071 of file mtl_texture.mm.
References blender::gpu::MTLVertBuf::bind(), BLI_assert, BLI_assert_msg, ceil_to_multiple_ul(), blender::gpu::MTLContext::device, blender::gpu::MTLVertBuf::flag_used(), blender::gpu::Texture::format_, blender::gpu::MTLContext::get(), blender::gpu::get_mtl_format_bytesize(), get_name(), blender::gpu::GPU_TEXTURE_BUFFER, blender::gpu::gpu_texture_format_to_metal(), GPU_vertbuf_get_format(), init(), mip_range_set(), blender::gpu::Texture::mipmaps_, MTL_LOG_WARNING, MTLContext, blender::gpu::Texture::type_, blender::gpu::VertBuf::vertex_len, and blender::gpu::Texture::w_.
| bool blender::gpu::MTLTexture::is_format_srgb | ( | ) |
Definition at line 2595 of file mtl_texture.mm.
References blender::gpu::Texture::format_.
Referenced by blender::gpu::MTLFrameBuffer::bake_render_pass_descriptor().
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1537 of file mtl_texture.mm.
References BLI_assert, blender::gpu::GPU_TEXTURE_1D, blender::gpu::GPU_TEXTURE_1D_ARRAY, blender::gpu::GPU_TEXTURE_BUFFER, max, min, blender::gpu::Texture::mip_max_, blender::gpu::Texture::mip_min_, blender::gpu::Texture::mipmaps_, MTL_LOG_ERROR, and blender::gpu::Texture::type_.
Referenced by init_internal().
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1570 of file mtl_texture.mm.
References BLI_assert, data, blender::gpu::Texture::format_, blender::gpu::Texture::format_flag_, blender::gpu::GPU_FORMAT_COMPRESSED, max_ii(), MEM_mallocN(), blender::gpu::Texture::mip_size_get(), blender::gpu::Texture::mipmaps_, MTL_LOG_WARNING, blender::gpu::to_bytesize(), blender::gpu::to_component_len(), and blender::gpu::validate_data_format().
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1520 of file mtl_texture.mm.
References blender::gpu::swizzle_to_mtl().
| bool blender::gpu::gpu::MTLTexture::texture_is_baked | ( | ) |
Definition at line 2223 of file mtl_texture.mm.
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 488 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::Texture::d_, blender::MutableSpan< T >::data(), blender::Span< T >::data(), data, blender::gpu::MTLContext::device, blender::gpu::Texture::dimensions_count(), divide_ceil_u(), blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::MTLCommandBufferManager::ensure_begin_compute_encoder(), blender::math::float_to_half_make_finite_array(), blender::gpu::Texture::format_, blender::gpu::Texture::format_flag_, 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_FLOAT, GPU_DATA_HALF_FLOAT, GPU_DATA_UINT_24_8_DEPRECATED, blender::gpu::GPU_FORMAT_COMPRESSED, blender::gpu::GPU_FORMAT_DEPTH, 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::Texture::h_, i, blender::gpu::is_half_float(), blender::gpu::MTLContext::main_command_buffer, max_ii(), max_ulul(), MEM_mallocN_aligned(), blender::gpu::Texture::mip_max_, blender::gpu::Texture::mip_min_, blender::gpu::mtl_format_get_writeable_view_format(), MTL_LOG_ERROR, MTL_LOG_WARNING, MTLContext, blender::gpu::Texture::name_, blender::threading::parallel_for(), params, blender::gpu::MTLContext::pipeline_state, blender::IndexRange::size(), blender::MutableSpan< T >::slice(), blender::Span< T >::slice(), 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(), blender::gpu::Texture::type_, blender::gpu::MTLContextGlobalShaderPipelineState::unpack_row_length, and blender::gpu::Texture::w_.
|
overridevirtual |
Implements blender::gpu::Texture.
Definition at line 1169 of file mtl_texture.mm.
References BLI_assert, blender::gpu::MTLCommandBufferManager::ensure_begin_blit_encoder(), blender::gpu::Texture::format_, blender::gpu::MTLContext::get(), blender::gpu::MTLPixelBuffer::get_metal_buffer(), blender::gpu::GPU_TEXTURE_2D, blender::gpu::MTLContext::main_command_buffer, MTLContext, blender::gpu::to_bytesize(), blender::gpu::to_component_len(), blender::gpu::Texture::type_, blender::gpu::unwrap(), and blender::gpu::validate_data_format().
|
friend |
Definition at line 179 of file mtl_texture.hh.
References MTLContext.
Referenced by clear(), copy_to(), generate_mipmap(), init_internal(), MTLContext, update_sub(), update_sub(), and ~MTLTexture().
|
friend |
Definition at line 181 of file mtl_texture.hh.
References MTLFrameBuffer.
Referenced by MTLFrameBuffer.
|
friend |
Definition at line 180 of file mtl_texture.hh.
References MTLStateManager.
Referenced by MTLStateManager.
|
friend |
Definition at line 182 of file mtl_texture.hh.
References MTLStorageBuf.
Referenced by get_storagebuf(), and MTLStorageBuf.