Commit Graph

6179 Commits

Author SHA1 Message Date
Jeroen Bakker
00d746059e Fix #140927, #140912: OpenGL: Annotate draw on surface broken
Recently we switched from Depth24S8 to Depth32FS8. On OpenGL the read
back of depth was not working as it asked the driver to download both
the depth and stencil part of the texture. This isn't supported when using floats
and would not return any data.

This PR forces OpenGL to read back depth component when a depth/stencil
texture is used.

Pull Request: https://projects.blender.org/blender/blender/pulls/141009
2025-06-26 10:05:27 +02:00
Jeroen Bakker
28add6cfea Merge branch 'blender-v4.5-release' 2025-06-26 08:50:36 +02:00
Jeroen Bakker
40eaaf089f Vulkan: Switch Qualcomm to switch to OpenGL
Due to driver issues qualcomm devices that try to start Blender with
a driver below 31.0.112.0 will automatically switch to OpenGL.

Pull Request: https://projects.blender.org/blender/blender/pulls/140902
2025-06-26 08:49:37 +02:00
Clément Foucault
872c8fb189 Fix #77909: Viewport Render Image clamps output
The issue was that this operator is using the same
path as the viewport display. So the colors are
clamped if the display is not HDR.
This fix is easy now that we have an HDR path for
the viewport display. We just enforce using it
when doing the viewport render preview.
2025-06-25 11:28:50 +02:00
Jeroen Bakker
e63a20fee1 Vulkan: HDR support for Wayland
This change enables HDR support for wayland as an experimental feature.
It supports both non-linear extended sRGB and un-clamped sRGB.

Windows isn't supported as the HDR settings are not accessible via an
API and would require similar settings that games use to configure the
monitor. Adding those sliders isn't what we would like to add.

Vulkan (working group) is working on new extensions that might change
the shortcomings. It isn't clear yet what the extension will do and what
the impact is for applications that want to use it. When the extension
is out we should review at the situation again.

Pull Request: https://projects.blender.org/blender/blender/pulls/133159
2025-06-24 11:51:14 +02:00
Jeroen Bakker
03caffe540 GPU: Deprecate GPU_DATA_UINT_24_8
GPU_DATA_UINT_24_8 isn't used anymore. We cannot phase out the data type
as it can still be used by add-ons. This PR will deprecate
`GPU_DATA_UINT_24_8`. When used in an add-on a deprecation message will
be shown.

Pull Request: https://projects.blender.org/blender/blender/pulls/140715
2025-06-20 12:17:20 +02:00
Jeroen Bakker
cdf538e1a7 Merge branch 'blender-v4.5-release' 2025-06-20 09:51:44 +02:00
Jeroen Bakker
d2e88494e1 Cleanup: Vulkan: Remove unused code
Removes `VKTexture::current_layout_` and `VKTexture::init`. The code
was unused since the introduction of the render graph.

Pull Request: https://projects.blender.org/blender/blender/pulls/140708
2025-06-20 09:51:19 +02:00
Jeroen Bakker
09af302457 GPU: Remove depth24 texture format
Metal and AMD/Intel/Vulkan don't support depth24 texture formats
natively. The backends implemented fallback to use depth32f in
stead.

Recently we removed all usages of depth24 to use depth32 and the
next step is to remove the depth24 format and the workarounds in
the backend.

Note: The removal of `GPU_DATA_UINT_24_8` isn't part of this PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/140659
2025-06-19 16:24:06 +02:00
Jeroen Bakker
6f8bc55cef Merge branch 'blender-v4.5-release' 2025-06-19 14:13:47 +02:00
Jeroen Bakker
fefbdefbca Fix: Vulkan: Crash on exit
We detected that the gpu/draw tests could lead to
crashes after the tests where finished. It was
identified that the crash happened as the submission
runner wasn't exited, uses a mutex, that is being
destroyed by the main thread.

Solution is to wait until the submission runner has
finished, before destroying resources.

Pull Request: https://projects.blender.org/blender/blender/pulls/140650
2025-06-19 14:13:00 +02:00
Jeroen Bakker
a5e30aaa9e Refactor: GPU: Use Depth32F
Blender uses depth24 for legacy reasons. All backends that we support
have support for depth32f.

This PR updates all usages of depth24 with depth32f.

- depth24 are not supported on AMD/Intel/Vulkan and Metal. There depth32f
  was already used to work around this limitation.
- This allows us to implement reverse depth in workbench, overlay and
grease pencil in the future.

Pull Request: https://projects.blender.org/blender/blender/pulls/140531
2025-06-19 13:30:50 +02:00
Campbell Barton
954b492914 Cleanup: remove unused "use_bgl" from the GPU StateManager 2025-06-19 11:57:56 +10:00
Campbell Barton
05631085f8 Cleanup: spelling in comments (make check_spelling_*) 2025-06-19 11:40:00 +10:00
Alaska
b561c78f93 Nodes: Remove legacy combine/separate nodes
In Blender 3.3 (1) the individual combine and separate color nodes were
combined together into a single combine/separate color node.

To ensure legacy addons still worked, the old nodes were left in
Blender, but hidden from the Add menus.

It has been nearly 3 years since that change was made, most if not all
addons should have been updated by now. So this commit removes these
hidden legacy nodes.

(1) blender/blender@82df48227b

Pull Request: https://projects.blender.org/blender/blender/pulls/135376
2025-06-17 15:36:33 +02:00
Jeroen Bakker
e7a8ed0eab GPU: Fix testcase due to recent cleanups
Issue was introduced by !140340. This test has 2 different array sizes
and used the parameter for its range.
2025-06-17 12:28:04 +02:00
Jeroen Bakker
8b9bdf8236 Merge branch 'blender-v4.5-release' 2025-06-17 11:17:40 +02:00
Jeroen Bakker
ea1652dca3 Fix #140229: Vulkan: Crash during depth aware-navigation
Depth navigation sends many small render graphs to the device. It can be
that a subsequent render graph uses the same shader as the previous one
with the same descriptor set tracker. The descriptor set tracker didn't
cleared its full state and a subsequent render graph was generating
commands assuming that the device was in a certain state.

However it wasn't and a command to bind a descriptor set was skipped
resulting in a device out of bound write. Depending on the platform this
could overwrite any data on the GPU, including shader programs as the
select shader writes to a storage buffer. This clarifies why the issue
resulted in very odd and none consistent behavior.

This PR fixes this by clearing the VKPipelineData and
VKDescriptorTracker.

Pull Request: https://projects.blender.org/blender/blender/pulls/140526
2025-06-17 11:17:03 +02:00
Jeroen Bakker
8e6c208c5b Merge branch 'blender-v4.5-release' 2025-06-17 08:58:18 +02:00
Jeroen Bakker
701eb56f5e Fix #140129: Vulkan: Race condition render graph submission
When queueing render graphs for submission the adding of the queue was
not guarded. This could  still introduce a race condition, although
very unlikely.

Co-authored-by: Jorn Visser <git@jornvisser.com>

Pull Request: https://projects.blender.org/blender/blender/pulls/140517
2025-06-17 08:57:36 +02:00
Jacques Lucke
27b5e02eaf Fix: compiler error due to missing template parameter 2025-06-17 06:34:10 +02:00
Mattias Fredriksson
407dcb39d4 Tests: EXPECT_EQ_SPAN utility macro
Replaces pointer based EXPECT_EQ_ARRAY with EXPECT_EQ_SPAN in most cases
as they already used spans (or span compatible datastructures).
Currently EXPECT_EQ_ARRAY only takes in one size variable and doesn't
compare the  number of elements between arguments (requiring an
additional line to do so).

This should make the code cleaner and safer. Goal is also to promote
the use Spans in new test code.

Pull Request: https://projects.blender.org/blender/blender/pulls/140340
2025-06-16 20:31:00 +02:00
marcopavanello
ab21755aaf Shaders: Remove old Preetham and Hosek sky texture models
Remove old Preetham and Hosek-Wilkie sky models, which are less accurate.
The Nishita improved model has been available for long enough.

Pull Request: https://projects.blender.org/blender/blender/pulls/139923
2025-06-16 14:36:18 +02:00
Clément Foucault
decd88f67e Python: Remove deprecated BGL API
The API was in a deprecation state for many years now.
This API was not compatible with Metal nor Vulkan.

This also remove `Image.bindcode`.

Pull Request: https://projects.blender.org/blender/blender/pulls/140370
2025-06-16 12:50:50 +02:00
Clément Foucault
9ddc67166f Fix: GPU: Hang on Mesa with --debug-gpu on opengl
Just workaround the issue.
2025-06-16 12:44:16 +02:00
Clément Foucault
d6f9414c27 Fix #140367: EEVEE: Materials with special characters fail to compile
These `CREATE_INFO_` guards are not yet used.
Still have special case for materials.
2025-06-16 11:28:04 +02:00
Clément Foucault
0b5b1932a0 Merge branch 'blender-v4.5-release' 2025-06-16 11:02:55 +02:00
Clément Foucault
7da81b5f39 Fix #140450: Vulkan: profile.json files appears in home directory
Was caused by the shader compilation profiling not checking
for the profiler being enabled.
2025-06-16 11:02:18 +02:00
Clément Foucault
5096632b83 Cleanup: GPU: Remove or fix tautoligical asserts 2025-06-16 10:59:48 +02:00
Campbell Barton
bb9d491ca5 Merge branch 'blender-v4.5-release' 2025-06-14 16:02:07 +10:00
Campbell Barton
c482c52346 Cleanup: sort CMake file lists 2025-06-14 15:57:33 +10:00
Jeroen Bakker
65685b2c70 Merge branch 'blender-v4.5-release' 2025-06-13 13:31:01 +02:00
Jeroen Bakker
6899c2dbfd Fix #140342: Vulkan: Assert when quiting
When quiting Blender the timeline doesn't get updated and an assert is
triggered that the order isn't correct. The order isn't that important
anymore as the mechanism has been tested. The assert was useful during
initial development.

This PR removes the assert as it isn't valid in all cases.
2025-06-13 13:28:37 +02:00
Campbell Barton
63600f806b Cleanup: spelling in comments (make check_spelling_*) 2025-06-13 11:23:28 +10:00
Aras Pranckevicius
68111db969 Nodes: Speedup Voronoi by changing the hash function
The 2D->2D, 3D->3D, 4D->4D hash functions used in Voronoi node were
using quite an expensive hash function. Switch these to dedicated
2D/3D/4D hash functions (pcg2d, pcg3d, pcg4d) -- these are still very
good quality, but the hash function itself is 3x-4x faster.
Which makes Voronoi node calculation overall be around 2x faster. In
some cases when using OSL, the speedup is even larger.

This visibly changes output of the Voronoi noise however. The actual
noise "behaves" the same, just if someone was depending on the noise
pattern being exactly like it was before, this will change the pattern.

Images, more performance results and details wrt OSL are in the PR.

Pull Request: https://projects.blender.org/blender/blender/pulls/139520
2025-06-12 20:07:52 +02:00
илья _
767d86b543 Geometry Nodes: Improve the Grid socket shape
Added consistent overlay to socket shape and made some extrusion to
handle multi-input sockets.

Pull Request: https://projects.blender.org/blender/blender/pulls/139976
2025-06-12 16:52:02 +02:00
Clément Foucault
bb60b85fc7 Fix #139939: GPU: Driver Timeout when switching to Material Preview
This is caused by the late changes to shader compilation.

Using the main thread to compile shaders in a blocking manner
should fix the issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/140140
2025-06-12 16:43:41 +02:00
Jeroen Bakker
629a170ec8 Merge branch 'blender-v4.5-release' 2025-06-12 15:12:59 +02:00
Jeroen Bakker
38a8512e47 Fix #140129: Vulkan: Discard pool/timeline synchronization issues
In several cases synchronization issues around discarded resources could lead
to crashes. These crashes where more prominent on NVIDIA as they reuse
their handles more often.

This PR requires external synchronization when data is moved from a
discard pool to the main orphaned data discard pool. Also the device
timeline should be guarded by the same mutex.

Pull Request: https://projects.blender.org/blender/blender/pulls/140274
2025-06-12 15:12:04 +02:00
Jeroen Bakker
4fd3cb3b68 Merge branch 'blender-v4.5-release' 2025-06-12 12:51:46 +02:00
Jeroen Bakker
f6ec5570d4 Fix #140215: Vulkan: performance descriptor buffers
We added descriptor buffers to 4.5 as it contains some core API changes.
However there have been various reports that the system isn't fully
mature resulting in lower performance especially on NVIDIA GPUs.

This PR will disable descriptor buffer feature for NVIDIA GPUs.

Pull Request: https://projects.blender.org/blender/blender/pulls/140263
2025-06-12 12:50:32 +02:00
Hans Goudey
8f1f509368 Cleanup: GPU: Use smaller backing types for a few enums
This makes a few structs a little bit smaller.

Pull Request: https://projects.blender.org/blender/blender/pulls/140157
2025-06-11 18:17:28 +02:00
Clément Foucault
ad1bb4602d Fix: GPU: Assert on startup in Vulkan caused by polyline
The polyline workarounds were not working as expected
since #139627 as it was not garanteed that the polylines
shader would be correctly initialized with the workaround
tag.

Adding a wrapper class to ensure the initialization fixes
the issue.
2025-06-11 17:28:38 +02:00
Brecht Van Lommel
142eab27ef Merge branch 'blender-v4.5-release' 2025-06-11 15:47:58 +02:00
Clément Foucault
20803fb307 Fix: GPU: Mesa driver on AMD GPU matches GPU_DRIVER_OFFICIAL
The check for Mesa needed to be before the more coarse
check about an AMD GPU. Also, it seems the newer drivers
do not have `X.Org` in the vendor string.
Checking for `Mesa` in the version string seems to be
the correct way.

Pull Request: https://projects.blender.org/blender/blender/pulls/140204
2025-06-11 15:43:50 +02:00
Clément Foucault
4c655f076c GPU: Shader: Parallel warmup of builtin shaders
This reduces the time needed to get to the first pixel
on screen by multithreading the builtin shader compilation.

We avoid doing this if subprocess compilation is on as
the overhead of potentially partially starting all subprocess
is far greater than the benefit of paralllel compilation.

For some reasons, the compilation is much slower when
done async for these shaders (on Metal ~200ms > ~1.2ms),
so the saving might not be substantial.

Mac M1: First frame 6s > 5s.

Pull Request: https://projects.blender.org/blender/blender/pulls/139627
2025-06-11 14:08:38 +02:00
Omar Emara
9bcb536c95 Fix #138009: Extend Bounds doesn't work with Fast Gaussian
The Extend Bounds input has no effect when the Fast Gaussian filter is
used. Similarly, it has no effect if the Bokeh Blur node is using
variable size. This is a known limitation and was just not implemented.

So to fix this, we implement a general solution that works globally
across the node by pre-padding the inputs of the blur. This uses more
memory but also speeds up the base case when Extend Bounds is disabled,
while also reducing the binary size due to fewer blur specializations.

The variable size Bokeh Blur test was updated since it Extend Bounds was
silently ignored.

Pull Request: https://projects.blender.org/blender/blender/pulls/140192
2025-06-11 11:41:00 +02:00
Campbell Barton
07121d44ae Cleanup: use braces (follow own style guide) 2025-06-11 09:05:26 +00:00
Clément Foucault
afd778ec01 Fix #139939: GPU: Driver Timeout when switching to Material Preview
This is caused by the late changes to shader compilation.

Using the main thread to compile shaders in a blocking manner
should fix the issue.

Pull Request: https://projects.blender.org/blender/blender/pulls/140140
2025-06-11 11:04:10 +02:00
Campbell Barton
0e5d2a3fc7 Merge branch 'blender-v4.5-release' 2025-06-11 16:23:28 +10:00