From 3b75ca2f60f43d7450f5b1570bfedea4d1ed4b1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Foucault?= Date: Fri, 25 Feb 2022 01:05:09 +0100 Subject: GPUTexture: Expose layer & mip count --- source/blender/gpu/GPU_texture.h | 2 ++ source/blender/gpu/intern/gpu_texture.cc | 12 ++++++++++++ source/blender/gpu/intern/gpu_texture_private.hh | 5 +++++ 3 files changed, 19 insertions(+) (limited to 'source') diff --git a/source/blender/gpu/GPU_texture.h b/source/blender/gpu/GPU_texture.h index 734d407d011..0c7f1c1cbd4 100644 --- a/source/blender/gpu/GPU_texture.h +++ b/source/blender/gpu/GPU_texture.h @@ -308,6 +308,8 @@ int GPU_texture_dimensions(const GPUTexture *tex); int GPU_texture_width(const GPUTexture *tex); int GPU_texture_height(const GPUTexture *tex); +int GPU_texture_layer_count(const GPUTexture *tex); +int GPU_texture_mip_count(const GPUTexture *tex); int GPU_texture_orig_width(const GPUTexture *tex); int GPU_texture_orig_height(const GPUTexture *tex); void GPU_texture_orig_size_set(GPUTexture *tex, int w, int h); diff --git a/source/blender/gpu/intern/gpu_texture.cc b/source/blender/gpu/intern/gpu_texture.cc index 9e6a6f75391..285ef87585f 100644 --- a/source/blender/gpu/intern/gpu_texture.cc +++ b/source/blender/gpu/intern/gpu_texture.cc @@ -142,6 +142,8 @@ bool Texture::init_view(const GPUTexture *src_, w_ = src->w_; h_ = src->h_; d_ = src->d_; + layer_start = min_ii(layer_start, src->layer_count() - 1); + layer_len = min_ii(layer_len, (src->layer_count() - layer_start)); switch (type_) { case GPU_TEXTURE_1D_ARRAY: h_ = layer_len; @@ -596,6 +598,16 @@ int GPU_texture_height(const GPUTexture *tex) return reinterpret_cast(tex)->height_get(); } +int GPU_texture_layer_count(const GPUTexture *tex) +{ + return reinterpret_cast(tex)->layer_count(); +} + +int GPU_texture_mip_count(const GPUTexture *tex) +{ + return reinterpret_cast(tex)->mip_count(); +} + int GPU_texture_orig_width(const GPUTexture *tex) { return reinterpret_cast(tex)->src_w; diff --git a/source/blender/gpu/intern/gpu_texture_private.hh b/source/blender/gpu/intern/gpu_texture_private.hh index ec11fab421c..2a7fc074046 100644 --- a/source/blender/gpu/intern/gpu_texture_private.hh +++ b/source/blender/gpu/intern/gpu_texture_private.hh @@ -208,6 +208,11 @@ class Texture { } } + int mip_count() const + { + return mipmaps_; + } + eGPUTextureFormat format_get() const { return format_; -- cgit v1.2.3