Merge branch 'blender-v4.2-release'

This commit is contained in:
Jacques Lucke
2024-06-14 20:19:03 +02:00
19 changed files with 38 additions and 37 deletions

View File

@@ -113,13 +113,14 @@ BooleanMix booleans_mix_calc(const VArray<bool> &varray, const IndexRange range_
}
const Span<bool> 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; });
}

View File

@@ -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
{

View File

@@ -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 --

View File

@@ -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. */

View File

@@ -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);
}

View File

@@ -481,7 +481,7 @@ class MTLPixelBuffer : public PixelBuffer {
id<MTLBuffer> buffer_ = nil;
public:
MTLPixelBuffer(uint size);
MTLPixelBuffer(size_t size);
~MTLPixelBuffer();
void *map() override;

View File

@@ -2596,7 +2596,7 @@ id<MTLTexture> 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:

View File

@@ -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);
};

View File

@@ -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_);

View File

@@ -132,7 +132,7 @@ class GLPixelBuffer : public PixelBuffer {
GLuint gl_id_ = 0;
public:
GLPixelBuffer(uint size);
GLPixelBuffer(size_t size);
~GLPixelBuffer();
void *map() override;

View File

@@ -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);
}

View File

@@ -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 --

View File

@@ -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)

View File

@@ -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);

View File

@@ -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);

View File

@@ -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;

View File

@@ -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)
{
}

View File

@@ -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;

View File

@@ -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;