Commit Graph

2103 Commits

Author SHA1 Message Date
niki 9f452474c7 vulkan: remove unnecessary getDevice() calls 2023-01-31 01:07:02 +01:00
Sasha Szpakowski defe811f62 Allow creating a mipmapped texture with less than the full mip range.
When creating a texture with user-specified mipmaps, it no longer errors if all mipmaps down to 1x1 aren't present.

Added a 'mipmapcount' field to the settings table in newImage and friends (only used when mipmaps are enabled for the texture.) If it's set, only mipmap levels up to the specified count will be created instead of always creating the full range.

Old OpenGL ES 2 devices don't support loading a mipmapped texture without the full mipmap range, so there's a new 'mipmaprange' boolean field in the table returned by love.graphics.getSupported.
2023-01-29 16:02:39 -04:00
Sasha Szpakowski 8706f0ef6a Rename Texture:isRenderTarget to Texture:isCanvas. 2023-01-29 15:58:31 -04:00
niki 0e1f645538 vulkan: clean up glslang objects properly
By using smart pointers we don't want to worry about
explicitely deleting.
2023-01-29 01:14:06 +01:00
niki f01457a610 vulkan: remove internal Shader::attach call
Shader::attach() should not be called internally
by a graphics backend.
2023-01-27 14:10:19 +01:00
nikeinikei fdc860e6b6 Merge branch 'love2d:12.0-development' into 12.0-development 2023-01-27 13:53:32 +01:00
niki 377d269f4a vulkan: remap bindings to prevent clash
Vulkan does not differentiate between between bindings for textures
and buffers, as opposed to opengl. This can lead to situations, where
different uniforms get assigned the same binding leading to a crash,
when trying to update a descriptor set with the wrong type.
This patch solves this problem, by remapping the bindings when needed.
2023-01-27 02:36:10 +01:00
niki a2466a4a1b vulkan: use temporary pipeline cache 2023-01-22 00:17:42 +01:00
Sasha Szpakowski 9edae19d74 Merge branch 'main' into 12.0-development 2023-01-14 22:40:13 -04:00
Sasha Szpakowski 592c306276 Fix images with mipmaps when ANGLE is used with an AMD gpu. 2023-01-14 22:35:00 -04:00
Sasha Szpakowski 8cac37b811 Fix typo 2023-01-14 12:17:57 -04:00
Sasha Szpakowski 8ae7342875 Improve variable name readability in line rendering code. 2023-01-14 12:13:35 -04:00
Sasha Szpakowski 94d05e319b Clear auto-generated temporary depth/stencil buffers in setCanvas.
Previously it would discard them, which needed the user to call love.graphics.clear afterward to get them into a valid state.

The current code has suboptimal performance if the user still calls clear after setCanvas (a common situation), so more optimizations will probably be needed.

Fixes #1843.
2023-01-11 18:17:22 -04:00
Sasha Szpakowski 249d90067e Don't discard the backbuffer depth/stencil in setCanvas.
#1893.
2023-01-11 08:58:12 -04:00
niki 7e7d2884c8 vulkan: fix shader crash 2023-01-09 16:37:12 +01:00
Sasha Szpakowski 8572d4f935 Merge branch 'text-shaping' into 12.0-development 2023-01-08 20:48:48 -04:00
Sasha Szpakowski 52283425ca metal: fix crashes on the iOS Simulator 2023-01-08 20:37:05 -04:00
Sasha Szpakowski c2778587f7 Merge branch '12.0-development' into text-shaping 2023-01-08 20:31:37 -04:00
Sasha Szpakowski b0f79f78a5 vulkan: don't pass a SDL_Window into GetInstanceExtensions, it's unneeded. 2023-01-08 15:21:26 -04:00
Sasha Szpakowski 6a6ec2eeb6 Merge branch 'main' into 12.0-development 2023-01-06 17:15:29 -04:00
Sasha Szpakowski d085f44e6a Merge branch '12.0-development' into text-shaping 2023-01-01 12:18:54 -04:00
Sasha Szpakowski 22b6388a96 Merge pull request #1888 from steveRoll-git/main
Allow Canvas:renderTo to accept varargs
2023-01-01 10:59:42 -04:00
Sasha Szpakowski f6cdbdc868 Merge branch 'main' into 12.0-development 2022-12-31 22:46:34 -04:00
Sasha Szpakowski 0b75f6cfa5 Missed some files... 2022-12-31 22:36:48 -04:00
Sasha Szpakowski c823dbca96 Update copyright year for 2023 2022-12-31 22:25:49 -04:00
Ron Tseytlin c5d72846c4 Allow Canvas:renderTo to accept varargs
The varargs will be forwarded to the function.
2022-12-31 02:32:54 +02:00
Sasha Szpakowski 9502942b7b font rendering: reimplement tab-as-spaces support. 2022-12-28 19:46:48 -04:00
Sasha Szpakowski bcc4a45e46 Merge pull request #1885 from nikeinikei/12.0-development
Vulkan fixes
2022-12-27 13:32:08 -04:00
niki 74027ad780 vulkan: remove unneeded Module::getInstance call 2022-12-27 13:55:35 +01:00
niki cd07a464fb vulkan: document future possibility for vsync
Right now we have to recreate the swapchain everytime vsync
/ present mode changes.
VK_EXT_swapchain_maintenance1 might remove the need for this.
However, right now there are not any drivers yet that support it.
In the future, this might be the better way to handle this situation.
2022-12-27 13:54:46 +01:00
Matt Durgavich c441797976 Prefer snprintf over sprintf in OpenGL 2022-12-26 20:57:56 -05:00
Sasha Szpakowski 7a0f6621e7 Initial (WIP) Harfbuzz text shaping integration.
This a significant refactor / rewrite of much of the love.graphics Font code.
Text positioning is now split into TextShaper classes in the love.font module. This isn't exposed to users yet.
BMFonts and ImageFonts use the same text shaping as before (in the new TextShaper API). Fonts loaded via FreeType now use Harfbuzz for text shaping.

The new code isn't at feature-parity with the old code yet. Harfbuzz-based text shaping enables kerning support in more fonts, character combining into ligature glyphs, and directions other than left-to-right (this isn't supported in love yet).
2022-12-26 19:06:08 -04:00
niki 00c65d63fe vulkan: fix incorrect descriptor sets 2022-12-25 23:09:57 +01:00
niki 8694c44207 vulkan: fix incorrect textures in shader uniforms 2022-12-24 22:37:58 +01:00
niki ccca355664 vulkan: fix love.window.setVsync 2022-12-22 01:27:05 +01:00
nikeinikei eec94ccc99 Merge branch 'love2d:12.0-development' into 12.0-development 2022-12-21 17:20:43 +01:00
niki 30bdb03f3b vulkan: code styling 2022-12-21 17:20:13 +01:00
niki 92b5278b31 Merge branch '12.0-development' of https://github.com/nikeinikei/love into 12.0-development 2022-12-21 16:29:55 +01:00
niki 2d5b4966d3 vulkan: add missing vulkan errors 2022-12-11 23:21:47 +01:00
Sasha Szpakowski a37c2fb9a9 Mesh:attachAttribute: add an optional start array index parameter.
Allows easier use of a single instance buffer with multiple draws when instanced attributes are used (#1878).
2022-12-10 21:11:59 -04:00
Sasha Szpakowski f17d3d94f1 Rename love.graphics Text objects to TextBatch.
The name Text is too generic compared to what they're designed for, it made people unnecessarily confused about their purpose.
2022-12-08 18:46:44 -04:00
Sasha Szpakowski c0c195ec47 Fix lua wrapper return value count for Texture:setWrap. 2022-12-07 22:51:42 -04:00
Sasha Szpakowski c89192990b vulkan: potentially improved highdpi support.
Mostly untested.
2022-12-06 20:36:36 -04:00
Sasha Szpakowski d70514b2d1 vulkan: when vsync is off prefer immediate instead of mailbox mode, for now.
Fixes #1852. This might be reevaluated in the future.
2022-12-04 17:51:11 -04:00
nikeinikei a2cf8821c0 Merge branch 'love2d:12.0-development' into 12.0-development 2022-11-26 05:30:31 +01:00
Sasha Szpakowski 6599697835 opengl: Fix love_PixelCoord and love_ScreenSize in shaders.
Fixes #1866.
2022-11-25 23:27:04 -04:00
niki c0d0e73a91 Merge branch '12.0-development' of https://github.com/nikeinikei/love into 12.0-development 2022-11-12 03:37:01 +01:00
niki 12bc2b4545 vulkan: fix code formatting
now indenting only uses tabs and not spaces
2022-11-12 03:36:58 +01:00
nikeinikei 105c2efb8d Merge branch 'love2d:12.0-development' into 12.0-development 2022-11-12 03:25:14 +01:00
niki 97a7042143 vulkan: remove instanceVersion class member
This is not actually needed. The api version specified when creating
the vulkan instance should be the highest api version that might
be used by the application, which can be higher than the supported
instance version. VMA can make use of vulkan 1.3 features so this
can be hardcoded to VK_API_VERSION_1_3.
2022-11-12 03:24:07 +01:00