diff --git a/source/blender/blenlib/intern/array_utils.cc b/source/blender/blenlib/intern/array_utils.cc index ff190f2513a..89b63dcc4d3 100644 --- a/source/blender/blenlib/intern/array_utils.cc +++ b/source/blender/blenlib/intern/array_utils.cc @@ -113,13 +113,14 @@ BooleanMix booleans_mix_calc(const VArray &varray, const IndexRange range_ } const Span slice = span.slice(range); - const bool first = slice.first(); - for (const bool value : slice.drop_front(1)) { - if (value != first) { + const bool compare_value = (init == BooleanMix::None) ? slice.first() : + (init == BooleanMix::AllTrue); + for (const bool value : slice) { + if (value != compare_value) { return BooleanMix::Mixed; } } - return first ? BooleanMix::AllTrue : BooleanMix::AllFalse; + return compare_value ? BooleanMix::AllTrue : BooleanMix::AllFalse; }, [&](BooleanMix a, BooleanMix b) { return (a == b) ? a : BooleanMix::Mixed; }); } diff --git a/source/blender/gpu/dummy/dummy_backend.hh b/source/blender/gpu/dummy/dummy_backend.hh index 3cd88bacb41..566bb679c1d 100644 --- a/source/blender/gpu/dummy/dummy_backend.hh +++ b/source/blender/gpu/dummy/dummy_backend.hh @@ -63,7 +63,7 @@ class DummyBackend : public GPUBackend { { return nullptr; } - PixelBuffer *pixelbuf_alloc(uint /*size*/) override + PixelBuffer *pixelbuf_alloc(size_t /*size*/) override { return nullptr; } @@ -79,11 +79,11 @@ class DummyBackend : public GPUBackend { { return nullptr; } - UniformBuf *uniformbuf_alloc(int /*size*/, const char * /*name*/) override + UniformBuf *uniformbuf_alloc(size_t /*size*/, const char * /*name*/) override { return nullptr; } - StorageBuf *storagebuf_alloc(int /*size*/, + StorageBuf *storagebuf_alloc(size_t /*size*/, GPUUsageType /*usage*/, const char * /*name*/) override { diff --git a/source/blender/gpu/intern/gpu_backend.hh b/source/blender/gpu/intern/gpu_backend.hh index d9c824cf01e..fe938ebb6df 100644 --- a/source/blender/gpu/intern/gpu_backend.hh +++ b/source/blender/gpu/intern/gpu_backend.hh @@ -48,12 +48,12 @@ class GPUBackend { virtual Fence *fence_alloc() = 0; virtual FrameBuffer *framebuffer_alloc(const char *name) = 0; virtual IndexBuf *indexbuf_alloc() = 0; - virtual PixelBuffer *pixelbuf_alloc(uint size) = 0; + virtual PixelBuffer *pixelbuf_alloc(size_t size) = 0; virtual QueryPool *querypool_alloc() = 0; virtual Shader *shader_alloc(const char *name) = 0; virtual Texture *texture_alloc(const char *name) = 0; - virtual UniformBuf *uniformbuf_alloc(int size, const char *name) = 0; - virtual StorageBuf *storagebuf_alloc(int size, GPUUsageType usage, const char *name) = 0; + virtual UniformBuf *uniformbuf_alloc(size_t size, const char *name) = 0; + virtual StorageBuf *storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) = 0; virtual VertBuf *vertbuf_alloc() = 0; /* Render Frame Coordination -- diff --git a/source/blender/gpu/metal/mtl_backend.hh b/source/blender/gpu/metal/mtl_backend.hh index ae77d9e99d0..b22bdf8f711 100644 --- a/source/blender/gpu/metal/mtl_backend.hh +++ b/source/blender/gpu/metal/mtl_backend.hh @@ -64,12 +64,12 @@ class MTLBackend : public GPUBackend { Fence *fence_alloc() override; FrameBuffer *framebuffer_alloc(const char *name) override; IndexBuf *indexbuf_alloc() override; - PixelBuffer *pixelbuf_alloc(uint size) override; + PixelBuffer *pixelbuf_alloc(size_t size) override; QueryPool *querypool_alloc() override; Shader *shader_alloc(const char *name) override; Texture *texture_alloc(const char *name) override; - UniformBuf *uniformbuf_alloc(int size, const char *name) override; - StorageBuf *storagebuf_alloc(int size, GPUUsageType usage, const char *name) override; + UniformBuf *uniformbuf_alloc(size_t size, const char *name) override; + StorageBuf *storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) override; VertBuf *vertbuf_alloc() override; /* Render Frame Coordination. */ diff --git a/source/blender/gpu/metal/mtl_backend.mm b/source/blender/gpu/metal/mtl_backend.mm index 76169863a9f..b10c314b7e6 100644 --- a/source/blender/gpu/metal/mtl_backend.mm +++ b/source/blender/gpu/metal/mtl_backend.mm @@ -73,7 +73,7 @@ IndexBuf *MTLBackend::indexbuf_alloc() return new MTLIndexBuf(); }; -PixelBuffer *MTLBackend::pixelbuf_alloc(uint size) +PixelBuffer *MTLBackend::pixelbuf_alloc(size_t size) { return new MTLPixelBuffer(size); }; @@ -93,12 +93,12 @@ Texture *MTLBackend::texture_alloc(const char *name) return new gpu::MTLTexture(name); } -UniformBuf *MTLBackend::uniformbuf_alloc(int size, const char *name) +UniformBuf *MTLBackend::uniformbuf_alloc(size_t size, const char *name) { return new MTLUniformBuf(size, name); }; -StorageBuf *MTLBackend::storagebuf_alloc(int size, GPUUsageType usage, const char *name) +StorageBuf *MTLBackend::storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) { return new MTLStorageBuf(size, usage, name); } diff --git a/source/blender/gpu/metal/mtl_texture.hh b/source/blender/gpu/metal/mtl_texture.hh index 76aff9b88a9..d97e8cffd3b 100644 --- a/source/blender/gpu/metal/mtl_texture.hh +++ b/source/blender/gpu/metal/mtl_texture.hh @@ -481,7 +481,7 @@ class MTLPixelBuffer : public PixelBuffer { id buffer_ = nil; public: - MTLPixelBuffer(uint size); + MTLPixelBuffer(size_t size); ~MTLPixelBuffer(); void *map() override; diff --git a/source/blender/gpu/metal/mtl_texture.mm b/source/blender/gpu/metal/mtl_texture.mm index 71d75a3a2e8..96037e6a14f 100644 --- a/source/blender/gpu/metal/mtl_texture.mm +++ b/source/blender/gpu/metal/mtl_texture.mm @@ -2596,7 +2596,7 @@ id MTLTexture::get_non_srgb_handle() /** \name Pixel Buffer * \{ */ -MTLPixelBuffer::MTLPixelBuffer(uint size) : PixelBuffer(size) +MTLPixelBuffer::MTLPixelBuffer(size_t size) : PixelBuffer(size) { /* Ensure buffer satisfies the alignment of 256 bytes for copying * data between buffers and textures. As specified in: diff --git a/source/blender/gpu/opengl/gl_backend.hh b/source/blender/gpu/opengl/gl_backend.hh index 4635de1d402..13dfd9a3774 100644 --- a/source/blender/gpu/opengl/gl_backend.hh +++ b/source/blender/gpu/opengl/gl_backend.hh @@ -106,7 +106,7 @@ class GLBackend : public GPUBackend { return new GLIndexBuf(); }; - PixelBuffer *pixelbuf_alloc(uint size) override + PixelBuffer *pixelbuf_alloc(size_t size) override { return new GLPixelBuffer(size); }; @@ -126,12 +126,12 @@ class GLBackend : public GPUBackend { return new GLTexture(name); }; - UniformBuf *uniformbuf_alloc(int size, const char *name) override + UniformBuf *uniformbuf_alloc(size_t size, const char *name) override { return new GLUniformBuf(size, name); }; - StorageBuf *storagebuf_alloc(int size, GPUUsageType usage, const char *name) override + StorageBuf *storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) override { return new GLStorageBuf(size, usage, name); }; diff --git a/source/blender/gpu/opengl/gl_texture.cc b/source/blender/gpu/opengl/gl_texture.cc index a99d55df2e6..0c06c200ad8 100644 --- a/source/blender/gpu/opengl/gl_texture.cc +++ b/source/blender/gpu/opengl/gl_texture.cc @@ -768,7 +768,7 @@ uint GLTexture::gl_bindcode_get() const /** \name Pixel Buffer * \{ */ -GLPixelBuffer::GLPixelBuffer(uint size) : PixelBuffer(size) +GLPixelBuffer::GLPixelBuffer(size_t size) : PixelBuffer(size) { glGenBuffers(1, &gl_id_); BLI_assert(gl_id_); diff --git a/source/blender/gpu/opengl/gl_texture.hh b/source/blender/gpu/opengl/gl_texture.hh index 58d93bea676..806c7f74b60 100644 --- a/source/blender/gpu/opengl/gl_texture.hh +++ b/source/blender/gpu/opengl/gl_texture.hh @@ -132,7 +132,7 @@ class GLPixelBuffer : public PixelBuffer { GLuint gl_id_ = 0; public: - GLPixelBuffer(uint size); + GLPixelBuffer(size_t size); ~GLPixelBuffer(); void *map() override; diff --git a/source/blender/gpu/vulkan/vk_backend.cc b/source/blender/gpu/vulkan/vk_backend.cc index 4c8f5f0ceb9..1d9b0979e4e 100644 --- a/source/blender/gpu/vulkan/vk_backend.cc +++ b/source/blender/gpu/vulkan/vk_backend.cc @@ -207,7 +207,7 @@ IndexBuf *VKBackend::indexbuf_alloc() return new VKIndexBuffer(); } -PixelBuffer *VKBackend::pixelbuf_alloc(uint size) +PixelBuffer *VKBackend::pixelbuf_alloc(size_t size) { return new VKPixelBuffer(size); } @@ -227,12 +227,12 @@ Texture *VKBackend::texture_alloc(const char *name) return new VKTexture(name); } -UniformBuf *VKBackend::uniformbuf_alloc(int size, const char *name) +UniformBuf *VKBackend::uniformbuf_alloc(size_t size, const char *name) { return new VKUniformBuffer(size, name); } -StorageBuf *VKBackend::storagebuf_alloc(int size, GPUUsageType usage, const char *name) +StorageBuf *VKBackend::storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) { return new VKStorageBuffer(size, usage, name); } diff --git a/source/blender/gpu/vulkan/vk_backend.hh b/source/blender/gpu/vulkan/vk_backend.hh index 107af4c77ed..46461150d25 100644 --- a/source/blender/gpu/vulkan/vk_backend.hh +++ b/source/blender/gpu/vulkan/vk_backend.hh @@ -58,12 +58,12 @@ class VKBackend : public GPUBackend { Fence *fence_alloc() override; FrameBuffer *framebuffer_alloc(const char *name) override; IndexBuf *indexbuf_alloc() override; - PixelBuffer *pixelbuf_alloc(uint size) override; + PixelBuffer *pixelbuf_alloc(size_t size) override; QueryPool *querypool_alloc() override; Shader *shader_alloc(const char *name) override; Texture *texture_alloc(const char *name) override; - UniformBuf *uniformbuf_alloc(int size, const char *name) override; - StorageBuf *storagebuf_alloc(int size, GPUUsageType usage, const char *name) override; + UniformBuf *uniformbuf_alloc(size_t size, const char *name) override; + StorageBuf *storagebuf_alloc(size_t size, GPUUsageType usage, const char *name) override; VertBuf *vertbuf_alloc() override; /* Render Frame Coordination -- diff --git a/source/blender/gpu/vulkan/vk_buffer.cc b/source/blender/gpu/vulkan/vk_buffer.cc index b946868e65e..cdc89f923ff 100644 --- a/source/blender/gpu/vulkan/vk_buffer.cc +++ b/source/blender/gpu/vulkan/vk_buffer.cc @@ -51,7 +51,7 @@ static VkMemoryPropertyFlags vma_preferred_flags(const bool is_host_visible) * staging buffer can be skipped, or in case of a vertex buffer an intermediate buffer can be * removed. */ -bool VKBuffer::create(int64_t size_in_bytes, +bool VKBuffer::create(size_t size_in_bytes, GPUUsageType usage, VkBufferUsageFlags buffer_usage, const bool is_host_visible) diff --git a/source/blender/gpu/vulkan/vk_buffer.hh b/source/blender/gpu/vulkan/vk_buffer.hh index a30e1c000aa..df78d21e0e3 100644 --- a/source/blender/gpu/vulkan/vk_buffer.hh +++ b/source/blender/gpu/vulkan/vk_buffer.hh @@ -19,7 +19,7 @@ class VKContext; * Class for handing vulkan buffers (allocation/updating/binding). */ class VKBuffer { - int64_t size_in_bytes_ = 0; + size_t size_in_bytes_ = 0; VkBuffer vk_buffer_ = VK_NULL_HANDLE; VmaAllocation allocation_ = VK_NULL_HANDLE; /* Pointer to the virtually mapped memory. */ @@ -31,7 +31,7 @@ class VKBuffer { /** Has this buffer been allocated? */ bool is_allocated() const; - bool create(int64_t size, + bool create(size_t size, GPUUsageType usage, VkBufferUsageFlags buffer_usage, bool is_host_visible = true); diff --git a/source/blender/gpu/vulkan/vk_pixel_buffer.cc b/source/blender/gpu/vulkan/vk_pixel_buffer.cc index c0f37eda055..684f9ac6b72 100644 --- a/source/blender/gpu/vulkan/vk_pixel_buffer.cc +++ b/source/blender/gpu/vulkan/vk_pixel_buffer.cc @@ -12,7 +12,7 @@ namespace blender::gpu { -VKPixelBuffer::VKPixelBuffer(int64_t size) : PixelBuffer(size) +VKPixelBuffer::VKPixelBuffer(size_t size) : PixelBuffer(size) { buffer_.create( size, GPU_USAGE_STATIC, VK_BUFFER_USAGE_TRANSFER_SRC_BIT | VK_BUFFER_USAGE_TRANSFER_DST_BIT); diff --git a/source/blender/gpu/vulkan/vk_pixel_buffer.hh b/source/blender/gpu/vulkan/vk_pixel_buffer.hh index e7a2ee93e78..a7860f7e3c8 100644 --- a/source/blender/gpu/vulkan/vk_pixel_buffer.hh +++ b/source/blender/gpu/vulkan/vk_pixel_buffer.hh @@ -18,7 +18,7 @@ class VKPixelBuffer : public PixelBuffer { VKBuffer buffer_; public: - VKPixelBuffer(int64_t size); + VKPixelBuffer(size_t size); void *map() override; void unmap() override; int64_t get_native_handle() override; diff --git a/source/blender/gpu/vulkan/vk_storage_buffer.cc b/source/blender/gpu/vulkan/vk_storage_buffer.cc index f559947e21f..5776878151f 100644 --- a/source/blender/gpu/vulkan/vk_storage_buffer.cc +++ b/source/blender/gpu/vulkan/vk_storage_buffer.cc @@ -15,7 +15,7 @@ namespace blender::gpu { -VKStorageBuffer::VKStorageBuffer(int size, GPUUsageType usage, const char *name) +VKStorageBuffer::VKStorageBuffer(size_t size, GPUUsageType usage, const char *name) : StorageBuf(size, name), usage_(usage) { } diff --git a/source/blender/gpu/vulkan/vk_storage_buffer.hh b/source/blender/gpu/vulkan/vk_storage_buffer.hh index 3457d1b84a2..ab9ffc530cf 100644 --- a/source/blender/gpu/vulkan/vk_storage_buffer.hh +++ b/source/blender/gpu/vulkan/vk_storage_buffer.hh @@ -24,7 +24,7 @@ class VKStorageBuffer : public StorageBuf, public VKBindableResource { VKBuffer buffer_; public: - VKStorageBuffer(int size, GPUUsageType usage, const char *name); + VKStorageBuffer(size_t size, GPUUsageType usage, const char *name); void update(const void *data) override; void bind(int slot) override; diff --git a/source/blender/gpu/vulkan/vk_uniform_buffer.hh b/source/blender/gpu/vulkan/vk_uniform_buffer.hh index 71ad2958d61..7abf06f4798 100644 --- a/source/blender/gpu/vulkan/vk_uniform_buffer.hh +++ b/source/blender/gpu/vulkan/vk_uniform_buffer.hh @@ -21,7 +21,7 @@ class VKUniformBuffer : public UniformBuf, public VKBindableResource, NonCopyabl VKBuffer buffer_; public: - VKUniformBuffer(int size, const char *name) : UniformBuf(size, name) {} + VKUniformBuffer(size_t size, const char *name) : UniformBuf(size, name) {} void update(const void *data) override; void clear_to_zero() override;