Commit Graph

34 Commits

Author SHA1 Message Date
Sasha Szpakowski e20f018272 Change the 'viewformats' texture setting field to be a list of pixel formats.
Replace Texture:hasViewFormats with Texture:getViewFormats.
2024-02-24 23:42:28 -04:00
Sasha Szpakowski 42812ad521 Add texture views. Fixes #2022.
Add love.graphics.newTextureView(basetexture, viewsettings). Requires GLSL4 support.
Add 'viewformats' boolean setting to texture setting tables.
Add Texture:hasViewFormats.

The viewsettings table has the following fields:
  format = nil, -- set this to a pixel format to override the base format. It must have the same number of bytes per pixel as the original, and the 'viewformats' setting on the original texture must be true for this to work. Cannot be used for compressed or depth/stencil textures.
  type = nil, -- set this to a texture type to override the base texture type. 2d base textures can make [2d, array] views. [array, cube] base textures can make [2d, array, cube] views.
  mipmapstart = nil, -- set to a number to use a less detailed mipmap level as a base.
  mipmapcount = nil, -- set to a number to override the number of mipmaps in the texture view.
  layerstart = nil, -- set to a number to use a specific layer or cube face as a base.
  layers = nil, -- set to a number to override the number of layers in an array texture view.
2024-02-24 15:45:43 -04:00
Sasha Szpakowski d880c48502 Clean up some internal texture data upload parameters. 2024-02-17 14:10:38 -04:00
Sasha Szpakowski 25e008e20c metal: remove a redundant memcpy when uploading pixels to a texture. 2024-02-10 23:17:10 -04:00
Sasha Szpakowski 64a30f177f Merge branch 'main' into 12.0-development 2024-02-10 12:24:48 -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 059cab0364 metal: implement buffer/texture debug names. 2023-12-13 20:27:58 -04:00
Sasha Szpakowski 343d192f10 Compressed texture formats have explicit sRGB variants 2023-10-14 15:01:01 -03:00
Sasha Szpakowski f6cdbdc868 Merge branch 'main' into 12.0-development 2022-12-31 22:46:34 -04:00
Alex Szpakowski 3a5c3df02f Add sync and async texture and buffer readback APIs.
- Add imagedata = love.graphics.readbackTexture(texture, [slice, mipmap, x, y, w, h, [dest, destx, desty]]).
- Add readback = love.graphics.readbackTextureAsync(texture, [slice, mipmap, x, y, w, h, [dest, destx, desty]]).
- Add bytedata = love.graphics.readbackBuffer(buffer, [offset, size, [dest, destoffset]]).
- Add readback = ove.graphics.readbackBufferAsync(buffer, [offset, size, [dest, destoffset]]).
- Deprecate Texture:newImageData.

The async variants return a new GraphicsReadback object. It has the following methods:
- isComplete()
- hasError()
- wait()
- getBufferData()
- getImageData()
- update() (called automatically every frame by love, not normally needed).

Support notes:
- readbackBuffer and readbackBufferAsync require buffer copying support.
- readbackTexture with a render target (canvas) is always supported. readbackTexture with a non-render-target requires copy-texture-to-buffer support.
- readbackTextureAsync with a render target requires copy-render-target-to-buffer support. readbackTextureAsync with a non-render-target requires copy-texture-to-buffer support.
2022-05-30 21:53:55 -03:00
Alex Szpakowski bc1c38d361 improve logic for detecting when Texture:generateMipmaps is supported 2022-02-19 16:34:52 -04:00
Alex Szpakowski f4a85f42df metal: Apple Silicon macs also support rgba4 / rgb5a1 / rgb565. 2022-01-24 21:19:40 -04:00
Alex Szpakowski a5351e5046 metal: improve detection of rgba32f format filter and MSAA support. 2022-01-23 11:28:09 -04:00
Alex Szpakowski 1cf0073cf4 metal: use a fallback for fonts when luminance-alpha isn't supported. 2022-01-22 14:41:42 -04:00
Alex Szpakowski 3ecae61189 metal: improve texture initialization. 2022-01-16 14:18:34 -04:00
Alex Szpakowski 44d87ff7ce metal: fix textures not being tagged with compute-write flags. 2022-01-16 13:47:18 -04:00
Alex Szpakowski 4e1c4a6afe metal: some fixes for MSAA 2022-01-16 13:44:29 -04:00
Alex Szpakowski cf57c3eedf update copyright year for metal files 2022-01-05 21:13:53 -04:00
Alex Szpakowski 9709f95194 metal: fix structs in uniforms. 2022-01-01 17:41:23 -04:00
Alex Szpakowski e2c397355c metal: implement copyBufferToTexture and copyTextureToBuffer. 2022-01-01 15:48:43 -04:00
Alex Szpakowski 40aa50662a Merge branch '12.0-development' into metal 2022-01-01 15:36:57 -04:00
Alex Szpakowski 759937a458 metal: fix depth24stencil8 fallback on macOS 2021-12-24 22:20:25 -04:00
Alex Szpakowski dab174b120 metal: fix a couple compiler warnings 2021-12-24 18:04:11 -04:00
Alex Szpakowski 2ec9f88f7a metal: more robust render pass handling.
Initial implementation of captureScreenshot.
Fix getStats().shaderswitches.
Fix getStats().drawcalls.
2021-04-04 23:47:58 -03:00
Alex Szpakowski 2d2918a254 Merge branch '12.0-development' into metal 2021-03-26 21:42:08 -03:00
Alex Szpakowski e1d5f3b010 metal: fix Texture:setWrap/setFilter 2021-03-25 20:41:05 -03:00
Alex Szpakowski 4639e7330e metal: initial implementation of Texture:newImageData. 2021-03-25 20:36:31 -03:00
Alex Szpakowski 20a92a4106 Merge branch '12.0-development' into metal 2020-12-22 22:37:17 -04:00
Alex Szpakowski 9d2dca5740 metal: nogame and error screens work.
- implement love.graphics.setColor
- implement default textures
- hacky implementation of default uniform data
- use texture swizzles to set up LA8 (text) texture data
- shader reflection work
2020-06-13 20:29:23 -03:00
Alex Szpakowski ceb1e4459b metal: initial sampler cache implementation 2020-04-26 09:09:26 -03:00
Alex Szpakowski acc4064a6c metal: implement stubs for missing methods 2020-04-22 23:18:00 -03:00
Alex Szpakowski 7c1a344c23 Minor cleanup of some metal helper code 2020-02-28 23:00:07 -04:00
Alex Szpakowski 455b0c2c6b metal: more work on MSAA textures 2020-02-15 16:00:55 -04:00
Alex Szpakowski 64b38459cf Update metal backend for Image+Canvas->Texture changes 2020-02-15 15:44:23 -04:00