Aliaksandr Kalenik
4e8ec1e793
LibWeb/WebGL: Implement readPixels()
2024-12-13 09:19:10 +01:00
Aliaksandr Kalenik
c199be061a
LibWeb/WebGL: Implement drawingBufferWidth and drawingBufferHeight
2024-12-13 09:19:10 +01:00
Aliaksandr Kalenik
86c230cd8e
LibWeb/WebGL: Implement vertex array calls for WebGL2
2024-12-07 00:05:36 +01:00
Aliaksandr Kalenik
eec4b71351
LibWeb/WebGL: Remove FIXME from supported calls in WebGL2
...
These calls were inherited from WebGL 1 and our implementation generator
already supports them.
2024-12-07 00:05:36 +01:00
Andrew Kaster
56d45282ea
LibWeb/WebGL: Don't crash on unknown getParameter on the context
...
And allow the implementation to set the error code.
2024-12-06 15:35:36 +01:00
Andrew Kaster
af536e1192
LibWeb: Add stubbed-out WebGL2RenderingContext
2024-12-06 15:35:36 +01:00
Andrew Kaster
9c24bb3cee
LibWeb/WebGL: Alphabetize imports for WebGLRenderingContextBase IDL
2024-12-06 15:35:36 +01:00
Andrew Kaster
7abc79ece7
LibWeb/WebGL: Add stub class for WebGLVertexArrayObject
...
This is a WebGL 2.0 class
2024-12-06 15:35:36 +01:00
Andrew Kaster
39018d233f
LibWeb/WebGL: Add stub class for WebGLTransformFeedback
...
This is a WebGL 2.0 class
2024-12-06 15:35:36 +01:00
Andrew Kaster
bb3226ee57
LibWeb/WebGL: Add stub class for WebGLSync
...
This is a WebGL 2.0 class
2024-12-06 15:35:36 +01:00
Andrew Kaster
2b5e54e995
LibWeb/WebGL: Add stub class for WebGLSampler
...
This is a WebGL 2.0 class
2024-12-06 15:35:36 +01:00
Andrew Kaster
69e4adbd98
LibWeb/WebGL: Add stub class for WebGLQuery
...
This is a WebGL 2.0 class
2024-12-06 15:35:36 +01:00
Andrew Kaster
d8ccd6b87c
LibWeb/WebGL: Don't crash when there's no skia backend context
2024-12-06 15:35:36 +01:00
Andrew Kaster
f2ac4f3f2e
LibWeb: Add GL types for WebGL 2.0
2024-12-06 15:35:36 +01:00
Luke Wilde
5392aabded
LibWeb/WebGL: Implement texSubImage2D with ArrayBufferView
2024-12-05 21:27:32 +01:00
Luke Wilde
7a6b6627e9
LibWeb/WebGL: Implement bufferSubData
2024-12-05 21:27:32 +01:00
Luke Wilde
bf2b8c5f2b
LibWeb/WebGL: Implement getShaderPrecisionFormat
2024-12-05 21:27:32 +01:00
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