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