niki
7185d7356f
vulkan: fix enabling extensions
2022-08-31 19:50:03 +02:00
niki
a0ee9f7b9b
vulkan: implement compute shaders
...
A lot of stuff probably isn't implemented yet, however the
following code already works:
```lua
local shader = love.graphics.newComputeShader [[
layout (local_size_x = 1, local_size_y = 1) in;
layout(r32f) uniform highp image2D out_tex;
uniform float time;
void computemain() {
imageStore(out_tex, ivec2(love_GlobalThreadID.xy), vec4(time, 1.0, 1.0, 1.0));
}
]]
local tex = love.graphics.newTexture(64, 64, {computewrite = true,format = "r32f"})
function love.draw()
shader:send("out_tex", tex)
shader:send("time", love.timer.getTime() % 1)
love.graphics.dispatchThreadgroups(shader, 64, 64, 1)
love.graphics.print("compute shader test")
love.graphics.draw(tex, 25, 25)
end
```
2022-08-31 02:07:46 +02:00
niki
e409770be1
vulkan: fix some validation warnings
2022-08-30 20:28:18 +02:00
niki
ec5a3a50f9
vulkan: implement graphics readback
2022-08-30 17:11:59 +02:00
niki
a69d4a38dd
vulkan: optionally use extended dynamic state
...
This should cut down on the number of pipeline permutations
needed when this extension is available.
2022-08-30 03:20:33 +02:00
niki
d123021e26
vulkan: fix canvas rendering (on android)
...
Before this patch, sometimes rendering a texture
on an android device would result in random things
appearing in the canvas, apart from the stuff
that has been drawn properly.
With these changes this does not seem to appear anymore.
2022-08-29 17:43:54 +02:00
niki
c5a2e47714
vulkan: implement multi canvas rendering
2022-08-28 03:35:06 +02:00
niki
18221beb25
vulkan: fix canvas rendering on android
2022-08-27 20:58:17 +02:00
niki
77f75648e8
vulkan: default renderpass and framebuffers
...
Since these objects basically get used every frame
we shouldn't store them in a hashmap with potentially
worse performance.
Instead storing them in member variables should be better.
2022-08-25 18:15:18 +02:00
niki
a577be8a6d
vulkan: fix a few bugs in Shader
2022-08-23 01:38:47 +02:00
niki
a08395e12d
vulkan: implement msaa
2022-08-22 23:09:21 +02:00
niki
62148790a8
vulkan: fix scissor on android
2022-08-22 17:40:27 +02:00
niki
7cc6ed40be
vulkan: implement depth and stencil
2022-08-21 17:42:39 +02:00
niki
665614b9b9
vulkan: fix crash when recreating swapchain
2022-08-20 21:33:09 +02:00
niki
5f2fdc0dd0
vulkan: android: fix display orientation
2022-08-20 21:03:49 +02:00
niki
23666b1fde
vulkan: fix android build
...
It compiles now, but it's not working correctly yet
2022-08-20 19:38:59 +02:00
niki
3e762c9772
vulkan: remove dynamic rendering (part 2)
2022-08-20 16:38:13 +02:00
niki
4660466887
vulkan: don't use dynamic rendering
2022-08-20 15:49:09 +02:00
niki
be8778b4eb
vulkan: remove dep on VK_KHR_push_descriptor
...
It's not sure if this extension is supported everywhere
This commit uses normal descriptor pools, sets and writes,
which are all availabel in base vulkan.
2022-08-19 16:44:59 +02:00
niki
fbb64a07af
vulkan: partially implement mipmaps
...
There is no real effect yet when rendering, however debugging the
application with renderdoc reveals that the mipmap generation is
already correct. There's probably something weird going on with the
sampling. I'll have to look into that next.
2022-08-09 00:57:07 +02:00
niki
c51b12a177
vulkan: make api design more senseful
2022-08-08 21:36:43 +02:00
niki
1647f6c9c2
vulkan: remove unnecessary quadindex code
2022-08-01 19:30:08 +02:00
niki
dcea056fcb
vulkan: properly implement samplers
2022-08-01 18:51:09 +02:00
niki
7bbc2888e2
vulkan: remove unnecessary recreation on resize
2022-08-01 17:38:23 +02:00
niki
98ebdd7871
vulkan: fix wireframe validation error
2022-08-01 16:07:37 +02:00
niki
29dcf3e8c0
vulkan: use hashing to determine pipeline
...
Until now we did a linear search in a vector to find the cashed
pipeline given a certain configuration. This is of course not a very
efficient way. This commit now uses a hashmap which should still be
fast even when there are a lot of pipelines already created.
2022-07-31 01:42:48 +02:00
niki
7bbc042fce
vulkan: remove redundant tabs
...
this makes reading the source files easier
and is more in line with the rest of the löve codebase
2022-07-30 01:16:56 +02:00
niki
94c58e1599
vulkan: fix video rendering
2022-07-30 00:26:49 +02:00
niki
1096b76054
vulkan: fix clean up
...
We now don't do any more greedy waiting when destroying vulkan objects.
2022-07-29 22:59:15 +02:00
niki
524e011133
vulkan: make Texture::uploadByteData async
...
Before this commit we would greedily wait for the upload to be complete
before exiting the function. This is of course not correct, since
we might be changing data that is still being used in a render in
flight. Of course we also need to cleanup the resources asynchronously
after the frame has been rendered fully.
2022-07-29 22:35:35 +02:00
niki
7a3e9ed71e
vulkan: fix uniform buffer descriptor
...
There was a bug where the count of used builtin uniform buffer objects
was not advanced. This caused another problem since vulkan requires
a certain alignment for the buffer. This commit fixes both of those
things.
2022-07-29 21:04:35 +02:00
niki
fb6457f57d
vulkan: move descriptor set logic into Shader
...
Using the extension VK_KHR_push_descriptor makes the code a lot easier.
Using it makes us able to set set descriptor sets dynamically.
2022-07-19 02:36:02 +02:00
niki
6916182a79
vulkan: implement getAPIStats
2022-07-16 23:46:03 +02:00
niki
913aab0226
vulkan: implement setActive
2022-07-16 23:27:54 +02:00
niki
9b7cfef5ef
vulkan: implement setScissor
2022-07-16 23:19:24 +02:00
niki
974c50c751
vulkan: partially implement clear
...
Only works for color attachments for now.
2022-07-16 21:45:27 +02:00
niki
ac9d8ec2a0
vulkan: fix canvas rendering
...
Sometimes canvas commands wouldn't get executed.
This was because when the window gets resized,
the command buffers would get recreated, and would thus
lose the recorded commands.
2022-07-16 15:55:48 +02:00
niki
95952c691d
vulkan: implement setRenderTargetsInternal
...
basic usage of canvases now works.
Colors probably aren't correct yet.
2022-07-15 01:44:07 +02:00
niki
0ae81091d1
vulkan: use dynamic rendering
...
This vulkan 1.3 feature will make the code simpler when dealing
with off screen render targets (i.e. löve canvases)
2022-07-14 18:01:46 +02:00
niki
38f15ae97d
vulkan: implement cull and winding
2022-07-13 17:27:11 +02:00
niki
c6d79ae87e
vulkan: implement setColorMask
2022-07-13 16:50:28 +02:00
niki
a591b2b99e
vulkan: implement setBlendState
2022-07-13 16:37:16 +02:00
niki
04fb789649
vulkan: implement setPointSize
2022-07-13 16:05:12 +02:00
niki
4190807a20
vulkan: implement setWireframe
2022-07-13 15:55:14 +02:00
niki
0834408b90
vulkan: implement draw(DrawCommand)
...
Now love.graphics.point and love.graphics.line works
2022-07-13 13:56:00 +02:00
niki
14b8abeef5
vulkan: implement setColor
2022-07-11 17:17:32 +02:00
niki
c5327bfc4f
vulkan: fix some more memory leaks
2022-07-11 01:47:34 +02:00
niki
0759e8d513
vulkan: fix some memory leaks
2022-07-11 01:13:50 +02:00
niki
7fe2a2d821
vulkan: fix vertex format
2022-07-10 22:52:03 +02:00
niki
ef08282f0d
vulkan: implement getRendererInfo
2022-07-10 19:13:10 +02:00