Commit Graph

1444 Commits

Author SHA1 Message Date
Miku AuahDark 81272ba5b5 Only use pinned memory on AMD GPUs.
As per in Discord, for some reason Intel driver in Linux(?) expose
pinned memory extension and causes driver crash in one test case.
2020-12-15 10:25:38 +08:00
Jordan Christiansen 0fd53e2e3d Disable GL_EXT_texture_array on OpenGL ES 2.0
The Nvidia Tegra 3 driver for Android (used by Ouya) erroneously claims
to support the desktop-oriented GL_EXT_texture_array extension. On
desktop GPUs using (non ES) OpenGL, the glTexImage3D and similar
functions are always present, and the GL_EXT_texture_array extension
simply adds support for texture arrays to those functions. On OpenGL ES
2.0, those functions do not exist, and GL_OES_texture_3D is required to
define them.

Calling glTexImage3D on the Tegra 3 causes a segfault. This change works
around the issue by manually setting GLAD_EXT_texture_array to 0 on
OpenGL ES 2.0 systems, which causes LÖVE to avoid codepaths that assume
that the 3D texture functions are available. It doesn't make sense for
any OpenGL ES 2.0 GPU to claim support for GL_EXT_texture_array.

Fixes #1647
2020-12-09 19:54:36 -06:00
Alex Szpakowski e32935e0f6 Backport Canvas memory stats fix from 12.0.
Fixes #1642
2020-11-11 15:11:00 -04:00
Alex Szpakowski 5031cb5f56 Images don't hold on to RAM copies of their contents anymore 2020-11-02 18:17:07 -04:00
Alex Szpakowski e10444c21f Move Texture:generateMipmaps error handling out of backend code 2020-10-25 23:13:50 -03:00
Alex Szpakowski 442f37e0a1 Fix a potential bug in captureScreenshot on some older systems 2020-10-25 23:00:12 -03:00
Alex Szpakowski 7934ce0a66 Handle backbuffer MSAA manually in love.graphics code
Previously love would use SDL APIs to make the system (WGL etc) handle it, which meant the OpenGL context had to be recreated whenever MSAA changed.
2020-10-25 22:24:07 -03:00
Alex Szpakowski 4b9c648c8b metal: work towards shader uniform implementation.
Misc cleanup.
2020-10-24 00:33:02 -03:00
Alex Szpakowski 7a50f32585 Merge branch '12.0-development' into metal 2020-07-29 18:21:19 -03:00
Alex Szpakowski b011487a3e Add new texel buffer type.
GLSL 3+ shaders can read from texel buffers by declaring a uniform samplerBuffer variable and calling texelFetch with a 0-based index, in the shader code. All attributes in a texel buffer's format array must have the same data format (e.g. all 'floatvec4' formats).

Shader:send accepts a texel Buffer for samplerBuffer uniforms.

Added 'texelbuffer' to love.graphics.getSupported (requires GLSL 3+ and desktop OpenGL).
Added 'texelbuffersize' to love.graphics.getSystemLimits. Returns the max number of values in a texel buffer (array length multiplied by the number of attributes declared in the buffer's format array).
2020-07-28 20:44:36 -03:00
Alex Szpakowski d75f5df80d Add Buffer methods
flush, setArrayData, setElement, getElement, getElementCount, getElementStride, getSize, getFormat
2020-07-25 19:48:54 -03:00
Alex Szpakowski 1d087cc5c2 Fix Mesh/Buffer:flush uploading more data than it needs to, sometimes. 2020-07-21 21:56:47 -03:00
Alex Szpakowski c2be89f130 Fix crashes when creating a Buffer. 2020-07-21 20:50:49 -03:00
Alex Szpakowski 3f4161dd5d Merge branch '12.0-development' into GraphicsBuffer 2020-07-20 18:13:27 -03:00
Alex Szpakowski f848b201ae Merge branch 'master' into 12.0-development 2020-07-18 21:29:36 -03:00
Alex Szpakowski dde3db3006 Apply Image:replacePixels/missing text workaround to more ATI drivers
issue #1563
2020-07-12 18:25:55 -03:00
Alex Szpakowski d60d8867f4 Possible workaround for an Intel driver bug with readable depth buffers
https://github.com/love2d/love/issues/1592
2020-07-11 17:21:26 -03:00
Alex Szpakowski 9aa9319eb5 metal: implement depth/stencil state 2020-06-14 21:14:56 -03: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 2c4bfab1de Merge branch '12.0-development' into GraphicsBuffer 2020-05-23 20:29:38 -03:00
Alex Szpakowski 9765485222 metal: partial implementation of pipeline states.
Add BGRA8 pixel format.
2020-05-03 12:48:43 -03:00
Alex Szpakowski d13e97fd83 Merge branch 'master' into 12.0-development 2020-03-15 19:25:48 -03:00
Alex Szpakowski 8fac08809a Eliminate redundant glActiveTexture calls when shaders are used.
The redundant calls were introduced with the previous commit.
2020-03-15 19:24:49 -03:00
Alex Szpakowski c5b6cc3228 Merge branch 'master' into 12.0-development 2020-03-15 19:17:04 -03:00
Alex Szpakowski 9c2454816f Fix the active GL texture unit not always being set properly.
Fixes issues where texture methods wouldn't have any effect, depending on the current internal opengl state.
2020-03-15 01:29:33 -03:00
Alex Szpakowski 2cff535eb1 Move shader parsing code from Lua to C++. 2020-03-03 19:30:22 -04:00
Alex Szpakowski a5b87a10d1 Merge branch '12.0-development' into metal 2020-02-28 23:21:08 -04:00
Alex Szpakowski 7fbb68e90e Merge branch '12.0-development' into GraphicsBuffer 2020-02-28 23:10:21 -04:00
Alex Szpakowski 9425c9224b Rename internal batched draw code to be more clear 2020-02-27 20:08:50 -04:00
Alex Szpakowski 1ddfcd4cc8 Always use explicitly typed buffers, even in internal code 2020-02-23 16:30:55 -04:00
Alex Szpakowski 2828761060 Move some code from Mesh wrapper to Buffer wrapper 2020-02-22 18:58:41 -04:00
Alex Szpakowski b1c028a4d3 Merge branch '12.0' into GraphicsBuffer 2020-02-17 16:31:02 -04:00
Alex Szpakowski e001e4336d metal: initial work on setRenderTarget 2020-02-16 09:04:50 -04:00
Alex Szpakowski 742a954655 Merge branch '12.0' into metal 2020-02-15 14:18:35 -04:00
Alex Szpakowski 024d9443a0 Merge branch '12.0' into Texture 2020-02-15 13:53:15 -04:00
Alex Szpakowski a0a933a1b9 Merge branch 'master' into 12.0 2020-02-15 13:51:12 -04:00
Alex Szpakowski 15f0e4109b Fix a typo in a comment 2020-02-15 13:50:47 -04:00
Alex Szpakowski 185498ba6d Fix depth sample mode validation checking the wrong state. 2020-02-15 13:49:04 -04:00
Alex Szpakowski 4ec9cafdea Better error checking in the GL texture backend 2020-02-12 22:57:13 -04:00
Alex Szpakowski d24b9e9e6f Rename love.graphics.newCanvas to newRenderTarget 2020-02-11 19:32:00 -04:00
Alex Szpakowski aa636381d0 Fix MSAA texture creation logic 2020-02-09 12:46:52 -04:00
Alex Szpakowski 694bc9c5b7 rename love_Canvases to love_RenderTargets in shaders.
More misc. renaming
2020-02-09 12:11:19 -04:00
Alex Szpakowski 453322678c Rename internal uses of canvas to texture/render target 2020-02-08 20:40:10 -04:00
Alex Szpakowski 12c90b3dca Merge Image and Canvas GL backend classes into new common Texture class. 2020-02-07 20:29:21 -04:00
Alex Szpakowski 17f77407bb Replace internal C++ newImage and newCanvas methods with newTexture 2020-02-05 20:39:55 -04:00
Alex Szpakowski 813b1e0e69 Remove debug print 2020-02-05 18:03:34 -04:00
Alex Szpakowski ca84b6db48 More robust error handling for AMD Pinned Memory buffers (issue #1540)
Also print out any errors that are produced from that (for now).
2020-02-05 07:49:38 -04:00
Alex Szpakowski 0017f9c77d Remove a redundant internal Texture method 2020-02-04 22:15:18 -04:00
Alex Szpakowski 258129738f Remove graphics::Canvas and graphics::Image 2020-02-04 22:06:55 -04:00
Alex Szpakowski b71eaf73cc Replaced some references to Image and Canvas with Texture. 2020-02-04 20:52:57 -04:00