25338 Commits

Author SHA1 Message Date
rdb
4e925a839a makepanda: Support building with mimalloc on non-Windows
For experimentation only - it's disabled by default unless you also specify --override USE_MEMORY_MIMALLOC=1 (I did not see a discernable benefit over glibc, but more experimentation is warranted, especially with older glibc versions)
2022-02-05 22:25:44 +01:00
rdb
5bb616dca7 pstatserver: Fix compilation error with STDFLOAT_DOUBLE=1
Regression in 7da70cf9399e2703ac9cacbb6977edeb173de159

Fixes #1259
2022-02-05 22:25:36 +01:00
Disyer
2a904f3985 makepanda: Record cache timestamps as integers rather than floats
We don't need the extra precision, in fact it is detrimental to restoring build caches in a cross-platform way.

This commit will invalidate all current build caches.
2022-02-05 23:16:59 +02:00
rdb
f30e87e7d1 CMake: Add FindGTK3.cmake file 2022-02-04 23:51:07 +01:00
rdb
07545bc9e3 dtoolbase: Use mimalloc on Windows, disable USE_DELETED_CHAIN
Windows' malloc has awful performance.  mimalloc is orders of magnitude faster, even faster than DeletedBufferChain.  Therefore, only enable USE_DELETED_CHAIN on Windows when building without mimalloc.

On Linux, mimalloc doesn't appear to be measurably faster than glibc's own allocator.  Both are marginally than DeletedBufferChain, though, and substantially faster in the multi-threaded case, so USE_DELETED_CHAIN is disabled there in all cases.
2022-02-04 23:50:57 +01:00
rdb
46a1ad3544 pipeline: Improve performance of Thread::get_current_thread() substantially
Speedup is realised by using thread-local variables.  Note that on Windows we can't inline get_current_thread, but it's still faster this way than calling TlsGetValue.

In theory the cache line alignment should help avoid false sharing but I have not profiled that extensively.
2022-02-04 23:49:39 +01:00
rdb
39d69f13de dtoolbase: Change DeletedBufferChain to use new C++11-style atomics 2022-02-04 20:52:31 +01:00
rdb
7da70cf939 pstatserver: Major improvements to PStats server UI, including:
* New "Flame Graph" chart for seeing all collectors in a frame, much easier to read than piano roll
* Update controls, fonts, background color to more modern visual style on Windows
* Proper support for high DPI monitors (with correct scaling)
* Add tooltips for collector labels showing full name and averaged value
* Colors of collectors are now converted to sRGB transfer encoding
* Major performance improvement to piano roll view on Windows
* Movering mouse over labels now highlights the corresponding area in chart
* Label hover effect changed to darkening effect instead of border
* Reimplement graph as static common control on Windows
* Check boxes are now clickable by their label on Windows
* Graph windows have minimum sizes on Windows
2022-02-02 21:05:10 +01:00
rdb
f0b81d5bf0 gtk-stats: Fix top row in piano roll chart being cut off with high DPI 2022-02-01 17:25:43 +01:00
rdb
87f5aea80e gtk-stats: Update to GTK version 3, since version 2 is EOL 2022-02-01 17:17:56 +01:00
rdb
4c3bc5a42e gtk-stats: Use cairo instead of GDK for drawing
Drawing via GDK is deprecated and no longer supported in GTK 3
2022-02-01 15:37:02 +01:00
rdb
3a38543f65 gtk-stats: Fix mouse motion detected outside strip chart graph area 2022-02-01 13:35:32 +01:00
rdb
174cb48990 gtk-stats: Replace uses of deprecated GTK APIs
As of this change, requires GTK 2.24
2022-02-01 11:47:04 +01:00
Maxwell175
350836cc38
PythonUtil: remove Enum class (#1253) 2022-02-01 10:31:14 +01:00
rdb
fb7a2d7a13 text-stats: Add JSON output mode in chrome://tracing format
This allows the whole trace to be captured and then loaded into chrome://tracing or https://ui.perfetto.dev
2022-01-30 02:03:18 +01:00
rdb
f6322d8c93 pipeline: De-inline ConditionVarDummyImpl methods
This is the only ConditionVar implementation to import thread.h directly
2022-01-30 02:03:18 +01:00
rdb
c66ca2ece1 pstats: Report PStats overhead more honestly
Half the overhead was being missed due to the unfortunate collector placement
2022-01-30 02:03:18 +01:00
rdb
c7c1c683da pstats: Disable "App:Show code:General" collector for now
It is generating negative values, needs further investigation - maybe we need to restructure the whole hierarchy
2022-01-30 02:03:18 +01:00
rdb
36edb22fd1 pstats: Include client pid with hello message
Useful for uniquely identifying the process in a situation where multiple clients on the same host connect with the same server.

New version bump is not necessary, as old servers should just ignore the extra field in the datagram.
2022-01-30 02:03:18 +01:00
rdb
8034cb5a92 dtoolbase: Introduce patomic<> as replacement for AtomicAdjust
This typedefs to std::atomic<> when building with true threading, and uses a dummy implementation without.

This lets us use the full range of atomic operations offered by C++11, including explicit specification of memory fences.  Using barriers lets the compiler generate more optimal code since currently we are using the quite strict sequential-consistent memory ordering for all operations.  ReferenceCount has been changed to use the correct barriers (I hope).  This may especially make a difference on weak ordering systems such as ARM.

Over time we should gradually replace the use of AtomicAdjust with the new patomic file.
2022-01-30 01:53:36 +01:00
rdb
692221cacb cocoadisplay: Invert direction of horizontal scroll
Now behaves consistent with other applications (tested with Logitech MX Master 3 for Mac on macOS 10.13 in unnatural scrolling configuration).

Set `cocoa-invert-wheel-x true` to revert to old behaviour.
2022-01-22 15:56:53 +01:00
rdb
eaa182f310 Merge commit '38bea01dab8f4dedd5fce9f8b9e82cebbf663189' into release/1.10.x 2022-01-22 15:46:52 +01:00
rdb
38bea01dab device: Do not enumerate keyboard/mouse devices on macOS by default
This causes an annoying "this app would like to receive keystrokes from any application" alert to be shown

Enable iokit-scan-mouse-devices or iokit-scan-keyboard-devices to restore the old behavior
2022-01-22 15:45:00 +01:00
rdb
ce7c1ec16c dist: Suppress warning about android_log module building for Android
This module is linked statically and provided via the built-in module loader
2022-01-14 10:56:42 +01:00
rdb
b803ef2ac5 dist: Set default Linux target to manylinux2014
According to
https://github.com/mayeut/pep600_compliance/blob/master/README.rst
manylinux2010 is EOL, and so are all Linux distributions that support manylinux2010 but not manylinux2014.

Setting the default to manylinux2014 means that more thirdparty packages are supported and hopefully means we're not always behind and have to struggle to keep building for it.
2022-01-14 10:54:26 +01:00
rdb
a56ee57422 Merge branch 'release/1.10.x' 2022-01-14 10:50:10 +01:00
rdb
c32866fa33 showbase: Fix missing ClockObject import in JobManager
Regression in eefcae7b05aef7628b691d8601f8d7d9d0916cb3
2022-01-14 10:48:25 +01:00
rdb
58afbbfaa0 dist: Add missing platforms to default installer dictionary 2022-01-14 10:46:56 +01:00
rdb
484a9394f9 installpanda: Correct lib dir detection on ArchLinux
Eliminates a downstream patch in the AUR

[skip ci]
2022-01-14 10:42:14 +01:00
rdb
be2f6a7c61 glgsg: Fix missing GR_adjacency geom rendering flag
I don't think this flag being missing currently affects any functionality, but it is meant to be set when geometry shaders (with adjacency) are supported.
2022-01-14 10:25:01 +01:00
rdb
54606c8894 showbase: docstring fix
[skip ci]
2022-01-14 09:58:57 +01:00
rdb
bd37e8776f makepanda: Fix platform tag on aarch64 manylinux
Wheels ended up being tagged as i686.
2022-01-14 09:58:57 +01:00
rdb
b518da99a6 windisplay: fix origin not respected when switching to windowed mode 2022-01-12 10:23:19 +01:00
rdb
14bdcf40fb Bump version number on release/1.10.x branch to 1.10.12 2022-01-12 10:22:52 +01:00
rdb
b7fc80d6cc makewheel: Fix huge .whl files due to lack of compression for some files
Regression from 1f106a0a2a26c2db3860f8c0ff95deeddde99e8a

[skip ci]
2022-01-10 15:43:23 +01:00
rdb
440b2c48b8 egg2pg: Slight cleanup
[skip ci]
2022-01-10 15:40:06 +01:00
rdb
6fe21fd8bd egg2pg: Add support for texture matrices to bam2egg 2022-01-10 13:22:57 +01:00
rdb
992cbb0840 pgraph: optimizations for analyze() 2022-01-10 13:22:34 +01:00
rdb
a1538b4f7c pnmimage: Add offset parameters to PNMImage::perlin_noise_fill() 2022-01-10 13:21:51 +01:00
rdb
6777f19162 pnmimage: Add an additive PNMPainter brush 2022-01-10 13:21:46 +01:00
rdb
40f54a766c Merge branch 'release/1.10.x' 2022-01-07 10:52:28 +01:00
rdb
d66ef59ecc pgraph: Fix assertion in PythonLoaderFileType with debug Python build v1.10.11 2022-01-07 10:44:03 +01:00
rdb
b736b3e4db filter: Accept floating-point values for FilterManager mul= parameter
Fixes #1231
Closes #1232
2022-01-07 10:15:49 +01:00
rdb
99c133a7f5 readme: Update download link to 1.10.11
[skip ci]
2022-01-06 17:12:40 +01:00
rdb
50dd0113e7 doc: Update release notes for 1.10.11
[skip ci]
2022-01-06 17:12:13 +01:00
rdb
91f3ab01f3 mayapath: Properly handle new bin2/bin3 folders on Windows for Maya 2022 2022-01-06 17:06:16 +01:00
rdb
2d77093398 gobj: Fix TexturePeeker docstrings for filter_* being incorrect about wrapping
Fixes #1195
2022-01-06 12:52:10 +01:00
rdb
340dea5261 gobj: Fix crash when trying to load directory as txo/dds/ktx file 2022-01-06 11:52:40 +01:00
rdb
7a2a83572c Merge branch 'release/1.10.x' 2022-01-05 08:50:11 +01:00
rdb
78b67988fb makepanda: Fix wrong installation path for Python SDK on Debian/Ubuntu
This partially reverts commit 2fcacd1bab1226ea0571c5d925daf6028a862f96.

Fixes #1230
2022-01-05 08:48:26 +01:00