Commit Graph

1570 Commits

Author SHA1 Message Date
Alex Szpakowski 7eb3d4343a Move some shader binding validation code out of the opengl backend 2021-03-30 19:28:42 -03:00
Alex Szpakowski 2064c140ac metal: clamp scissor rect to be within the active RT 2021-03-30 19:27:52 -03:00
Alex Szpakowski aad0810e11 metal: initial (bad/slow) setShader tracking 2021-03-29 18:28:06 -03:00
Alex Szpakowski 3a1c85c13e metal: hook up correct texture size and max RT limits 2021-03-27 23:10:49 -03:00
Alex Szpakowski 1e85e1b414 metal: fix Buffers, fix shader cleanup 2021-03-27 22:21:00 -03:00
Alex Szpakowski 326dfe2632 metal: workaround for garbage data being stored in pipeline keys 2021-03-27 17:46:43 -03:00
Alex Szpakowski da6fd95a64 metal: more work on shader uniforms 2021-03-27 17:37:53 -03:00
Alex Szpakowski 5f888be64a metal: initial pixel format support implementation 2021-03-27 17:37:09 -03:00
Alex Szpakowski 3744f8b939 metal: implement point sizes 2021-03-26 21:49:00 -03:00
Alex Szpakowski 9cc6be4ac7 Remove bufferusage_uniform for now
It's not really implemented
2021-03-26 21:43:24 -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 c0a8aa3ef7 metal: use EXT_vulkan_glsl_relaxed 2021-03-23 21:57:36 -03:00
Alex Szpakowski 694d448e83 Vertex shaders can write to gl_PointSize (fixes #1603).
If a shader uses gl_PointSize then it can only be used when drawing points. If a shader doesn't use gl_PointSize then it can't be used when drawing points.

Added 'ConstantPointSize' and 'CurrentDPIScale' built-in shader uniforms.

ConstantPointSize is in DPI-scaled points, whereas gl_PointSize is in pixels, so to get the correct default behaviour a shader needs to do gl_PointSize = ConstantPointSize * CurrentDPIScale
2021-01-23 13:47:12 -04:00
Alex Szpakowski deff795908 Rename some internal buffer enums to better match what they do 2021-01-17 20:59:16 -04:00
Alex Szpakowski 2e2ebe95cd Clean up some obsolete internal graphics code 2021-01-17 16:50:44 -04:00
Alex Szpakowski 4244e01a35 More texture format support cleanup 2021-01-17 14:48:35 -04:00
Alex Szpakowski ef5a0250e9 Fix compilation on windows 2021-01-17 14:13:16 -04:00
Alex Szpakowski e2838131f2 Add love.graphics.copyBuffer. 2021-01-17 14:02:00 -04:00
Alex Szpakowski e1f40b433d Clean up some graphics enum declaration code 2021-01-16 20:51:06 -04:00
Alex Szpakowski 52238bb7d9 Add optional source data start index arg to Buffer:setArrayData
The argument list is now Buffer:setArrayData(data or table, sourceindex=1, destindex=1, count=automatically computed)

#1598
2021-01-16 20:34:27 -04:00
Alex Szpakowski 4d6cfb1f90 metal: vertex attribute reflection is slightly better 2021-01-16 14:08:03 -04:00
Alex Szpakowski 5e77944dc0 refactor texture format support internals 2021-01-16 13:09:01 -04:00
Alex Szpakowski 558cc6a111 metal: post-merge compile fix 2021-01-14 20:40:37 -04:00
Alex Szpakowski 98f8fe02a1 Merge branch '12.0-development' into metal 2021-01-14 20:33:45 -04:00
Alex Szpakowski 50ff86bd92 Graphics Buffers can be used as Shader Storage Buffers. 2021-01-10 17:53:12 -04:00
Alex Szpakowski 0ec7ea73de Improve error message slightly 2020-12-30 11:46:00 -04:00
Alex Szpakowski 2fb88cb4a5 Remove some obsolete code 2020-12-27 19:52:27 -04:00
Alex Szpakowski 2a5a90ccef Add 'vertexmain' and 'pixelmain' shader entry points.
These are low level 'raw' entry points which don't declare any inputs or outputs themselves. They require GLSL 3 to use.
2020-12-27 19:17:47 -04:00
Alex Szpakowski 65bfeedd4e Merge branch 'master' into 12.0-development 2020-12-26 22:48:08 -04:00
Alex Szpakowski 95ab4054ff Fix a freeze on Intel drivers when using mipmapped Canvases
Fixes #1585

Also disallow generateMipmaps on depth/stencil canvases because it's not really supported.
2020-12-26 16:37:37 -04:00
Alex Szpakowski 4f730e930b Potential workaround for driver bug related to canvas mipmaps 2020-12-25 16:13:29 -04:00
Alex Szpakowski fe23c16198 Disable gamma correction on Windows + Intel HD 2/3000 / Intel HD Graphics
It's completely broken there. Closes #1592
2020-12-24 20:31:33 -04:00
Alex Szpakowski 48a13d443b Fix validating glsl1 shaders using array textures on GLES3 2020-12-23 20:42:12 -04:00
Alex Szpakowski d357ceb191 Merge pull request #1648 from xordspar0/tegra-3-bug
Work around Ouya driver bug related to texture array support
2020-12-23 20:13:41 -04:00
Alex Szpakowski 1eca5d0b8f metal: don't try to autogenerate depth mips, that isn't supported 2020-12-22 23:21:17 -04:00
Alex Szpakowski 47ea32781a metal: handle triangle strip draws 2020-12-22 23:06:06 -04:00
Alex Szpakowski 20a92a4106 Merge branch '12.0-development' into metal 2020-12-22 22:37:17 -04:00
Alex Szpakowski b7400892a4 Merge branch 'master' into 12.0-development 2020-12-22 19:35:06 -04:00
Alex Szpakowski 1f9d98263d Refactor Buffer internals.
Allows buffers created with love.graphics.newBuffer to only allocate VRAM data. Previously they had a copy of their contents in RAM.
Also makes it easier to implement Buffers in other graphics APIs and to implement more types of Buffers in the future.
2020-12-22 19:23:02 -04:00
Alex Szpakowski a1861a8ff4 Don't allow calling Texture:generateMipmaps on depth/stencil textures 2020-12-21 13:36:29 -04:00
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 7a18190c5c Restructure SpriteBatch internal vertex data 2020-11-03 22:12:56 -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 7e0c7e3a67 Fix the default mipmap filter for textures. 2020-10-26 18:25:40 -03:00
Alex Szpakowski 99875d83b3 Fix explicit texture MSAA of 1 or 0 not being treated the same as the default 2020-10-26 17:11:50 -03:00
Alex Szpakowski e10444c21f Move Texture:generateMipmaps error handling out of backend code 2020-10-25 23:13:50 -03:00