Commit Graph

273 Commits

Author SHA1 Message Date
Sasha Szpakowski e47acd766d Show a popup error if love.window loads but love.graphics does not.
Also include backend-specific errors in graphics initalization error messages.
Improves visibility of errors related to vulkan/metal/opengl initialization.
Related to #2335.
2026-07-12 11:01:02 -03:00
Sasha Szpakowski 540e681454 vulkan: fix validation errors when VK_EXT_full_screen_exclusive is used 2026-07-05 11:11:19 -03:00
Sasha Szpakowski 4758d54af6 vulkan: handle swap chain surface loss errors. 2026-07-05 10:50:22 -03:00
Sasha Szpakowski fc98c7d2e1 android: attempt to use vulkan by default when vulkan 1.1+ is supported. 2026-06-28 19:15:40 -03:00
Sasha Szpakowski 84fe074d06 vulkan+windows: tell the driver we don't want exclusive fullscreen, when in desktop-fullscreen mode. 2026-06-21 21:32:35 -03:00
Sasha Szpakowski 142ce87335 graphics: improve setScissor's handling of fractional DPI-scaled coordinates. 2026-06-21 14:58:22 -03:00
Sasha Szpakowski 2f8c88c218 vulkan: explicitly specify triple-buffering instead of minBuffers+1. 2026-06-14 21:28:35 -03:00
Sasha Szpakowski 8884fb3f10 graphics: clean up some shared backbuffer settings code. 2026-06-14 19:31:40 -03:00
Sasha Szpakowski 6b144d3494 vulkan: add more detail to some error messages 2026-06-14 16:48:34 -03:00
Sasha Szpakowski 999a23c65a vulkan: attempt to work around swapchain bug in older Linux drivers when going fullscreen
fixes #2244
2026-04-16 20:53:54 -03:00
Sasha Szpakowski 4d25b8c97a vulkan: fix initialization if love.graphics is loaded before love.window. 2026-03-31 20:21:14 -03:00
Sasha Szpakowski 9d3b1c7c73 Merge pull request #2297 from nikeinikei/validation_fix
fix validation warnings relating to swapchain
2026-03-28 16:11:57 -03:00
Sasha Szpakowski ab8dfaa1da vulkan: fix graphics state after a texture/buffer readback.
Fixes #2296.
2026-03-23 18:39:50 -03:00
niki 1a1265d646 fix validation warnings relating to swapchain
for more information: https://docs.vulkan.org/guide/latest/swapchain_semaphore_reuse.html
2026-03-23 22:38:14 +01:00
John Doe fc5eeb11a3 Fix copyright notice date 2026-01-21 18:49:11 +00:00
Sasha Szpakowski e5055d3cc2 vulkan: fix graphics state if readbackBuffer is called while a canvas is active. 2025-08-01 21:25:38 -03:00
John Doe 6f08eb94c6 Update copyright notice with correct year 2025-07-12 23:19:22 +01:00
Sasha Szpakowski ae2e68f414 vulkan: populate oldSwapchain field during swap chain creation. Also fix crash if window is already closed, when quitting.
Fixes #2174
2025-04-07 20:56:22 -03:00
Sasha Szpakowski bda679d629 vulkan: fix extra redundant swapchain recreation happening on resize. 2025-02-02 17:05:48 -04:00
Sasha Szpakowski 0e5133e1f7 vulkan: prefer native drivers over vulkan-on-d3d12. 2025-02-02 11:13:09 -04:00
Sasha Szpakowski cc88b94ac4 vulkan: pick the first device with the highest score when multiple have the same score. 2025-02-02 10:57:22 -04:00
Sasha Szpakowski 25a2753b72 vulkan: fix 1 frame delay of backbuffer resize
Fixes #2128.
2025-02-01 17:08:33 -04:00
Sasha Szpakowski 92e79ab609 vulkan: reduce memory usage when many shaders are being used with many draw calls.
Descriptor pools are now shared among shaders that have the same descriptor counts, instead of being unique per shader.
2025-01-26 14:45:51 -04:00
Sasha Szpakowski dd3ebae7a1 vulkan: don't try to enable anisotropic filtering if anisotropy is 1. 2025-01-25 12:50:57 -04:00
Sasha Szpakowski 324b0f831b vulkan: improve error messages 2025-01-25 12:11:58 -04:00
Sasha Szpakowski add3fe3418 vulkan: only debug print that initialization failed if graphics debug mode is enabled. 2025-01-11 14:55:46 -04:00
Sasha Szpakowski 652b012b02 vulkan: improve module initialization code to exit to other backends if there's a device but it's not suitable for love.
Disallow software rendering (CPU devices) with vulkan by default. The environment variable LOVE_GRAPHICS_VULKAN_ALLOW_SOFTWARE can be set to 1 to override that behaviour.
2025-01-11 14:55:23 -04:00
Sasha Szpakowski f0a7a19ebc vulkan: fix crash on quit if no window has been created. 2025-01-04 16:19:30 -04:00
Sasha Szpakowski aa79ed1ad1 Fix typo 2024-12-20 23:45:31 -04:00
Sasha Szpakowski b87aed937c vulkan: clean up framebuffers when textures they reference are deleted
Fixes corruption/crashing in some situations if a new texture's image view has the same pointer as a previously deleted texture's image view.
2024-12-20 23:37:06 -04:00
Sasha Szpakowski da365e2ab9 Add t.graphics.lowpower = true/false love.conf option (defaults to false).
Add love.graphics.isLowPowerPreferred.

It's currently hooked up in the vulkan backend.
#2127
2024-12-20 21:02:20 -04:00
Sasha Szpakowski fe4fc84659 vulkan: implement MSAA textures. 2024-12-01 14:23:13 -04:00
Sasha Szpakowski d73036f44d vulkan: safer cleanup on shutdown 2024-10-20 14:35:23 -03:00
Sasha Szpakowski 337d8fa048 remove source code support for SDL2 2024-10-18 20:22:26 -03:00
Sasha Szpakowski 5383390937 vulkan: fix initialization when SDL3 is used 2024-10-11 18:59:32 -03:00
Sasha Szpakowski 28393cdfd5 Fix compilation on Windows when SDL3 is used 2024-10-06 20:27:59 -03:00
Sasha Szpakowski e986160431 Use SDL3-compatible SDL includes when SDL3 headers are available 2024-10-06 20:27:28 -03:00
Sasha Szpakowski eeec2429e2 vulkan: use subpass dependencies for layout transitions when switching canvases. 2024-09-30 23:04:58 -03:00
Sasha Szpakowski 3a6833ffb5 fix compile error 2024-09-30 20:15:11 -03:00
Sasha Szpakowski 1ee89154c0 vulkan: memory barrier after compute dispatches. 2024-09-30 19:58:45 -03:00
Sasha Szpakowski 8e6efac595 vulkan: fix a crash when the window has no depth or stencil. 2024-09-28 18:30:26 -03:00
Sasha Szpakowski 50ff1e4d2b use location numbers for vertex input attributes, instead of name-based binding.
- add 'location' named field to buffer and mesh vertex format tables, replaces 'name' field.
- location numbers are expected to match 'layout (location = #)' qualifiers in vertex inputs in shader code.
- deprecate vertex inputs in shader code that don't have layout location qualifiers.
- love's default vertex attributes use location 0 for position, 1 for texcoord, and 2 for color.
- add new variants of Mesh:attachAttribute, setAttributeEnabled, and isAttributeEnabled which take location numbers instead of names.

Improves draw performance in vulkan and metal backends.
2024-09-07 18:06:03 -03:00
Sasha Szpakowski 654585ccc2 vulkan: don't try to enable blending with integer canvases. 2024-08-14 21:00:24 -03:00
Sasha Szpakowski 0ca8cb4b41 vulkan: fix negative scissors not being clamped. 2024-08-05 10:21:10 -03:00
Sasha Szpakowski 6acdd5f01f vulkan: fix depth texture compare mode setting. 2024-07-11 21:29:58 -03:00
Sasha Szpakowski 9f18595559 vulkan: reduce memory use in some situations 2024-06-28 21:53:03 -03:00
Sasha Szpakowski b16e1d6e27 vulkan: don't periodically clean up render pass objects.
It's not needed.
2024-06-24 18:41:52 -03:00
Sasha Szpakowski 35f20eb053 vulkan: move cached PSO ownership to shaders.
Fixes issues with state corruption when a shader is created with the same memory address as a recently deleted shader.
2024-06-24 18:31:34 -03:00
Sasha Szpakowski 10c435cfc9 vulkan: fix a crash in setCanvas. 2024-06-22 21:05:37 -03:00
Sasha Szpakowski 54a31ec615 Minimum required opengl version is now OpenGL 3.3 / OpenGL ES 3.0. 2024-06-19 18:08:09 -03:00