Open Bug 1200864 Opened 4 years ago Updated 9 months ago

Skip DrawElements buffer validation when we have robust_buffer_access

Categories

(Core :: Canvas: WebGL, enhancement, P2)

enhancement

Tracking

()

People

(Reporter: jgilbert, Unassigned)

References

(Blocks 1 open bug)

Details

(Keywords: feature, perf, Whiteboard: webgl-perf)

Attachments

(2 files)

robust_buffer_access behavior is also always guaranteed by D3D10 and above.
Attachment #8655714 - Flags: review?(dglastonbury)
Attachment #8655715 - Flags: review?(dglastonbury)
Comment on attachment 8655714 [details] [diff] [review]
0001-Don-t-validate-indices-with-robust_buffer_access_beh.patch

Review of attachment 8655714 [details] [diff] [review]:
-----------------------------------------------------------------

nits

::: dom/canvas/WebGLContextDraw.cpp
@@ +253,4 @@
>  
>      if (!ValidateBufferFetching(info))
>          return false;
> +    

WS

::: dom/canvas/WebGLContextValidate.cpp
@@ +1939,4 @@
>  
>      if (mLoseContextOnMemoryPressure)
>          mContextObserver->RegisterMemoryPressureEvent();
> +    

WS

::: gfx/gl/GLContext.cpp
@@ +1643,4 @@
>                                   0, nullptr,
>                                   true);
>          }
> +        

WS

::: gfx/gl/GLContext.h
@@ +529,4 @@
>       * Init features regarding OpenGL extension and context version and profile
>       */
>      void InitFeatures();
> +    

WS

@@ +3619,4 @@
>      static bool ShouldSpew();
>      static bool ShouldDumpExts();
>      void Readback(SharedSurface* src, gfx::DataSourceSurface* dest);
> +    

WS

::: gfx/gl/GLContextEGL.h
@@ +69,4 @@
>      virtual bool IsWARP() const override {
>          return sEGLLibrary.IsWARP();
>      }
> +    

WS
Attachment #8655714 - Flags: review?(dglastonbury) → review+
Comment on attachment 8655715 [details] [diff] [review]
0002-Ask-for-robust_buffer_access.patch

Review of attachment 8655715 [details] [diff] [review]:
-----------------------------------------------------------------

nits

::: gfx/gl/GLContextProviderEGL.cpp
@@ +511,5 @@
> +CreateContextForShareContext(EGLDisplay display, EGLConfig config,
> +                             EGLContext shareContext)
> +{
> +    EGLContext context = nullptr;
> +    

WS

@@ +520,5 @@
> +            context = sEGLLibrary.fCreateContext(EGL_DISPLAY(), config, shareContext,
> +                                                 kContextAttribsRobustness);
> +        }
> +    }
> +    

WS

@@ +525,5 @@
> +    if (!context) {
> +        context = sEGLLibrary.fCreateContext(EGL_DISPLAY(), config, shareContext,
> +                                             kContextAttribs);
> +    }
> +    

WS

@@ +541,4 @@
>          NS_WARNING("Failed to bind API to GLES!");
>          return nullptr;
>      }
> +    

WS

@@ +546,5 @@
> +    if (shareContext) {
> +        context = CreateContextForShareContext(EGL_DISPLAY(), config,
> +                                               shareContext->mContext);
> +    }
> +    

WS

@@ +554,2 @@
>      }
> +    

WS
Attachment #8655715 - Flags: review?(dglastonbury) → review+
Haha, I was using a different editor. Sorry for the WS!
It looks like ANGLE does these even if we don't.
We can at least skip ours, though.
Blocks: 1268629
Whiteboard: webgl-perf
Severity: normal → enhancement
Priority: -- → P2
Assignee: jgilbert → nobody
You need to log in before you can comment on or make changes to this bug.