Commit Graph

2415 Commits

Author SHA1 Message Date
6432fa488a Cleanup: Remove GLEW dependencies outside of GL module 2020-09-12 15:51:21 +02:00
136bdb561b GPU: Add Image Load Store extension support
This wraps the functionality used to speedup EEVEE volumetrics.

This touches the rendering code of EEVEE as it should fix a mis-usage of
the GL barrier. The barrier changed type and location, removing an
unused barrier.
2020-09-12 15:29:54 +02:00
66078594d1 GPUState: Fix missing changed program point size state
Also avoid a case where size is zero and making it impossible to change it
back.

This fix T80664 Tiny node sockets
2020-09-10 23:55:22 +02:00
8ff397b3b1 Fix T80327 UI: Glitches in UI drawing
This was caused by an uninitialized variable that was left
unchanged when calling GPU_vertformat_clear.
2020-09-10 23:32:22 +02:00
405a5d3bd7 GPUBatch: Do not unbind shader after drawing.
This allows subsequent redraw to work just like before.
However a better safeguard system against setting the uniforms in the
wrong shader would be nice to have.
2020-09-10 15:55:14 +02:00
48a99fab2b GPUImmediate: Fix wrong resize of immBatchAtMost 2020-09-10 15:55:14 +02:00
72f63ba7e9 GPUState: Fix Point Size issues
The point size was not updated in the right branch and setting the point
size via GPU_point_size was effectively disabling its use.
2020-09-10 15:55:14 +02:00
0d68f55789 DrawManager: Fixed memory leak in test cases
Memory leak is introduced as test cases reinitializes the GPU stack.
Added a call to GPU_backend_exit to fix this.

In GPU_backend_exit the GPU backend was destroyed but the pointer wasn't
reset for reuse. This patch also clears the pointer to be reused.
2020-09-08 13:23:04 +02:00
48690d967a GPUContext: Move GPUContext to gpu::Context for more consistency
This makes the GPUContext follow the same naming convention as the rest
of the module.

Also add a static getter for extra bonus style (no need for casts):
- Context::get()
- GLContext::get()
2020-09-08 04:15:50 +02:00
d2e9de93b8 GPU: Cleanup implementation casts
- Use the syntactic wrap/unwrap method to make code more readable.
- Update comment about hidden struct behind opaque types.
- Cleanup GPUDrawList type.
2020-09-08 04:15:50 +02:00
33b25b6a9e GPUTexture: Remove unused functions and avoid GPU_texture_opengl_bindcode
This is a cleanup.
2020-09-08 04:15:50 +02:00
ccc512cc61 GPUImmediate: Make activation / deactivation implicit
This avoids unecessary complexity.

Also makes the GPUImmediate threadsafe by using a threadlocal imm variable.
2020-09-08 04:15:50 +02:00
28ea459a61 GPUState: Encapsulate glPixelStorei inside the GLStateManager
Part of the Vulkan task T68990

Isolate the last remaining gl functions.
2020-09-08 04:15:50 +02:00
77f60a0931 GPUState: Encapsulate glFlush and glFinish inside the GLContext
Part of the Vulkan task T68990

Isolate the few remaining gl functions.
2020-09-08 04:15:50 +02:00
bedc68a838 Cleanup: consistent syntax for doxygen parameters
Also use back-slash instead of '@'.
2020-09-08 09:18:59 +10:00
5c2ac8520e GPUQuery: GL Backend isolation
This is part of the Vulkan task T68990.

This introduce a new GLQueryPool for managing queries in an
implementation agnostic manner.

This modify the GPU selection query to use this new object.
This also make use of blender::Vector for better code quality.

No real functionnal change.
2020-09-08 00:02:04 +02:00
d4fd363d05 GPU: Select Pick: Remove last GL call
This is part of the Vulkan task T68990
This is just a cleanup.
2020-09-08 00:02:04 +02:00
b7a28b315a GPUFramebuffer: Make GPU_framebuffer_read_depth more flexible
This is to make use of it in selection code.
2020-09-08 00:02:04 +02:00
19f56cfe6c Cleanup: GLBackend: Move buf_free and tex_free to GLContext
This makes it easier to follow.

Also removes the GL related functions inside gpu_context.cc.
2020-09-07 20:17:45 +02:00
58353834f4 GPUCapabilities: Isolate GL memory statistics
This is part of the Vulkan task T68990

This is a simple cleanup.
2020-09-07 20:17:45 +02:00
c5c6b5ddb3 GPUCapabilities: Isolate GL_STEREO to GLContext
This is part of the Vulkan task T68990

This is a simple cleanup.
2020-09-07 20:17:45 +02:00
6b436b80a4 GPU: Rename gpu_extensions to gpu_capabilities
This makes more sense as this module has more to it than just
GL extensions.
2020-09-07 19:37:05 +02:00
5de4525e39 GPUTexture: Bump GPU_TEX_MAX_FBO_ATTACHED
This was causing an assert when using `--debug-gpu-force-workarounds`
2020-09-07 19:37:04 +02:00
a784e90be0 EEVEE: Try to allocate the lightcache and use fallback if failure
This is to remove an explicit opengl dependence to GPU_extension.
2020-09-07 19:37:04 +02:00
171b36683a GPUExtensions: GL backend isolation
This is part of the Vulkan task T68990.

This commits changes a few things:
- Rename extensions to capabilities (but left the file name untouched).
- Cubemap mip render workaround detection is rewritten using gl
  commands to avoid using the GPU API before initialization.
- Put all the capabilities that are only relevant for the GL backend
  inside GLContext as static variables.
- Cleanup the names of the limit variables.
- Separate all GL related workaround search inside the GL module.
2020-09-07 19:37:04 +02:00
360489c751 GPUPlatform: GL backend isolation
Part of the vulkan implementation T68990.

Pretty straight forward. Just move the GL code inside the GLBackend and
make the GPUPlatformGlobal a class object.
2020-09-07 19:37:04 +02:00
6b91c641e8 GPU: Fix clang tidy warnings 2020-09-07 14:03:03 +02:00
aa32e7a2f3 Cleanup: GPUVertBuf: Replace TRUST_NO_ONE by BLI_asserts and ifdef DEBUG 2020-09-07 13:59:51 +02:00
c38debd39f GPUVertBuf: GL Backend Isolation
Part of the Vulkan port T68990

This makes a few changes in how the data is being handled by the
backend to allow more flexibility in the future.

The overall code logic is left unchanged.
2020-09-07 13:59:51 +02:00
bb2aeb4504 GPUVertBuf: Rename GPUVertBuf to VertBuf and add some getters
to avoid more typecasts.
2020-09-07 13:59:51 +02:00
267b8e1a5c Cleanup: spelling
Also correct wrapped lines of example code in threads.cc.
2020-09-07 16:19:42 +10:00
7ffff04e49 GPUVertBuf: Make GPUVertBuf private to the GPU module
This is just a cleanup to isolate the internals of the vertbuf.
This adds some getters to avoid refactor of existing code.
2020-09-06 22:13:06 +02:00
4ea93029c6 GPUIndexBuf: GL backend Isolation
This is part of the Vulkan backend task T68990.

There is no real change, only making some code re-organisation.
This also make the IndexBuf completely abstract from outside the
GPU module.
2020-09-06 22:13:06 +02:00
84d67bd0a9 Cleanup: GPU: Rename GPU_element to GPU_index_buffer
Makes it follow the functions names.
2020-09-06 22:13:06 +02:00
71872e3809 GLTexture: Add Feedback loop check
The check is better than before as we take into
consideration the attached mip level.
2020-09-05 17:49:14 +02:00
14926a81b6 Cleanup: GPUFramebuffer: Remove unused variable 2020-09-05 17:49:14 +02:00
8e4c0efbe3 Cleanup: GPUTexture: Move debug messages outside of creation function
# Conflicts:
#	source/blender/gpu/intern/gpu_framebuffer.cc
2020-09-05 17:49:14 +02:00
ab95cdaba9 GPUTexture: Change texture creation API
This is to modernize the API:
- Add meaningful name to all textures (except DRW textures).
- Remove unused err_out argument: only used for offscreen python.
- Add mipmap count to creation functions for future changes.
- Clarify the data usage in creation functions.

This is a cleanup commit, there is no functional change.

# Conflicts:
#	source/blender/gpu/GPU_texture.h
2020-09-05 17:49:14 +02:00
7d4adbdfab GLTexture: Add validation for empty slots before drawing
This is to have better error detection in debug builds.
This is not a replacement for a full check like in renderdoc but it
might catch some issues early on.
2020-09-05 17:49:14 +02:00
cc0410193d GPUTexture: Implement back 3D texture resize
But this time implement it outside the texture module.
This makes more sense as only the volume textures need this feature.
2020-09-05 17:49:14 +02:00
895ec05212 Cleanup: GPUTexture: Clean framebuffer attachment 2020-09-05 17:49:14 +02:00
13305fb513 Cleanup: GPUFrameBuffer: Use Texture class instead of gl calls 2020-09-05 17:49:14 +02:00
b100b77fda GLTexture: Add back texture proxy check
Cleanup the feature itself:
- Check 3D textures size against the correct limit.
- Add check for compressed textures.
2020-09-05 17:49:14 +02:00
31c77a14af GPUTexture: Add support for samplers
This just add back the support.
This commit also includes a bit of cleanup.

# Conflicts:
#	source/blender/gpu/GPU_texture.h
2020-09-05 17:49:14 +02:00
c766d9b9dc GPUTexture: GL Backend Isolation
This is a massive cleanup needed for vulkan support T68990. It provides:

- More meaningful enums with conversion functions.
- Less hacky supports of arrays and cubemaps (all considered layered).
- More inline with the stateless design of vulkan and modern GL.
- Methods Fallbacks are using framebuffer functions that are wrapped
  instead of implementing inside the texture module.

What is not in there:
- API change.
- Samplers support (breaks a few effects).

# Conflicts:
#	source/blender/gpu/GPU_texture.h
2020-09-05 17:49:14 +02:00
db21c12abe GPUFramebuffer: Encapsulate single attachement clear
This is in preparation of using it to clear single texture.

Also includes minor cleanups about not using tex target in
assert and adding enum operators.
2020-09-05 17:49:14 +02:00
a92d77acf7 GPUTexture: Add skeleton of the new GLTexture class 2020-09-05 17:49:14 +02:00
f72c1c4547 GPUTexture: Remove bind to edit calls
This is going to be unecessary after the GPU opengl texture backend refactor.

For now add a save/restore mechanism to leave the state untouched.

Also remove some calls where the caller would bind to particular binding
point and set the shader uniform.
2020-09-05 17:49:14 +02:00
2115232a16 Cleanup: Clang-Tidy readability-inconsistent-declaration-parameter-name fix
No functional changes
2020-09-04 21:04:16 +02:00
f0c376a52a Fix T80332: principle volume shader not working for world in Eevee
The handling of missing volume grids for the principled volume shader was
incomplete, different inputs need different default values.
2020-09-03 15:49:41 +02:00