Blender Git Commits

Blender Git "master" branch commits.

50 minutes ago
Cycles: Fix debug compilation after tile stealing commit
5 hours 17 min ago
GPencil: Change maximum limit of Join stroke

Also, clarify comments.
5 hours 29 min ago
Merge branch 'blender-v2.91-release'
5 hours 30 min ago
Fix T82265: GPencil interpolate crash when next frame was NULL

If the next frame of the layer was NULL and it was not the active layer crashed.
12 hours 57 min ago
Cleanup: clang-format
12 hours 57 min ago
Cycles: Implement tile stealing to improve CPU+GPU rendering performance

While Cycles already supports using both CPU and GPU at the same time, there
currently is a large problem with it: Since the CPU grabs one tile per thread,
at the end of the render the GPU runs out of new work but the CPU still needs
quite some time to finish its current times.

Having smaller tiles helps somewhat, but especially OpenCL rendering tends to
lose performance with smaller tiles.

Therefore, this commit adds support for tile stealing: When a GPU device runs
out of new tiles, it can signal the CPU to release one of its tiles.
This way, at the end of the render, the GPU quickly finishes the remaining
tiles instead of having to wait for the CPU.

Thanks to AMD for sponsoring this work!

Differential Revision:
14 hours 26 min ago
Adding explanitory comment to explain why tablet API check is necessary
for Pointer input even when Wintab should be preventing Pointer events.

Signed-off-by: Nicholas Rishel <>
14 hours 26 min ago
Before a wintab button event is generated, generate a GHOST mouse move
event to the button down location as this should be a more accurate point
of contact than the last mouse move event.

Signed-off-by: Nicholas Rishel <>
14 hours 26 min ago
Return of the Wintab refactor.

Previously Wintab was handled by saving the most recent tablet pressure and tilt information and deferred appending tablet infromation to Windows mouse events. This caused synchronization issues evident at the beginning and ending of strokes where pressure and tilt were either ahead or behind in time from mouse button up or down events. This also dicarded swaths of data which resulted in blockly grease pencil lines most apparent when a context switch resulted in several coalesced mouse events.

This patch changes the behavior of Wintab to instead rely entirely on Wintab information for pressure, tilt, position, and button input.

Wintab has several design decisions and conventions which complicate relying soley on it's input while retaining current workflows reliant on non-API behavior. For example, many device optionally allow the user to map barrel buttons to non-mouse actions. These mappings may or may not modify the intended behavior when touching the stylus down, such as scroll vs alt mappings. This behavior is not exposed in the Wintab API, but Wintab will continue updating button state sans this necessary context.

To work around the problem, this refactor synchronizations tablet input to Windows mouse down and up events, this captures events which should result in pen input while allowing events such as pen scrolling. Until a Windows mouse down event fires Wintab input is left unprocessed; when a Windows up event occurs Wintab is processed until a corresponding button up event is found.

Wintab allows for either button state or changes to be reported, but not both. An earlier refactor tried to use button changes to let state to be managed by Wintab. This was replaced when it was found that button change events were unreliable at corner cases such as switching windows. It was also found that with Wacom drivers Wintab peek functions would modify events in the queue causing errant and loss of button events.

For the latter stated reason this patch opts to read all Wintab events into a queue as they arrive, removing events as they become stale. This was chosen over using Wintab peek functions due to the afformentioned issue. As a bonus this seems to work better as it prevents the queue in Wintab from filling, thus neither a flood of events need to be handled when Wintab processing begins and a Wintab implementation need not be trusted to overwrite old events in it's queue.

Maniphest Tasks: T75566

Differential Revision:
14 hours 26 min ago
Finish the comment's thought explaining pessimistic button ups events for
14 hours 26 min ago
Add Wintab debug logging as a CMake option WITH_WINTAB_DEBUG.

Signed-off-by: Nicholas Rishel <>
14 hours 26 min ago
Remove Wintab logging.
14 hours 26 min ago
Update tooltip, Tablet API can now be changed at runtime.
14 hours 26 min ago
Cleanup: Use C style comments, punctuation, and capitalization.

Added missing function documentation.
14 hours 26 min ago
Cleanup: rename functions for consistency with other process*Events functions.
14 hours 26 min ago
Commented assumption was incorrect, using tickCountToMillis causes underflow when compared to current time.
14 hours 26 min ago
Add explanation for dequing Wintab PACKETs during WT_PACKET event into a local queue to consume during WM_* mouse events.
Revision 316a591 by Nicholas Rishel
14 hours 26 min ago
Previous check seems to have a race condition, resulting in Wintab not being enabled.
14 hours 26 min ago
Revert "Revert "Windows: support high resolution tablet pen events for Wintab""

This reverts commit e90d8422d0ed38743390f2184fde27550d7b48a7.
14 hours 26 min ago
Button events now include tabletdata, so move is unnecessary.

Signed-off-by: Nicholas Rishel <>
By: Miika HämäläinenLast update: Nov-07-2014 14:18 MiikaHweb | 2003-2020