Commit Graph

25303 Commits

Author SHA1 Message Date
rdb aea2d6ef45 display: Release lock before notifying render thread in GraphicsEngine
Otherwise the render thread will wake up only to be blocked by the mutex right away.
2022-02-17 12:48:36 +01:00
rdb 07586c82e6 workflow: Update GitHub CI builder to Windows 2019/2022 2022-02-17 12:48:33 +01:00
Paul m. p. P 833ad89eba py_panda: Fix compilation issue with Python 3.11 2022-02-07 19:33:19 +01:00
rdb 25a468ba12 Merge branch 'release/1.10.x' 2022-02-07 19:31:04 +01:00
rdb 355cd5b4cd pstats: Remove unused field from PStatClient::InternalThread 2022-02-07 17:03:58 +01:00
rdb 77b0d2d6a7 pstats: Switch from AtomicAdjust to C++11-style atomics 2022-02-07 17:02:30 +01:00
rdb b401884f1c makepanda: Support building with OpenEXR 3.0 or 3.1 on Windows 2022-02-07 11:12:10 +01:00
rdb 3c142a61ab makepanda: Properly detect keyboard interrupts on Windows 2022-02-07 11:10:32 +01:00
rdb e27162df0b Merge branch 'release/1.10.x' 2022-02-06 15:32:24 +01:00
rdb 287b0d5a74 mathutil: Add proper `__repr__` for LPlane class
Fixes #1248
2022-02-06 15:29:25 +01:00
rdb a37dfa727e makepanda: Support building with mimalloc on Windows, experimentally
Partial backport of 07545bc9e3 for Windows, requires building with `--override USE_MEMORY_MIMALLOC=1 --override USE_DELETED_CHAIN=UNDEF` for optimum effect
2022-02-06 15:29:25 +01:00
rdb be2e07637f gtk-stats: Fix mouse motion detected outside strip chart graph area
Cherry-picked from 3a38543f65
2022-02-06 15:29:25 +01:00
Disyer bc6502a8fe 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.

Cherry-picked from 2a904f3985 (see #1260)
2022-02-06 15:29:25 +01:00
rdb a12359275f makepanda: Support building with OpenSSL 1.1.1 on Windows 2022-02-06 15:29:21 +01:00
rdb 94570f20aa pgraph: Remove need for grabbing lock in RenderState destructor 2022-02-05 22:25:51 +01:00
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 7da70cf939

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 eefcae7b05
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 1f106a0a2a

[skip ci]
2022-01-10 15:43:23 +01:00