• Show log

    Commit

  • Hash : 9b4e8626
    Author : Olli Etuaho
    Date : 2015-12-22T15:53:22

    Redesign samplers in shaders on D3D11
    
    Translation of samplers to HLSL on D3D11 is changed as follows:
    
    Instead of passing around HLSL sampler and HLSL texture references in
    shaders, all references to ESSL samplers are converted to constant
    indices within the shader body. Each ESSL sampler is identified by an
    unique index. In the code generated to implement ESSL texture functions,
    these indices are used to index arrays of HLSL samplers and HLSL
    textures to get the sampler and texture to use.
    
    HLSL textures and samplers are grouped into arrays by their types. Each
    unique combination of a HLSL texture type + HLSL sampler type gets its
    own array. To convert a unique sampler index to an index to one of these
    arrays, a constant offset is applied. In the most common case of a 2D
    texture and a regular (non-comparison) sampler, the index offset is
    always zero and is omitted.
    
    The end goal of this refactoring is to make adding extra metadata for
    samplers easier. The unique sampler index can be used in follow-up
    changes to index an array of metadata passed in uniforms, which can
    contain such things as the base level of the texture.
    
    This does not solve the issues with samplers in structs.
    
    The interface from the point of view of libANGLE is still exactly the
    same, the only thing that changes is how samplers are handled inside the
    shader.
    
    On feature level 9_3, the D3D compiler has a bug where it can report that
    the maximum sampler index is exceeded when in fact it is not. This can
    happen when an array of samplers is declared in the shader. Because of
    this the new approach can't be used on D3D11 feature level 9_3, but it
    will continue using the old approach instead.
    
    BUG=angleproject:1261
    TEST=angle_end2end_tests,
         dEQP-GLES3.functional.shaders.texture_functions.* (no regressions)
         dEQP-GLES3.functional.texture.units.* (no regressions)
    
    Change-Id: I5fbb0c4280000202dc2795a628b56bd8194ef96f
    Reviewed-on: https://chromium-review.googlesource.com/320571
    Reviewed-by: Zhenyao Mo <zmo@chromium.org>
    Reviewed-by: Jamie Madill <jmadill@chromium.org>
    Tested-by: Olli Etuaho <oetuaho@nvidia.com>
    Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
    Tryjob-Request: Olli Etuaho <oetuaho@nvidia.com>
    

  • Properties

  • Git HTTP https://git.kmx.io/kc3-lang/angle.git
    Git SSH git@git.kmx.io:kc3-lang/angle.git
    Public access ? public
    Description

    A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.

    Homepage

    Github

    Users
    thodg_m kc3_lang_org thodg_w www_kmx_io thodg thodg_l
    Tags