[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Public WebGL] EXT_shader_texture_lod in WebGL2?



On 21 January 2017 at 12:36, Florian Bösch <pyalot@gmail.com> wrote:
On Sat, Jan 21, 2017 at 1:32 PM, Maksims Mihejevs <max@playcanvas.com> wrote:
And more importantly, if any implementation is done, it has to be done not using CPU path.
We've seeing already many enormous issues. For example MSAA with ANGLE has CPU path, and is unusable at all, as performance drops insanely. ETC2 was another case where CPU path was pushed a lot. And if this happens, for sake of "best availability support", you then damaging performance and quality so badly, that we even had to disable certain features in webgl2 simply by checking "if ANGLE, then no MSAA".

I believe that the failIfMajorPerformanceCaveat should indicate those CPU paths doesn't it? I've started tracking this on WebGL stats at the end of december. So at the end of January there'll be a full 30-day window for that.

Is this reliable? And will it include every small thing, and how friendly it is to end user to use, in order to query for those caveats?
Can we rely on vendors that they will report honestly about caveats?

Because it seems like this is not the case.

For example on Windows, where blit is implemented on CPU, currently failIfMajorPerformanceCaveat - does not show anything about it.
I bet ETC2 wouldn't be mentioned there either.

I strongly believe it is better not to ship feature at all if it will perform worse than previous alternatives. Because this sends a positive message "hey, feature is here for you", but then developers spend time figuring out why it performs so badly, and then endup finding a ways to know if this feature follows "slow path", and have to explicitly "ban" it from using.
We already to this in PlayCanvas, and amount of time it takes to figure this things out, is dramatically frustrating!

It is complicated and hard to track those issues, and they are implemented in hidden way.
It shall be clear to end developer, if feature is there, it shall work and perform reliable across the devices. Extensions - is a good way to follow, it gives optional availability of the feature, and being an extension, it is expected it to be not available on some platforms.

When users come back asking why their simple game works on some devices great, and on some 5- fps, we wonder, and this is purely because something hits CPU path, either the whole renderer, or part of it. Or even some features like float32 textures, are actually not 32bits.
There must be way more string QA in place, to prevent those cases, as they damage WebGL as a platform, for everybody, and this is not what we all want. We are building business around this technology, and we want to be reliable about dependencies - vendors and ANGLE (in particular), that they do a good job and not following some dreams of webgl-utopia.

Kind Regards,
Max