Merge branch 'blender-v4.2-release'
This commit is contained in:
@@ -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; });
|
||||
}
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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 --
|
||||
|
||||
@@ -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. */
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -481,7 +481,7 @@ class MTLPixelBuffer : public PixelBuffer {
|
||||
id<MTLBuffer> buffer_ = nil;
|
||||
|
||||
public:
|
||||
MTLPixelBuffer(uint size);
|
||||
MTLPixelBuffer(size_t size);
|
||||
~MTLPixelBuffer();
|
||||
|
||||
void *map() override;
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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);
|
||||
};
|
||||
|
||||
@@ -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_);
|
||||
|
||||
@@ -132,7 +132,7 @@ class GLPixelBuffer : public PixelBuffer {
|
||||
GLuint gl_id_ = 0;
|
||||
|
||||
public:
|
||||
GLPixelBuffer(uint size);
|
||||
GLPixelBuffer(size_t size);
|
||||
~GLPixelBuffer();
|
||||
|
||||
void *map() override;
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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 --
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user