Hi Ken,
Thanks for answering.
I haven't given up on this yet. But there's something really difficult for me to get through.
To make it clear, I'm not attempting to bring back the dropped "WebGL2 compute" feature.
Instead, I just want to enable an underlying GLES3.1 context (powered by ANGLE), so that I can use it in my own fork of Chromium, internally in C++ code.
Therefore, it won't envolve exposing any addition APIs to JavaScript. It's just about the context creation.
I made some progress by doing to following hacks:
* In gpu/command_buffer/client/implementation_base.cc
Forcing the capabilites to version 3.1 by:
In constructor ImplementationBase::ImplementationBase():
if (capabilities_.major_version == 3)
{
capabilities_.minor_version = 1;
capabilities_.max_shader_storage_buffer_bindings = 32768;
}
* In gpu/command_buffer/services/service_utils.cc
In GenerateGLContextAttribs():
Changing "client_minor_es_version" from 0 to 1.
Currently, I'm able to compile a compute shader, creating and binding SSBOs,
but it still crashes when I call GLES2Interface::DispatchCompute() to launch a compute shader. (STATUS_ACCESS_VIOLATION)
I feel I still hadn't found the correct places where the GLES context creation is happening, where Blink tells ANGLE which GLES version to use.
I'll really appreciate you if you point me to the correct place to look at. The source code is just too Huge.
Thanks!!
Fei