Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • This project
    • Loading...
  • Sign in / Register
A
angle
  • Project
    • Overview
    • Details
    • Activity
    • Cycle Analytics
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Charts
  • Issues 0
    • Issues 0
    • List
    • Board
    • Labels
    • Milestones
  • Merge Requests 0
    • Merge Requests 0
  • CI / CD
    • CI / CD
    • Pipelines
    • Jobs
    • Schedules
    • Charts
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Collapse sidebar
  • Activity
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Chen Yisong
  • angle
  • Repository

Switch branch/tag
  • angle
  • src
  • libANGLE
  • renderer
  • d3d
  • d3d11
  • VertexArray11.h
Find file
BlameHistoryPermalink
  • Jamie Madill's avatar
    D3D11: Implement a dirty bit for Shaders. · c8bee335
    Jamie Madill authored Sep 20, 2017
    This allows us to skip calling the dynamic shader generation and
    program shader application when there haven't been any state
    changes. It builds on the previous work that immediately update
    state caches in the VertexArray11 and Framebuffer11. It should
    improve performance in draw-call limited applications by a small
    margin.
    
    For reference, here are the conditions under which the shaders
    are refreshed:
    
    1. Directly changing the program executable
    2. The vertex attribute layout
    3. The fragment shader's rendertargets
    4. Enabling/disabling rasterizer discard
    5. Enabling/disabling transform feedback
    6. An internal shader was used
    7. Drawing with/without point sprites
    
    Improves the score of the draw call stress test for the D3D11
    back-end (with null driver) by about 40% on my test machine.
    
    The 9_3 back-end seems to have an issue where the getSRV call
    to a texture storage can change the "use level zero workaround"
    status of the storage, which in turn will invalidate the state.
    Since this is localized to 9_3 only, put in a hack to disable
    an assert check for now.
    
    BUG=angleproject:2151
    
    Change-Id: Idbd0a31376691b33972e735d5833a9b02a8a4aa9
    Reviewed-on: https://chromium-review.googlesource.com/666278Reviewed-by: 's avatarGeoff Lang <geofflang@chromium.org>
    Reviewed-by: 's avatarFrank Henigman <fjhenigman@chromium.org>
    Commit-Queue: Jamie Madill <jmadill@chromium.org>
    c8bee335
VertexArray11.h 2.92 KB
EditWeb IDE
×

Replace VertexArray11.h

Attach a file by drag & drop or click to upload


Cancel
A new branch will be created in your fork and a new merge request will be started.