Clément Foucault
8527d84d35
GPUState: Move Scissor and Viewport state to framebuffer
...
This way it is way clearer what each viewport state is. There is
no more save and reset. The scissor test is also saved per
framebuffer.
The only rule to remember is that the viewport state (size and
origin) is reset for both the viewport and scissor when a texture
is attached or detached from an attachment slot.
2020-08-30 13:11:03 +02:00
Clément Foucault
cb8da6efce
GPUState: Fix scissor state being overwritten when changing scissor bounds
...
Fix T79899 viewport artifacts when sculpting
2020-08-24 12:28:54 +02:00
Clément Foucault
72e78df464
GPUState: Expose Stencil mask and test
...
This is to be used by framebuffer clearing.
2020-08-23 12:04:24 +02:00
Clément Foucault
e23ef8753a
GPUState: Use explicit depth test enum
2020-08-20 17:02:39 +02:00
Clément Foucault
1dafa87eb5
GPUState: Fix signed / bitfield conversion leading to wrong enum value
...
This was creating drawing issues on windows builds.
2020-08-19 17:13:53 +02:00
Clément Foucault
33fde699e2
Cleanup: GPUState: Remove GPU_state_init()
2020-08-18 21:30:11 +02:00
Clément Foucault
adca09b643
GPUState: Port default state to StateManager constructor
2020-08-18 21:30:11 +02:00
Clément Foucault
a9f2ebb215
Cleanup: DRW: Use GPUState instead of raw opengl calls
...
Should not break anything! Huh!
2020-08-18 21:30:10 +02:00
Clément Foucault
536c2e0ec9
GPUState: Only apply state before drawing
2020-08-18 21:30:10 +02:00
Clément Foucault
482a51aabf
Cleanup: GPUState: Remove stack from the state manager and rename it
2020-08-18 21:30:10 +02:00
Clément Foucault
d10f000322
GPUState: Remove gpuPushAttr/gpuPopAttr
...
And use manual save/restore mechanism.
The stack method is not used so much to be considered useful.
2020-08-18 21:30:10 +02:00
Clément Foucault
f30df15edc
GPUState: Make use of GPUStateStack class
...
This isolate most GL calls to the GL backend. Still a few remains.
2020-08-18 21:30:10 +02:00
Clément Foucault
bf1b622dd9
GPUState: GPU_blend final API renaming
...
We now use GPU_blend for enabling / disabling blending and explicitly
set the blend equation.
2020-08-18 21:30:10 +02:00
Clément Foucault
10558d6973
Cleanup: GPUState: remove use of GPU_blend_set_func
2020-08-18 21:30:10 +02:00
Clément Foucault
969bcf0793
Cleanup: GPUState: Replace blend func separate by enum
2020-08-18 21:30:10 +02:00
Clément Foucault
a1459b2f7a
Cleanup: GPU: Move towards an explicit Blend state
...
This make use of the GLStateStack functions for:
- `GPU_blend()`
- `GPU_blend_set_func()`
- `GPU_blend_set_func_separate()`
The goal is to unify them using an explicit state setting.
This will remove the need to use obscure blend functions
2020-08-18 21:30:10 +02:00
Clément Foucault
2ae1c895a2
GPUState: Add GL backend and state tracking but do not use it
...
This is just the backend work. It is not plugged in yet because it
needs more external cleanup/refactor.
2020-08-18 21:30:10 +02:00
Clément Foucault
0f292dc072
Cleanup: GPUState: remove float variant of GPU_scissor_get
2020-08-18 21:30:10 +02:00
Clément Foucault
5f6fb5bb41
Cleanup: Split gpu_texture_image.c into BKE and IMB modules
...
This is in order to disolve GPU_draw.h into more meaningful code blocks.
All the Image related function are in `image_gpu.c`.
All the MovieClip related function are in `movieclip.c`.
The IMB module now has a connection with GPU. This is not strickly
necessary and the code could be move to `image_gpu.c` if needed.
The Image garbage collection is also ported to `image_gpu.c`.
2020-07-29 23:06:37 +02:00
Clément Foucault
1804a6d040
GPUState: Fix compilation error on MSVC
2020-07-29 15:54:51 +02:00
Clément Foucault
18d2db22ff
GPU: Move gpu_state.c to C++
2020-07-29 15:03:02 +02:00