Commit Graph

3112 Commits

Author SHA1 Message Date
Clément
ab758c30d2 GLBackend: Fix gl error inside the mip rendering workaround detection
This was caused by an incorrect mipmap size.
Also add debug checks for good mesure.
2020-09-08 16:05:36 +02:00
Clément
0fb9f22d8b GLContext: Fix clang warning about using override 2020-09-08 16:04:31 +02:00
Clément
acdea4e98b GLFrameBuffer: Fix mass renaming issue
The context might be partialy freed, so use gpu::Context instead of
GLcontext.
2020-09-08 15:49:16 +02:00
Jeroen Bakker
ab6f59ff3b GPU: Extract GPU Base Test case
The draw manager test case initialized ghost, gpu and draw manager. This
change splits the base test case to GPU specific and draw manager
specific test case.

The GPU test base test case will be used for low level GPU tests.
2020-09-08 13:23:10 +02:00
Jeroen Bakker
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
33b25b6a9e GPUTexture: Remove unused functions and avoid GPU_texture_opengl_bindcode
This is a cleanup.
2020-09-08 04:15:50 +02:00
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Campbell Barton
bedc68a838 Cleanup: consistent syntax for doxygen parameters
Also use back-slash instead of '@'.
2020-09-08 09:18:59 +10:00
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
6b91c641e8 GPU: Fix clang tidy warnings 2020-09-07 14:03:03 +02:00
Clément Foucault
aa32e7a2f3 Cleanup: GPUVertBuf: Replace TRUST_NO_ONE by BLI_asserts and ifdef DEBUG 2020-09-07 13:59:51 +02:00
Clément Foucault
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
Clément Foucault
bb2aeb4504 GPUVertBuf: Rename GPUVertBuf to VertBuf and add some getters
to avoid more typecasts.
2020-09-07 13:59:51 +02:00
Campbell Barton
267b8e1a5c Cleanup: spelling
Also correct wrapped lines of example code in threads.cc.
2020-09-07 16:19:42 +10:00
Clément Foucault
d268a43b25 Cleanup: GPUVertBuf: Replace GPU_vertbuf_create by GPU_vertbuf_calloc
This is a simple cleanup to make naming consistent with the rest of the
module.
2020-09-06 22:13:06 +02:00
Clément Foucault
158cea83b5 GLTexture: Fix crash with --debug-gpu on windows + nvidia
The combination of DSA + CubeMap seems to not please this driver.
2020-09-06 22:13:06 +02:00
Clément Foucault
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
Clément Foucault
98fc3f263c Cleanup: GLBackend: Fix missing override keywords producing warnings 2020-09-06 22:13:06 +02:00
Clément Foucault
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
Clément Foucault
84d67bd0a9 Cleanup: GPU: Rename GPU_element to GPU_index_buffer
Makes it follow the functions names.
2020-09-06 22:13:06 +02:00
Clément Foucault
8c4f7e6d04 GLState: Use unsigned long long instead of unsigned long for shifts
This fix a compilation warning on msvc.
2020-09-05 18:50:07 +02:00
Campbell Barton
ffec86bb62 Cleanup: clang-format 2020-09-06 02:21:27 +10:00
Campbell Barton
3a8d9198b3 Cleanup: spelling 2020-09-06 02:19:58 +10:00
Clément Foucault
581c35bea8 GLState: Fix compilation warning on MSVC 2020-09-05 18:16:13 +02:00
Clément Foucault
03b36abbe6 GLTexture: Fix undefined behavior when binding textures the first time 2020-09-05 18:13:33 +02:00
Clément Foucault
9764d3e4dc GLDebug: Trim NVidia debug output
These buffer detailed infos are not needed unless going deep into
perf. profiling, in which case you can still disable this compile option.

This makes user report log much more readable.
2020-09-05 17:49:14 +02:00
Clément Foucault
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
Clément Foucault
14926a81b6 Cleanup: GPUFramebuffer: Remove unused variable 2020-09-05 17:49:14 +02:00
Clément Foucault
64490bdedb GLTexture: Add direct state access support 2020-09-05 17:49:14 +02:00
Clément Foucault
558e1158e7 GLState: Add texture multibind and remove redundant binds 2020-09-05 17:49:14 +02:00
Clément Foucault
65a593f6ef GPUDebug: Only enable resource checking in debug mode 2020-09-05 17:49:14 +02:00
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
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
Clément Foucault
895ec05212 Cleanup: GPUTexture: Clean framebuffer attachment 2020-09-05 17:49:14 +02:00