Luke Wilde
a14cd5dab8
LibWeb/WebGL: Set prototypes of the WebGL objects
2024-12-05 21:27:32 +01:00
Luke Wilde
2e1702a14b
LibWeb/WebGL: Implement deleteFramebuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
111c4495d9
LibWeb/WebGL: Implement deleteTexture
2024-12-05 21:27:32 +01:00
Luke Wilde
7b0c067f4d
LibWeb/WebGL: Implement uniform{1,2,3,4}iv
2024-12-05 21:27:32 +01:00
Luke Wilde
2e1640a6c5
LibWeb/WebGL: Implement deleteBuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
4c0872ea1b
LibWeb/WebGL: Implement getBufferParameter
2024-12-05 21:27:32 +01:00
Luke Wilde
a65a981a6b
LibWeb/WebGL: Add initial implementation of texImage2D with image source
...
a
2024-12-05 21:27:32 +01:00
Luke Wilde
362ce4b6a4
LibWeb/WebGL: Implement framebufferRenderbuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
a513bdaac6
LibWeb/WebGL: Implement bindRenderbuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
d185c2c28c
LibWeb/WebGL: Implement createRenderbuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
135facb1b5
LibWeb/WebGL: Implement framebufferTexture2D
2024-12-05 21:27:32 +01:00
Luke Wilde
b0bcecfc53
LibWeb/WebGL: Implement bindFramebuffer
2024-12-05 21:27:32 +01:00
Luke Wilde
c5e9615c29
LibWeb/WebGL: Implement createFramebuffer
2024-12-05 21:27:32 +01:00
Aliaksandr Kalenik
ae6edfb845
LibWeb/WebGL: Implement getProgramInfoLog()
2024-12-05 16:42:19 +01:00
Aliaksandr Kalenik
b8109c3047
LibWeb/WebGL: Implement bindAttribLocation()
2024-12-05 16:42:19 +01:00
Aliaksandr Kalenik
11ddc88ed7
LibWeb/WebGL: Remove FIXME from isContextLost() IDL method
...
Currently this function always returns false, but that's better than
not having it at all.
2024-12-05 16:42:19 +01:00
Aliaksandr Kalenik
c817eb8d2b
LibWeb/WebGL: Implement getContextAttributes()
2024-12-05 09:57:10 +01:00
Aliaksandr Kalenik
110f89ee25
LibWeb/WebGL: Implement getShaderInfoLog()
...
With this change we have enough WebGL support to display demos on
https://ciechanow.ski/lights-and-shadows/ but most of them are not
redering correctly yet.
2024-12-05 01:23:10 +01:00
Aliaksandr Kalenik
7e78d7d332
LibWeb/WebGL+Meta: Stub getSupportedExtensions() and getExtension()
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
64fec8b2de
LibWeb/WebGL: Implement texImage2D()
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
3c2ac309ca
LibWeb/WebGL: Implement getActiveAttrib() and getActiveUniform()
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
f3a24d1569
LibWeb: Implement more WebGL calls
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
cfb394cad3
LibWeb: Save OpenGL handle in WebGLObject
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
46cbbda944
LibWeb: Increase SkSurface's generation id when it's modified by WebGL
...
Skia is not aware of surface modifications done by WebGL, so we need to
manually increase generation id whenver WebGL invokes a writing
function.
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
e2e54dccc3
LibWeb: Generate WebGLRenderingContext implementation
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
45e0f50463
LibWeb: Flip vertically PaintingSurface attached to WebGL context
...
OpenGL's origin is at the bottom-left corner, while Skia's origin is at
the top-left corner. This change adds a transformation to compensate for
this difference when rendering PaintingSurface attached to WebGL
context.
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
38488b9ef3
LibWeb: Implement GLES2 context creation
...
For now only macOS is supported.
IOSurface is used as a backing store because it will allow us to read
it from Skia and write to it from OpenGL without any extra copying:
- ANGLE_metal_texture_client_buffer extension is used to create
EGLSurface from IOSurface.
- Then the same IOSurface is wrapped into Metal texture and passed to
Skia allowing to share the same memory between Skia Metal backend and
ANGLE.
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
d133b0aded
LibWeb: Delete OpenGL function wrappers in OpenGLContext
...
It's going to be replaced by code genration in upcoming changes.
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
4bf9bf7972
LibWeb: Merge WebGLRenderingContextBase into WebGLRenderingContext
...
There is no need to have a separate class for WebGLRenderingContextBase
mixin.
2024-12-03 23:35:45 +01:00
Aliaksandr Kalenik
f719b05ab9
LibWeb: Delegate painting surface allocation to canvas's active context
...
This change prepares for the addition of WebGL support, where painting
surface allocation process will differ from that of context2d.
2024-12-03 23:35:45 +01:00
Shannon Booth
f87041bf3a
LibGC+Everywhere: Factor out a LibGC from LibJS
...
Resulting in a massive rename across almost everywhere! Alongside the
namespace change, we now have the following names:
* JS::NonnullGCPtr -> GC::Ref
* JS::GCPtr -> GC::Ptr
* JS::HeapFunction -> GC::Function
* JS::CellImpl -> GC::Cell
* JS::Handle -> GC::Root
2024-11-15 14:49:20 +01:00
Shannon Booth
9b79a686eb
LibJS+LibWeb: Use realm.create<T> instead of heap.allocate<T>
...
The main motivation behind this is to remove JS specifics of the Realm
from the implementation of the Heap.
As a side effect of this change, this is a bit nicer to read than the
previous approach, and in my opinion, also makes it a little more clear
that this method is specific to a JavaScript Realm.
2024-11-13 16:51:44 -05:00
Jelle Raaijmakers
3d8ab0e67c
LibWeb: Add WebGLShaderPrecisionFormat
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
d63a979bde
LibWeb: Add WebGLActiveInfo
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
889e7942fa
LibWeb: Add WebGLUniformLocation
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
f2a1643650
LibWeb: Add WebGLTexture
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
2b09afb971
LibWeb: Add WebGLShader
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
d53cb9833b
LibWeb: Add WebGLRenderbuffer
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
6b7d5dbec6
LibWeb: Add WebGLProgram
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
5d0b206d6e
LibWeb: Add WebGLFramebuffer
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
b21857b265
LibWeb: Add WebGLBuffer
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
e6ee7f3e64
LibWeb: Add WebGLObject interface
2024-11-13 11:41:54 +01:00
Jelle Raaijmakers
e8d91f2234
LibWeb: Add missing RGBA8 constant to WebGLRenderingContext
2024-11-13 11:41:54 +01:00
Timothy Flynn
93712b24bf
Everywhere: Hoist the Libraries folder to the top-level
2024-11-10 12:50:45 +01:00