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