Commit Graph

3723 Commits

Author SHA1 Message Date
Sasha Szpakowski 131b6c51e0 graphics: fix recursion when creating a default texture. 2024-01-06 15:22:02 -04:00
Sasha Szpakowski aaab9791d5 Improve backbuffer depth buffer.
- Setting the depth buffer for the backbuffer is now done as a boolean instead of a bit depth integer, in love.conf or love.window.setMode.
- Error if depth writes are enabled when the active canvas setup or backbuffer does not have a depth buffer (now it matches stencil behaviour).
- Don't allocate a backbuffer depth-stencil buffer if they're not requested. Metal also determines the format for that buffer based on which combination of depth and stencil is requested. OpenGL still has to allocate the depth-stencil buffer for the backbuffer all the time, because changing it requires the context to be recreated.
2024-01-06 15:21:06 -04:00
Sasha Szpakowski 621a7547d2 metal: tweak initial internal uniform buffer size 2024-01-05 20:37:49 -04:00
Sasha Szpakowski 04462ece30 graphics: clean up some stencil code 2024-01-04 21:35:52 -04:00
Sasha Szpakowski 404b2f2c4e address VS compiler suggestion about constexpr 2024-01-04 21:35:18 -04:00
Sasha Szpakowski 9b5851e039 Move current love.graphics.setStencilMode functionality to setStencilState.
Add new higher level love.graphics.setStencilMode function.
- Add love.graphics.setStencilMode(mode [, value = 1])
- Add love.graphics.setStencilMode().
- Add mode, value = love.graphics.getStencilMode().

The possible modes are "off" (same as no parameters), "draw", and "test".
The "draw" mode disables color writes and sets the stencil state to ("replace", "always") using the given value.
The "test" mode enables color writes and sets the stencil state to ("keep", "equal") using the given value to compare to.
2024-01-04 16:23:49 -04:00
Sasha Szpakowski 77c5ea1d6b graphics: move buffer:clear error checking to high level code 2024-01-02 11:13:31 -04:00
Sasha Szpakowski af840bb2cf metal: texel buffers align their size according to device requirements 2024-01-01 16:12:24 -04:00
Sasha Szpakowski 0523aa6f8f metal: check for depth compare mode support before setting it on a texture. 2024-01-01 15:41:31 -04:00
Sasha Szpakowski 9b537ede2b Fix out of bounds memory access in Buffer:setArrayData with matrices.
Issue #1986
2023-12-31 16:32:12 -04:00
Sasha Szpakowski dbcdbc47d5 Add debugname field to shader options table. 2023-12-29 16:51:24 +01:00
Sasha Szpakowski 8872497561 graphics: handle default textures in high level code.
Previously each backend had to set up default textures with its own code, which needs some care for it to be robust.
2023-12-27 21:28:02 +01:00
Sasha Szpakowski e42019c59e Add buffer stats to love.graphics.getStats.
- Add 'buffers' field, to count the total number of graphics buffer objects.
- Add 'buffermemory' field, to estimate the total number of bytes of graphics memory used by all buffers.
2023-12-25 23:25:46 +01:00
Sasha Szpakowski 9c6417776f metal: remove unneeded TODO 2023-12-25 23:24:07 +01:00
Ralty 1f8e3551aa Update wrap_Graphics.lua 2023-12-24 17:28:27 +07:00
Ralty b7362200c8 Fix deprecated love.graphics.stencil resetting stencilMode 2023-12-24 17:26:58 +07:00
Sasha Szpakowski eb552dfcb6 Fix compile warning 2023-12-23 16:54:00 +01:00
Sasha Szpakowski 059cab0364 metal: implement buffer/texture debug names. 2023-12-13 20:27:58 -04:00
Sasha Szpakowski 7b899fbc17 opengl: add version checks when setting debug names. 2023-12-13 20:27:31 -04:00
niki c8da517759 don't use optional for debugName 2023-12-14 00:42:19 +01:00
niki 364b5c3b7b adjust code styling 2023-12-14 00:16:38 +01:00
niki 7a25dfa7fc add texture:getDebugName and buffer:getDebugName 2023-12-14 00:09:08 +01:00
niki 834398335d fix buffer debugname is optional 2023-12-13 16:03:22 +01:00
niki a5d7ba1589 implement #1992
add debugname to settings table for texture and buffer,
which can be used for debugging in e.g. RenderDoc.
2023-12-13 14:28:34 +01:00
Sasha Szpakowski 8951635abc Merge branch 'main' into 12.0-development 2023-12-02 13:40:49 -04:00
Sasha Szpakowski 696007ee39 Don't unconditionally run love.jitsetup when love is used as a library 2023-11-27 23:14:36 -04:00
Miku AuahDark 6a298a74c2 jitsetup: Also disable JIT on ARM32 platform. 2023-11-27 12:47:23 +08:00
Miku AuahDark f4f3105ccd Call love.jitsetup during thread initialization too. 2023-11-27 12:13:56 +08:00
Miku AuahDark da3fdba7f4 Android: Remove calls to luaJIT_setmode.
Turning off JIT is now done in jitsetup.lua.
2023-11-27 11:35:37 +08:00
Sasha Szpakowski d21c9cb6de macOS/arm64: turn off JIT compilation by default. 2023-11-26 17:11:34 -04:00
Sasha Szpakowski 910533edda Initial code for sending flat-array matrices to storage buffers (untested). 2023-11-24 14:12:47 -04:00
Sasha Szpakowski 69dbb15027 Fix return value of Shape:testPoint. 2023-11-22 19:43:09 -04:00
Sasha Szpakowski 20ffe94349 vulkan: fix a consistency issue with texture samplers 2023-11-15 23:15:27 -04:00
Sasha Szpakowski 17362b6844 Restore no-parameter variant of love.graphics.setColorMask. 2023-10-30 18:55:26 -03:00
Sasha Szpakowski 6aaf0b22bf Address some compiler warnings 2023-10-21 13:55:43 -03:00
Sasha Szpakowski 5a0a6a1a27 All constructors for making a TrueType font take an optional settings table.
This supersedes the existing optional hinting and dpi scale parameters. The table's fields are:
{
  hinting = "normal",
  dpiscale = 1, -- nil will default to the current window DPI scale.
}
2023-10-20 20:19:30 -03:00
Sasha Szpakowski 8c13943f64 ImageData can track whether they're meant to be loaded into a Texture with a non-sRGB format when gamma correct rendering is enabled.
Fixes #1556.

* Add ImageData/CompressedImageData:setLinear and ImageData/CompressedImageData:isLinear.
  The flag is used as a hint when loading a texture from the data to determine if the format should not be treated as sRGB-encoded. The 'linear' flag in newImage overrides this.

* love.graphics.readbackTexture automatically sets the linear flag on ImageData it returns when the texture's format is linear.
  This allows an ImageData generated via readback to be fed back into a new Texture and the format will match the original Canvas.

* Also clean up some image decoding code.
2023-10-14 20:48:21 -03:00
Sasha Szpakowski 2aad15c865 Fix DistanceJoint type information 2023-10-14 16:42:31 -03:00
Sasha Szpakowski bd55100d56 metal: fix compile error 2023-10-14 15:02:28 -03:00
Sasha Szpakowski 343d192f10 Compressed texture formats have explicit sRGB variants 2023-10-14 15:01:01 -03:00
Sasha Szpakowski 9eec1754e7 opengl: fix clearing the depth buffer. 2023-10-14 10:30:51 -03:00
Sasha Szpakowski 983ea6c0e6 Remove explicit support for systems that don't support rgba8 canvases.
This is just a very small number of really old OpenGL ES 2 drivers.
2023-10-13 21:53:45 -03:00
Sasha Szpakowski 3865868358 Fix creating a linear rgba8 canvas when gamma correct rendering is on.
Fixes #1973
2023-10-13 21:41:32 -03:00
Sasha Szpakowski 37b9d7db11 Merge branch 'main' into 12.0-development 2023-10-11 22:05:55 -03:00
Sasha Szpakowski ba693500c4 Fix love.font.newBMFontRasterizer when it's given a single file param. 2023-10-11 22:05:33 -03:00
Sasha Szpakowski 86eb6df05c vulkan: don't hold onto ImageData references after loading an image.
Reduces CPU memory usage.
2023-10-09 20:22:04 -03:00
Sasha Szpakowski 90cd0be392 Merge pull request #1980 from nikeinikei/12.0-development
vk: correctly identify boolean uniforms
2023-10-09 16:17:16 -03:00
niki 88f6bb880e remove debug code 2023-10-09 20:16:01 +02:00
Sasha Szpakowski 5dc7b7d05b remove some redundant OpenGL API calls when clearing Canvases 2023-10-09 15:13:47 -03:00
Sasha Szpakowski 8958d155ab opengl: Fix blue component of love.graphics.setColorMask 2023-10-09 15:13:03 -03:00