[Bf-blender-cvs] [d54416506a7] sculpt-dev: Merge remote-tracking branch 'origin' into sculpt-dev
Joseph Eagar
noreply at git.blender.org
Fri Jun 3 08:47:01 CEST 2022
Commit: d54416506a7ee5e00b08157bc8f05aff8943dd29
Author: Joseph Eagar
Date: Thu Jun 2 23:44:50 2022 -0700
Branches: sculpt-dev
https://developer.blender.org/rBd54416506a7ee5e00b08157bc8f05aff8943dd29
Merge remote-tracking branch 'origin' into sculpt-dev
===================================================================
===================================================================
diff --cc intern/atomic/intern/atomic_ops_msvc.h
index 8a0e1f6b391,e65691d3970..e926a5bbfad
--- a/intern/atomic/intern/atomic_ops_msvc.h
+++ b/intern/atomic/intern/atomic_ops_msvc.h
@@@ -63,12 -73,22 +73,22 @@@ ATOMIC_INLINE uint64_t atomic_sub_and_f
ATOMIC_INLINE uint64_t atomic_cas_uint64(uint64_t *v, uint64_t old, uint64_t _new)
{
- return InterlockedCompareExchange64((int64_t *)v, _new, old);
+ return (uint64_t)(InterlockedCompareExchange64((int64_t *)v, _new, old));
}
+ ATOMIC_INLINE uint64_t atomic_load_uint64(const uint64_t *v)
+ {
+ return __atomic_impl_load_generic(v);
+ }
+
+ ATOMIC_INLINE void atomic_store_uint64(uint64_t *p, uint64_t v)
+ {
+ __atomic_impl_store_generic(p, v);
+ }
+
ATOMIC_INLINE uint64_t atomic_fetch_and_add_uint64(uint64_t *p, uint64_t x)
{
- return InterlockedExchangeAdd64((int64_t *)p, (int64_t)x);
+ return (uint64_t)InterlockedExchangeAdd64((int64_t *)p, (int64_t)x);
}
ATOMIC_INLINE uint64_t atomic_fetch_and_sub_uint64(uint64_t *p, uint64_t x)
@@@ -117,12 -147,22 +147,22 @@@ ATOMIC_INLINE uint32_t atomic_sub_and_f
ATOMIC_INLINE uint32_t atomic_cas_uint32(uint32_t *v, uint32_t old, uint32_t _new)
{
- return InterlockedCompareExchange((long *)v, _new, old);
+ return (uint32_t)InterlockedCompareExchange((long *)v, _new, old);
}
+ ATOMIC_INLINE uint32_t atomic_load_uint32(const uint32_t *v)
+ {
+ return __atomic_impl_load_generic(v);
+ }
+
+ ATOMIC_INLINE void atomic_store_uint32(uint32_t *p, uint32_t v)
+ {
+ __atomic_impl_store_generic(p, v);
+ }
+
ATOMIC_INLINE uint32_t atomic_fetch_and_add_uint32(uint32_t *p, uint32_t x)
{
- return InterlockedExchangeAdd(p, x);
+ return (uint32_t)InterlockedExchangeAdd(p, x);
}
ATOMIC_INLINE uint32_t atomic_fetch_and_or_uint32(uint32_t *p, uint32_t x)
diff --cc release/scripts/startup/bl_ui/space_view3d_toolbar.py
index 7fa52769789,892dc9a1e42..57d54fdd59b
--- a/release/scripts/startup/bl_ui/space_view3d_toolbar.py
+++ b/release/scripts/startup/bl_ui/space_view3d_toolbar.py
@@@ -1,9 -1,5 +1,10 @@@
# SPDX-License-Identifier: GPL-2.0-or-later
-from bpy.types import Menu, Panel, UIList
+
+# <pep8 compliant>
+from bpy.props import EnumProperty
+from bpy.types import Operator
+from bpy.types import Menu, Panel, UIList, WindowManager, SpaceProperties
++
from bl_ui.properties_grease_pencil_common import (
GreasePencilSculptAdvancedPanel,
GreasePencilDisplayPanel,
diff --cc source/blender/blenkernel/BKE_attribute.h
index 4e559323c7b,78edb6b95ed..ffba1fe7e25
--- a/source/blender/blenkernel/BKE_attribute.h
+++ b/source/blender/blenkernel/BKE_attribute.h
@@@ -50,8 -51,10 +51,9 @@@ typedef enum eAttrDomainMask
/* Attributes. */
bool BKE_id_attributes_supported(struct ID *id);
+ bool BKE_attribute_allow_procedural_access(const char *attribute_name);
-/**
- * Create a new attribute layer.
+/** Create a new attribute layer.
*/
struct CustomDataLayer *BKE_id_attribute_new(
struct ID *id, const char *name, int type, eAttrDomain domain, struct ReportList *reports);
@@@ -73,9 -81,8 +80,9 @@@ bool BKE_id_attribute_rename(struct ID
struct ReportList *reports);
int BKE_id_attributes_length(const struct ID *id,
- AttributeDomainMask domain_mask,
+ eAttrDomainMask domain_mask,
- eCustomDataMask mask);
+ eCustomDataMask mask,
+ bool skip_temporary);
struct CustomDataLayer *BKE_id_attributes_active_get(struct ID *id);
void BKE_id_attributes_active_set(struct ID *id, struct CustomDataLayer *layer);
diff --cc source/blender/blenkernel/BKE_customdata.h
index 7e578cf0ba3,993ab476830..9a7ddd6d9cb
--- a/source/blender/blenkernel/BKE_customdata.h
+++ b/source/blender/blenkernel/BKE_customdata.h
@@@ -735,58 -709,30 +741,50 @@@ void CustomData_data_transfer(const str
/**
* Prepare given custom data for file writing.
*
- * \param data: the custom-data to tweak for .blend file writing (modified in place).
- * \param r_write_layers: contains a reduced set of layers to be written to file,
- * use it with #writestruct_at_address()
- * (caller must free it if != \a write_layers_buff).
- *
- * \param write_layers_buff: An optional buffer for r_write_layers (to avoid allocating it).
- * \param write_layers_size: The size of pre-allocated \a write_layer_buff.
+ * \param data: The custom-data to tweak for .blend file writing (modified in place).
+ * \param layers_to_write: A reduced set of layers to be written to file.
*
- * \warning After this function has ran, given custom data is no more valid from Blender POV
- * (its `totlayer` is invalid). This function shall always be called with localized data
- * (as it is in write_meshes()).
- *
- * \note `data->typemap` is not updated here, since it is always rebuilt on file read anyway.
- * This means written `typemap` does not match written layers (as returned by \a r_write_layers).
- * Trivial to fix is ever needed.
+ * \warning This function invalidates the custom data struct by changing the layer counts and the
+ * #layers pointer, and by invalidating the type map. It expects to work on a shallow copy of
+ * the struct.
*/
- void CustomData_blend_write_prepare(struct CustomData *data,
- struct CustomDataLayer **r_write_layers,
- struct CustomDataLayer *write_layers_buff,
- size_t write_layers_size);
+ void CustomData_blend_write_prepare(CustomData &data,
+ blender::Vector<CustomDataLayer, 16> &layers_to_write);
/**
- * \param layers: The layers argument assigned by #CustomData_blend_write_prepare.
+ * \param layers_to_write: Layers created by #CustomData_blend_write_prepare.
*/
- void CustomData_blend_write(struct BlendWriter *writer,
- struct CustomData *data,
- CustomDataLayer *layers,
+ void CustomData_blend_write(BlendWriter *writer,
+ CustomData *data,
+ blender::Span<CustomDataLayer> layers_to_write,
int count,
eCustomDataMask cddata_mask,
- struct ID *id);
+ ID *id);
+
+ #endif
+
void CustomData_blend_read(struct BlendDataReader *reader, struct CustomData *data, int count);
+void CustomData_unmark_temporary_nocopy(struct CustomData *data);
+void CustomData_mark_temporary_nocopy(struct CustomData *data);
+
+int CustomData_get_elem_size(CustomDataLayer *layer);
+void CustomData_regen_active_refs(CustomData *data);
+
+void CustomData_bmesh_asan_poison(const CustomData *data, void *block);
+void CustomData_bmesh_asan_unpoison(const CustomData *data, void *block);
+int CustomData_get_named_offset(const CustomData *data, int type, const char *name);
+
+void CustomData_setDefaultData(eCustomDataType type, void *block, int totelem);
+size_t CustomData_getTypeSize(eCustomDataType type);
+void CustomData_freeData(eCustomDataType type, void *block, int totelem);
+void CustomData_interpData(eCustomDataType type,
+ void *block,
+ int tot,
+ const void **srcs,
+ const float *ws,
+ const float *sub_ws);
+
#ifndef NDEBUG
struct DynStr;
/** Use to inspect mesh data when debugging. */
diff --cc source/blender/blenkernel/intern/attribute.cc
index 6faa430001a,fedcfc5c721..ea8954c5f22
--- a/source/blender/blenkernel/intern/attribute.cc
+++ b/source/blender/blenkernel/intern/attribute.cc
@@@ -274,10 -314,7 +314,10 @@@ CustomDataLayer *BKE_id_attribute_searc
return NULL;
}
-int BKE_id_attributes_length(const ID *id, eAttrDomainMask domain_mask, eCustomDataMask mask)
+int BKE_id_attributes_length(const ID *id,
- AttributeDomainMask domain_mask,
++ eAttrDomainMask domain_mask,
+ eCustomDataMask mask,
+ bool skip_temporary)
{
DomainInfo info[ATTR_DOMAIN_NUM];
get_domains(id, info);
diff --cc source/blender/blenkernel/intern/customdata.cc
index 46c5eaf9b42,a63528835ee..0c15a642e6e
--- a/source/blender/blenkernel/intern/customdata.cc
+++ b/source/blender/blenkernel/intern/customdata.cc
@@@ -4984,46 -4370,19 +5005,19 @@@ void CustomData_file_write_info(int typ
*r_struct_num = typeInfo->structnum;
}
- void CustomData_blend_write_prepare(CustomData *data,
- CustomDataLayer **r_write_layers,
- CustomDataLayer *write_layers_buff,
- size_t write_layers_size)
+ void CustomData_blend_write_prepare(CustomData &data, Vector<CustomDataLayer, 16> &layers_to_write)
{
- CustomDataLayer *write_layers = write_layers_buff;
- const size_t chunk_size = (write_layers_size > 0) ? write_layers_size : CD_TEMP_CHUNK_SIZE;
-
- const int totlayer = data->totlayer;
- int i, j;
-
- for (i = 0, j = 0; i < totlayer; i++) {
- CustomDataLayer *layer = &data->layers[i];
-
- /* Layers with this flag set are not written to file. */
- if ((layer->flag & (CD_FLAG_NOCOPY | CD_FLAG_TEMPORARY)) || layer->anonymous_id != nullptr) {
- data->totlayer--;
- // CLOG_WARN(&LOG, "skipping layer %p (%s)", layer, layer->name);
+ for (const CustomDataLayer &layer : Span(data.layers, data.totlayer)) {
- if (layer.flag & CD_FLAG_NOCOPY) {
++ if (layer.flag & (CD_FLAG_NOCOPY | CD_FLAG_TEMPORARY)) {
+ continue;
}
- else {
- if (UNLIKELY((size_t)j >= write_layers_size)) {
- if (write_layers == write_layers_buff) {
- write_layers = (CustomDataLayer *)MEM_malloc_arrayN(
- (write_layers_size + chunk_size), sizeof(*write_layers), __func__);
- if (write_layers_buff) {
- memcpy(write_layers, write_layers_buff, si
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list