[webkit-dev] WebGL validations

2013-07-15 Thread SzymanskiPrzemyslaw
Hello.

Valgrind shows that WebGL performance is lowered by WebGL validation methods
like: WebGLRenderingContext::validateRenderingState,
WebGLRenderingContext::validateUniformMatrixParameters  or validations in
drawElements/drawArrays. Those validations are done in the OpenGL driver.
WebKit use those validations mostly for console output.

I propose to make some setting bool variable like: webgl_validations_enabled
= true/false and use it in WebGLRenderingContext.

So if webgl_validations_enabled = false then WebKit should not validate
WebGL and performance will be increased. Typically user doesn't need those
validations. It is helpful only for developers. So they can enable WebGL
validations by check webgl_validations_enabled = true.

In WebKit it is a variable indicating to print messages to console so for
WebGL validations this solutions should also works.

 

 

Regards,

Przemyslaw Szymanski

 

 

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev


Re: [webkit-dev] WebGL validations

2013-07-15 Thread Oliver Hunt

On Jul 15, 2013, at 4:04 AM, SzymanskiPrzemyslaw p.szymans...@samsung.com 
wrote:

 Hello.
 Valgrind shows that WebGL performance is lowered by WebGL validation methods 
 like: WebGLRenderingContext::validateRenderingState, 
 WebGLRenderingContext::validateUniformMatrixParameters  or validations in 
 drawElements/drawArrays. Those validations are done in the OpenGL driver. 
 WebKit use those validations mostly for console output.

The validation routines that you're talking are not simple logging functions: 
they are critical for WebGL to have any semblance of safety.

All of these validation routines have the following basic logic:

bool Thing::validateFoo() {
if (fooState is valid)
return true;
log(foo error)
return false;
}

all WebGL functions call the relevant validation functions and then abort if 
the validation returns false.

This validation is _not_ optional, even the WebGL spec talks about what is 
necessary.

 I propose to make some setting bool variable like: webgl_validations_enabled 
 = true/false and use it in WebGLRenderingContext.
 So if webgl_validations_enabled = false then WebKit should not validate WebGL 
 and performance will be increased. Typically user doesn’t need those 
 validations. It is helpful only for developers. So they can enable WebGL 
 validations by check webgl_validations_enabled = true.
 In WebKit it is a variable indicating to print messages to console so for 
 WebGL validations this solutions should also works.

Having an option to remove validation simply is not viable - if you wanted you 
could try to speed up the validation logic, but the validation cannot be 
dropped.

The validation is needed to achieve a semblance of safety in WebGL and the 
WebGL spec even specifies what validation must occur, so removing the 
validation would also result in incorrect behavior (relative to that specified 
by the spec.  Crashing the browser is also incorrect behavior :D )

  
  
 Regards,
 Przemyslaw Szymanski
  

--Oliver

  
 ___
 webkit-dev mailing list
 webkit-dev@lists.webkit.org
 https://lists.webkit.org/mailman/listinfo/webkit-dev

___
webkit-dev mailing list
webkit-dev@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-dev