Commit Graph

2104 Commits

Author SHA1 Message Date
niki 4b13e5b99d vulkan: fix linux build attempt 4 2022-09-18 22:04:20 +02:00
niki 87c9b74c8e vulkan: fix linux build attempt 5 2022-09-18 22:00:28 +02:00
niki faf36e5a92 vulkan: fix linux build (attempt 2) 2022-09-18 21:03:18 +02:00
niki 6de16f18e9 vulkan: fix linux build 2022-09-18 20:50:06 +02:00
niki 850749fac0 linux build: use c++14 2022-09-18 20:39:55 +02:00
niki 40ff636d6c vulkan: fix c++11 compatibility 2022-09-18 16:50:12 +02:00
niki 9fde550ab5 prioritize opengl over vulkan 2022-09-18 16:11:08 +02:00
niki 9af9bb5bd5 vulkan: keep track of window stencil buffer 2022-09-18 14:16:42 +02:00
niki 6e944f9db8 vulkan: fix memory leak in Shader 2022-09-18 05:55:37 +02:00
niki 9a91cfd593 vulkan: use staging buffer for Buffer operations 2022-09-18 04:31:24 +02:00
niki bf6915ae73 vulkan: garbage collect unused objects 2022-09-18 02:57:29 +02:00
niki cf099946a1 vulkan: fix depth stencil textures 2022-09-18 00:18:32 +02:00
niki e128f3453e vulkan: implement compressed textures 2022-09-17 20:32:34 +02:00
niki aec9e201f5 vulkan: implement volume textures 2022-09-16 13:49:31 +02:00
Klonan ae8b5551de FIx polyline adding NaN normals, which breaks the line rendering 2022-09-16 11:02:31 +02:00
niki 3a74fecb22 vulkan: outsource used libraries 2022-09-16 02:25:36 +02:00
niki ccf8cb45c9 vulkan: implement storage and texel buffers 2022-09-16 00:30:26 +02:00
niki f4c38eb00a Revert "vulkan: use push constants for builtin uniforms"
This reverts commit 47e3fc85d2.
2022-09-15 15:55:47 +02:00
niki 47e3fc85d2 vulkan: use push constants for builtin uniforms
when available
2022-09-15 15:17:06 +02:00
niki d1da47dbf0 vulkan: implement screenshots 2022-09-14 17:31:53 +02:00
niki 4e59b563a4 vulkan: implement texture msaa 2022-09-14 14:15:57 +02:00
niki 726cd147c8 vulkan: render targets with mip and slice 2022-09-14 13:48:13 +02:00
niki 7866dde319 vulkan: use sdl to dynamically load vulkan 2022-09-14 13:31:09 +02:00
niki 82f079eebd vulkan: fix linux build 2022-09-13 17:39:12 +02:00
niki 46598480c4 vulkan: try fix github actions linux build 2022-09-13 14:34:11 +02:00
niki 6a2d1a9edd vulkan: use dynamic loading
If Vulkan ist not available on a system the program will still run,
and it will fallback to opengl.
2022-09-13 14:11:24 +02:00
niki fb44ddb546 vulkan: document change in changes.txt 2022-09-13 13:09:57 +02:00
niki faeca1c4bc vulkan: fix wrong image layout validation warnings 2022-09-12 13:46:03 +02:00
niki 6d9f855bf4 Merge remote-tracking branch 'origin/12.0-development' into vulkan 2022-09-11 17:49:43 +02:00
niki 76199688f6 vulkan: implement discard 2022-09-11 17:09:38 +02:00
niki fd951909c0 vulkan: add more optional extensions
VK_KHR_dedicated_allocation, VK_KHR_buffer_device_address,
and VK_EXT_memory_budget can get used by VMA.
VK_KHR_spirv_1_4 can get used by the Shader.

VK_KHR_spirv_1_4 depends on VK_KHR_shader_float_controls.
VK_KHR_dedicated_allocation depends on VK_KHR_get_memory_requirements2
2022-09-11 15:03:40 +02:00
niki ef80e11b4d vulkan: add support for uniform texture arrays 2022-09-11 13:02:38 +02:00
niki 294761713f vulkan: fix bug: incorrect uniform values 2022-09-11 04:20:45 +02:00
niki 1658c89f3d vulkan: add support for custom depth/stencil tex 2022-09-11 01:57:23 +02:00
niki 816e3f01a2 vulkan: correctly order gpu commands 2022-09-10 19:21:31 +02:00
niki a93d153792 vulkan: adjust code styling 2022-09-10 17:40:46 +02:00
niki 57207606c0 vulkan: implement Shader::getVertexAttributeIndex 2022-09-10 15:27:45 +02:00
niki 2010675bff vulkan: fix typo 2022-09-09 23:42:28 +02:00
niki 8807c3dd37 vulkan: fix case where msaa = 1 2022-09-09 23:14:44 +02:00
niki 9025631231 vulkan: modify descriptor set allocation
Setting the size of each descriptor pool to one
was a hack introduced to make the code work on android.
Changing the code to now allocate all descriptor sets at once
should fix the previous crash.
Not tested yet.
2022-09-09 12:02:30 +02:00
slime bba1717130 metal: fix love.graphics.captureScreenshot 2022-09-02 10:53:52 -03:00
nikeinikei 502c1e83ab vulkan: more reserved usage flags of texture 2022-09-01 16:10:10 +02:00
nikeinikei adc02a4939 vulkan: optionally use VK_KHR_PUSH_DESCRIPTOR 2022-09-01 15:01:40 +02:00
niki 7185d7356f vulkan: fix enabling extensions 2022-08-31 19:50:03 +02:00
niki b28d2df6f8 vulkan: fix crash 2022-08-31 02:35:56 +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