Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2021-06-23Revert "Revert "Enhanced stats/reports for blendfile reading.""Bastien Montagne
This reverts commit rB3a48147b8ab92, and fixes the issues with linking etc. Change compared to previous buggy commit (rBf8d219dfd4c31) is that new `BlendFileReadReports` reports are now passed to the lowest level function generating the `FileData` (`filedata_new()`), which ensures (and asserts) that all code using it does have a valid non-NULL pointer to a `BlendFileReadReport` data. Sorry for the noise, it's always when you think a change is trivial and do not test it well enough that you end up doing those kind of mistakes...
2021-06-22Revert "Enhanced stats/reports for blendfile reading."Brecht Van Lommel
This change crashes library linking operators, related tests and probably more. This reverts commit f8d219dfd4c31a918e33cb715472d91a5cd3fd51. Ref D11583
2021-06-22Enhanced stats/reports for blendfile reading.Bastien Montagne
Add direct user feedback (as a warning report) to user when recursive resync of overrides was needed. And some timing (as CLOG logs) about main readfile process steps. This is essentially adding a new BlendFileReadReport structure that wraps BKE_reports list, and adds some extra info (some timing, some info about overrides and (recursive) resync, etc.).
2021-04-20Core: Add do_versions file for 3.0Falk David
Differential Revision: https://developer.blender.org/D11030
2021-03-08readfile: add id_tag_extra argumentCampbell Barton
This allows adding ID tags when linking/loading data. This is needed to implement loading non 'G.main' ID data-blocks, see D10612.
2021-03-08Cleanup: rename offs to offsetCampbell Barton
2021-02-26UX: Readfile: Libraries error messages: avoid wall of warnings.Bastien Montagne
When a lot of libraries or linked IDs were missing/not found when loading a .blend file, Blender used to show one warning report for each missing item, potentially covering the user's screen with a giant unuable popup. Now it will instead generate a single warning with amount of missing lib files and linked IDs. Each missing item is still reported individually, but only as `INFO`, so it will still show up in the console or Info editor.
2021-02-18Cleanup: sort structs, file-listsCampbell Barton
2021-02-05Cleanup/refactor: Undosys: Get rid of the magic values for undo direction.Bastien Montagne
Move `eUndoStepDir` to `BKE_undo_system.h` and use its values everywhere. Note that this also introduce the `STEP_INVALID` value in that enum. Finally, kept the matching struct members in some lower-level readfile code as an `int` to avoid having to include `BKE_undo_system.h` in a lot of unrelated files.
2021-01-15Use mmap() IO for reading uncompressed .blendsLukas Stockner
Instead of submitting tons of tiny IO syscalls, we can speed things up significantly by `mmap`ing the .blend file into virtual memory and directly accessing it. In my local testing, this speeds up loading the Dweebs file with all its linked files from 19sec to 10sec (on Linux). As far as I can see, this should be supported on Linux, OSX and BSD. For Windows, a second code path uses `CreateFileMapping` and `MapViewOfFile` to achieve the same result. Reviewed By: mont29, brecht Differential Revision: https://developer.blender.org/D8246
2020-12-16Cleanup: remove redundant struct declarationsCampbell Barton
2020-12-15Asset System: Data-block asset metadata storage, reading and APIJulian Eisel
Asset metadata is what turns a regular data-block into an asset. It is a small data-structure, but a key part of the technical design of the asset system. The design foresees that asset data-blocks store an `ID.asset_data` pointer of type `AssetMetaData`. This data **must not** have dependencies on other data-blocks or data-block data, it must be an independent unit. That way we can read asset-metadata from .blends without reading anything else from the file. The Asset Browser will use this metadata (together with the data-block name, preview and file path) to represent assets in the file list. Includes: * New `ID.asset_data` for asset metadata. * Asset tags, description and custom properties. * BKE code to manage asset meta-data and asset tags. * Code to read asset data from files, without reading IDs. * RNA for asset metadata (including tags) Part of the first Asset Browser milestone. Check the #asset_browser_milestone_1 project milestone on developer.blender.org. Differential Revision: https://developer.blender.org/D9716 Reviewed by: Bastien Montagne, Brecht Van Lommel
2020-11-06Refactor: move Object .blend I/O to IDTypeInfo callbacksJacques Lucke
2020-11-06Blenloader: expose BLO_reportf_wrap in apiJacques Lucke
This function is used by a couple of functions that are moved out of blenloader.
2020-10-30Refactor: move Area .blend I/O to blenkernelJacques Lucke
There should be no functional changes. Eventually, it would be good to handle the different space types using callbacks. Ref T76372.
2020-10-03Cleanup: rename main preferences versioning functionCampbell Barton
BLO_version_defaults_userpref_blend -> blo_do_versions_userdef The name was misleading as it was declared along with BLO_update_defaults_startup_blend making it seem these functions were related. In fact preference defaults don't need to be updated as is done for startup.blend since an in-memory blend file isn't used. Rename the function to match other versioning functions called from readfile.c. Also add/update comments on these differences.
2020-10-02Fix (unreported) design flow in how workspace's relation data are read from ↵Bastien Montagne
.blend file. Relying on pointer addresses across different data-blocks is extremely not recommended (and should be strictly forbidden ideally), in particular in direct_link step of blend file reading. - It assumes a specific order in reading of data, which is not ensured in future, and is in any case a very bad, non explicit, hidden dependency on behaviors of other parts of the codebase. - It is intrinsically unsafe (as in, it makes writing bad code and making mistakes easy, see e.g. fix in rB84b3f6e049b35f9). - It makes advanced handling of data-blocks harder (thinking about partial undo code e.g., even though in this specific case it was not an issue as we do not re-read neither windowmanagers nor worspaces during undo). New code uses windows' `winid` instead as 'anchor' to find again proper workspace hook in windows at read time. As a bonus, it will also cleanup the list of relations from any invalid ones (afaict it was never done previously). Differential Revision: https://developer.blender.org/D9073
2020-09-29DNA: optimize struct reconstruction by doing some preprocessingJacques Lucke
When loading large files that are more than a couple weeks old (such that DNA has changed in that time), a significant amount of time is spent in `DNA_struct_reconstruct`. This function takes a struct in the old layout and creates a struct in the new layout from it. This was slow because it was computing the diff between the struct layouts every time a struct is updated. Now the steps for the struct reconstruction is computed only once per struct. This information is then used to actually reconstruct all structs that changed. I measured about 10-20% speedup when loading Spring files. E.g. `10.6s -> 8.7s` for `06_055_A.anim.blend` in BKE_blendfile_read`. This percentage varies a lot based on the number of blocks that have to be reconstructed and how much DNA has changed since they have been written. In none of my tests was the new code slower than the old code. Reviewers: campbellbarton Differential Revision: https://developer.blender.org/D8959
2020-09-20Fix broken Windows buiilds after own recent commit in read/write code.Bastien Montagne
Usual issue of win32 not following POSIX standards.
2020-09-20Sanitize type 'size' parameters in our read/write file codeBastien Montagne
This patch tries to sanitize the types of our size parameters across our read and write code, which is currently fairly inconsistent (using `int`, `uint`, `size_t`...), by using `size_t` everywhere. Since in Blender file themselves we can only store chunk of size `MAX_INT`, added some asserts to ensure that as well. See {T79561} for details. Differential Revision: https://developer.blender.org/D8672
2020-09-04Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fixSebastian Parborg
No functional changes
2020-08-07Code Style: use "#pragma once" in source directoryJacques Lucke
This replaces header include guards with `#pragma once`. A couple of include guards are not removed yet (e.g. `__RNA_TYPES_H__`), because they are used in other places. This patch has been generated by P1561 followed by `make format`. Differential Revision: https://developer.blender.org/D8466
2020-07-06Cleanup: readfile: remove old deprecated OldNewMap for runtime caches.Bastien Montagne
2020-07-03Readfile/Undo: initial refactor of cache preservation code.Bastien Montagne
Main goal here is to have better specificity using cache keys, to avoid same memroy address being re-used messing up with cache pointers restoration after undo had to re-read a data-block. Once all caches handling are ported to this new system, it should fix random issues like the one reported in T76989. Part of D8183, refactoring how we preserve caches across undo steps in readfile code.
2020-05-26Cleanup: Create afterliblink doversion for 2.90... and move relevant code there.Bastien Montagne
Seriously... Please comply with design and do not add 2.9x versionning code to 2.8x versioning functions!
2020-04-16UV: support changing the opacity of the UV overlayCampbell Barton
Add this option as it's useful to adjust how much UV's cover the image when UV mapping. D5348 by @EitanSomething with edits
2020-04-07Cleanup: don't use global variable for test if IDs are identicalBrecht Van Lommel
Differential Revision: https://developer.blender.org/D7327
2020-03-20Cleanup: sort file, struct listsCampbell Barton
2020-03-19Cleanup: `make format` after SortedIncludes changeDalai Felinto
2020-03-18Objects: add Volume object type, and prototypes for Hair and PointCloudBrecht Van Lommel
Only the volume object is exposed in the user interface. It is based on OpenVDB internally. Drawing and rendering code will follow in another commit. https://wiki.blender.org/wiki/Source/Objects/Volume https://wiki.blender.org/wiki/Reference/Release_Notes/2.83/Volumes Hair and PointCloud object types are hidden behind a WITH_NEW_OBJECT_TYPES build option. These are unfinished, and included only to make it easier to cooperate on development in the future and avoid tricky merges. https://wiki.blender.org/wiki/Source/Objects/New_Object_Types Ref T73201, T68981 Differential Revision: https://developer.blender.org/D6945
2020-03-17Add experimental global undo speedup.Bastien Montagne
The feature is hidden behind an experimental option, you'll have to enable it in the preferences to try it. This feature is not yet considered fully stable, crashes may happen, as well as .blend file corruptions (very unlikely, but still possible). In a nutshell, the ideas behind this code are to: * Detect unchanged IDs across an undo step. * Reuse as much as possible existing IDs memory, even when its content did change. * Re-use existing depsgraphs instead of building new ones from scratch. * Store accumulated recalc flags, to avoid needless re-compute of things that did not change, when the ID itself is detected as modified. See T60695 and D6580 for more technical details.
2019-11-18Fix building on NetBSDCampbell Barton
2019-08-14Eevee: Remove Additive & Multiply Blend modeClément Foucault
This commit also provide a compatibility code that will convert old materials using Additive or Multiply Blend mode to their node equivalent. This conversion is only done on outputs that are enabled for eevee.
2019-04-24Cycles: move shader node versioning code to CBrecht Van Lommel
Shader nodes are now shared with Eevee, so makes more sense to have it in the core and not be Cycles specific. Fix T62415: issues with append/link of old Cycles settings.
2019-04-24Nodes: better integrate node init and versioning in file readingBrecht Van Lommel
Node versioning code was added before there was a mechanism to do versioning after lib linking. Now integrate with that system and make it less of a strange exception. Node versioning is now skipped on undo, like other versioning code.
2019-04-24Haiku: build fixCampbell Barton
D4693 by @miqlas
2019-04-17ClangFormat: apply to source, most of internCampbell Barton
Apply clang format as proposed in T53211. For details on usage and instructions for migrating branches without conflicts, see: https://wiki.blender.org/wiki/Tools/ClangFormat
2019-03-19readfile: add off64_t typedef for __APPLE__Campbell Barton
2019-03-19Fix T62707: opening blend files over 2gb on win32 failsCampbell Barton
Regression in 358e07f447e9ed7 for ms-windows since off_t is an int32_t even on 64bit systems causing files over 2gb not to load. Poison off_t so this doesn't happen again.
2019-03-03Cleanup: rename FileData.listbase -> bhead_listCampbell Barton
Having the name matching the type isn't so meaningful.
2019-02-24readfile: use regular file access when not a gzipCampbell Barton
Allows for different behavior w/ compressed files, will also make it simpler to support other compression types, see: T56162
2019-02-22readfile: support blend files over 2gbCampbell Barton
Should work for 4gb+ files too however I wasn't able to test that.
2019-02-22readfile: reduce memory usage at load timeCampbell Barton
Delay loading all DATA sections of the blend file until they're needed. Loading all data-blocks caused high peak memory usage especially with libraries - since a lot of data may exist which isn't used directly. In one test (spring project: 10_010_A.anim.blend), peaked at ~12.5gig, dropping back to ~2.5gig once loaded. With this change peaks memory usage reaches ~2.7gig while loading. Besides this there are some minor gains from not having to read data from the file-system and we can skip an alloc + memcpy reading data written with the same version of Blender.
2019-02-22Cleanup: rename seek to file_offsetCampbell Barton
Prepare for seek callback to be added.
2019-02-22Cleanup: make BHeadN private in readfile.cCampbell Barton
Also add macro for accessing BHeadN from BHead.
2019-02-22Missed last commitCampbell Barton
Harmless but not renamed as intended.
2019-02-22Cleanup: rename readfile API functionsCampbell Barton
- blo_bhead_first (was blo_firstbhead) - blo_bhead_next (was blo_nextbhead) - blo_bhead_prev (was blo_prevbhead) - blo_bhead_id_name (was bhead_id_name) - blo_filedata_free (was blo_freefiledata) - blo_filedata_from_file (was blo_openblenderfile) - blo_filedata_from_memory (was blo_openblendermemory) - blo_filedata_from_memfile (was blo_openblendermemory)
2019-02-22Missed last commitCampbell Barton
2019-02-22Cleanup: comments, use bool for 'eof' variableCampbell Barton
Also remove unused members headerdone, inbuffer & filedes, use typed enum for file data flags.
2019-02-18doxygen: add newline after \fileCampbell Barton
While \file doesn't need an argument, it can't have another doxy command after it.