1. 10 Mar, 2016 4 commits
  2. 09 Mar, 2016 2 commits
    • D3D11: Implement dirty bits for VertexArray11. · 7d8585b8
      Jamie Madill authored
      Translated attributes are now stored in the VertexArray11 in a cache,
      and only updated when dirty bits change. Currently dynamic attributes
      must be re-translated every call, so these are stored in a list and
      processed repeatedly.
      
      This skips doing a lot of the VertexDataManager work for vertex
      attributes that don't change between draw calls.
      
      Current value attributes, which correspond to disabled attributes that
      the program will pulls vertex data from, are owned by the Context, so
      these need to be handled outside of the VertexArray11.
      
      Further changes will be necessary to reduce the redundant work we do in
      the InputLayoutCache. We shouldn't need to re-check the cache if
      nothing relevant changed.
      
      This give about a 23% performance improvement on the draw call
      benchmark on my machine.
      
      BUG=angleproject:1327
      
      Change-Id: I7fb944d32ea7e6c78b9e478406bdb7e10a7fc05b
      Reviewed-on: https://chromium-review.googlesource.com/330173Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • Correct GLES depth 32 format. · aa57aa4c
      Frank Henigman authored
      GL_OES_depth32 is required for DEPTH_COMPONENT32_OES render buffers.
      This stops Mesa from complaining when using GLES in the back end.
      
      BUG=angleproject:1301
      
      Change-Id: I8c6ce6a5ce0cb5bf26157e3bb414f391a41d15c4
      Reviewed-on: https://chromium-review.googlesource.com/331359Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Frank Henigman <fjhenigman@chromium.org>
  3. 08 Mar, 2016 8 commits
  4. 07 Mar, 2016 5 commits
  5. 05 Mar, 2016 3 commits
    • Return the correct count from getAttachedShaders · 586bc55c
      Olli Etuaho authored
      The count should be the total amount of shader ids written. Before
      this patch the code used to write the amount of attached shaders
      to count regardless of the value of maxCount.
      
      BUG=angleproject:1101
      TEST=dEQP-GLES3.functional.state_query.shader.*
      
      Change-Id: I5ae729748c7809f03fd496c927a76f60398d2b42
      Reviewed-on: https://chromium-review.googlesource.com/329865Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
    • D3D: Refactor VertexDataManager attribute storage. · e18eb970
      Jamie Madill authored
      Instead of splitting attributes into 'active enabled' and 'active
      disabled', split them into static/dynamic/direct/current value, and
      handle each group invidually. This also will allow the dirty bits
      code to call in to the VertexDataManager separately for each type
      of necessary vertex data translation, and skip it entirely for
      direct buffer storage.
      
      Should be a refactoring patch only.
      
      BUG=angleproject:1327
      
      Change-Id: I53cb5672054d99ae68e9aa2e5a3c046a002e360d
      Reviewed-on: https://chromium-review.googlesource.com/330171Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
    • D3D: Use a single D3D buffer per static vertex attribute. · e36b92d4
      Jamie Madill authored
      The current caching logic stores multiple static attributes in a single
      buffer if the attributes share a D3D buffer - sometimes.
      If a buffer is 'committed' (has been used in a draw) then we would
      make a new D3D buffer for the next set of static attributes.
      
      Instead use a simpler scheme of a single D3D buffer for each
      static attribute. Also change rx::VertexBuffer to a reference
      counted class. This simplifies the caching logic for static vertex
      buffers (translated attributes) considerably. We only need to
      release the buffers when the ref count is zero, and ensure we
      track the ref count correctly when bound to D3D.
      
      This leads the way towards using a simpler dirty bit scheme for
      intelligent state updates, and less overhead doing work with
      buffer state updates.
      
      BUG=angleproject:1327
      
      Change-Id: I99461d50b9663024eaa654cd56b42a63f1416d08
      Reviewed-on: https://chromium-review.googlesource.com/330170Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
      Commit-Queue: Jamie Madill <jmadill@chromium.org>
  6. 04 Mar, 2016 7 commits
    • Update eglext.h to latest. · c52a4026
      Ian Ewell authored
      The new header contains EGL_NV_stream_consumer_gltexture_yuv, which will
      be implemented in the future for video rendering purposes.
      
      BUG=angleproject:1332
      Change-Id: Ia35ee7360b8f09703ad2800c641c67f0f243e927
      Reviewed-on: https://chromium-review.googlesource.com/330278Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Ian Ewell <ewell@google.com>
    • Program/ShaderGL: handle empty info logs · 01ad6445
      Corentin Wallez authored
      The GL driver can sometimes have an empty info log and return an info
      log length of 0. This would cause a vector to be initialized with a
      length of 0 just before it's .data() pointer was used, causing a
      segfault.
      
      BUG=angleproject:1323
      
      Change-Id: Iaf9b569ec64a90c714a213562e427fb7cc8daa6b
      Reviewed-on: https://chromium-review.googlesource.com/330197Reviewed-by: 's avatarZhenyao Mo <zmo@chromium.org>
      Commit-Queue: Corentin Wallez <cwallez@chromium.org>
    • D3D11: Get mip generation function from ANGLE format · 9cb1df4f
      Olli Etuaho authored
      This is done to make it possible to change some of the DXGI formats
      of integer textures without affecting their mip generation function
      associations.
      
      BUG=angleproject:1244
      TEST=angle_end2end_tests,
           dEQP-GLES3.functional.texture.mipmap.*generate* (all pass)
      
      Change-Id: Ie83dd0e1883e9d8e267fbd4bf54b1e466fb0b210
      Reviewed-on: https://chromium-review.googlesource.com/328963Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • Remove getDXGIFormat() function from RenderTarget11 · 99cdca03
      Olli Etuaho authored
      This query would return either the RTV format, the DSV format or the
      texture format depending on the render target. This made the code hard
      to understand.
      
      getDXGIFormat() calls are replaced by querying the ANGLE format, and
      explicitly choosing which associated DXGI format to query info for
      (RTV format or DSV format).
      
      This refactoring makes changing some format associations for integer
      texture formats easier in the future.
      
      BUG=angleproject:1244
      TEST=angle_end2end_tests,
           dEQP-GLES3.functional.fbo.blit.* (no regressions)
      
      Change-Id: Ibe3c03fc6b7768af1a131d4df3909a1e20a71228
      Reviewed-on: https://chromium-review.googlesource.com/329102Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • D3D11: Associate ANGLE formats with GL internal formats · f706901e
      Olli Etuaho authored
      Add a corresponding GL internal format to ANGLE format set. This is
      one step on the way to removing the problematic DXGI format to GL
      format mapping. This will also make it possible to stop storing the
      DXGIFormat field in RenderTarget11. The DXGIFormat field in
      RenderTarget11 can currently carry either the DSV format, the RTV
      format or the texture storage format of the resource it is managing,
      which makes code using it hard to understand.
      
      Also fills in missing componentType for some compressed ANGLE formats
      in texture_format_data.json.
      
      BUG=angleproject:1244
      TEST=angle_end2end_tests
      
      Change-Id: I87eedca8736aeface3fa6a0ec3c9d355cf006b24
      Reviewed-on: https://chromium-review.googlesource.com/328961Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
      Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • Fix texture and sampler state queries · 6ad07236
      Olli Etuaho authored
      Round MAX_LOD / MIN_LOD values correctly according to section 6.1.2
      of GLES 3.0.4, and add code for COMPARE_MODE and COMPARE_FUNC.
      
      BUG=angleproject:1101
      TEST=dEQP-GLES3.functional.state_query.texture.* (all pass),
           dEQP-GLES3.functional.state_query.sampler.* (all pass)
      
      Change-Id: I6043c308c23997513d5de70510a0267419dd1868
      Reviewed-on: https://chromium-review.googlesource.com/330112Reviewed-by: 's avatarCorentin Wallez <cwallez@chromium.org>
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    • D3D11: Don't use DXGI to GL format map in copy functions · b1853096
      Olli Etuaho authored
      The swizzle or copy shader needs to be chosen according to the
      component type of the source SRV. Before this patch, the component
      type was obtained by going through the mapping from the SRV DXGI
      formats to GL formats.
      
      This mapping is problematic, because it has entries that don't really
      make sense, like R16_UNORM and R16_TYPELESS formats being mapped to
      GL_DEPTH_COMPONENT16. This is an issue particularly because these
      formats will be used for integer RED textures in the future. For
      this reason the mapping should be removed.
      
      In the case addressed by this specific commit, rather than look up the
      component type of the SRV indirectly through the GL format table using
      the GL internal format that corresponds to the DXGI format, just use
      the component type of the DXGI format. The depth+stencil swizzle cases
      where the component type is not well defined are handled as a special
      case.
      
      BUG=angleproject:1244
      TEST=angle_end2end_tests,
           dEQP-GLES3.functional.texture.swizzle.* (all pass),
           dEQP-GLES3.functional.fbo.blit.* (no regressions)
      
      Change-Id: I39fb8a14921b89d299e0077b3bea8b4e66ef218d
      Reviewed-on: https://chromium-review.googlesource.com/329103
      Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
      Reviewed-by: 's avatarJamie Madill <jmadill@chromium.org>
  7. 03 Mar, 2016 2 commits
  8. 02 Mar, 2016 8 commits
  9. 01 Mar, 2016 1 commit