[Mesa-dev] [PATCH] radv: Update to new VK_EXT_vertex_attribute_divisor to version 2.

Samuel Pitoiset samuel.pitoiset at gmail.com
Wed Aug 15 10:11:31 UTC 2018



On 8/15/18 11:49 AM, Jason Ekstrand wrote:
> On Tue, Aug 14, 2018 at 7:20 AM Samuel Pitoiset 
> <samuel.pitoiset at gmail.com <mailto:samuel.pitoiset at gmail.com>> wrote:
> 
>     Reviewed-by: Samuel Pitoiset <samuel.pitoiset at gmail.com
>     <mailto:samuel.pitoiset at gmail.com>>
> 
>     On 7/23/18 4:24 PM, Bas Nieuwenhuizen wrote:
>      > Behavior wrt firstInstance got changed, and a divisor of 0 has been
>      > disallowed.
>      >
>      > The new version of the ext got published in specification 1.1.81.
>      > ---
>      >   src/amd/vulkan/radv_extensions.py | 2 +-
>      >   src/amd/vulkan/radv_nir_to_llvm.c | 7 ++++---
>      >   2 files changed, 5 insertions(+), 4 deletions(-)
>      >
>      > diff --git a/src/amd/vulkan/radv_extensions.py
>     b/src/amd/vulkan/radv_extensions.py
>      > index a5fbffac33b..d02042e5647 100644
>      > --- a/src/amd/vulkan/radv_extensions.py
>      > +++ b/src/amd/vulkan/radv_extensions.py
>      > @@ -104,7 +104,7 @@ EXTENSIONS = [
>      >       Extension('VK_EXT_sampler_filter_minmax',             1,
>     'device->rad_info.chip_class >= CIK'),
>      >       Extension('VK_EXT_shader_viewport_index_layer',       1, True),
>      >       Extension('VK_EXT_shader_stencil_export',             1, True),
>      > -    Extension('VK_EXT_vertex_attribute_divisor',          1, True),
>      > +    Extension('VK_EXT_vertex_attribute_divisor',          2, True),
>      >       Extension('VK_AMD_draw_indirect_count',               1, True),
>      >       Extension('VK_AMD_gcn_shader',                        1, True),
>      >       Extension('VK_AMD_rasterization_order',               1,
>     'device->has_out_of_order_rast'),
>      > diff --git a/src/amd/vulkan/radv_nir_to_llvm.c
>     b/src/amd/vulkan/radv_nir_to_llvm.c
>      > index c7d772fa652..d12ef09c9f3 100644
>      > --- a/src/amd/vulkan/radv_nir_to_llvm.c
>      > +++ b/src/amd/vulkan/radv_nir_to_llvm.c
>      > @@ -1984,8 +1984,7 @@ handle_vs_input_decl(struct
>     radv_shader_context *ctx,
>      >                       uint32_t divisor =
>     ctx->options->key.vs.instance_rate_divisors[attrib_index];
>      >
>      >                       if (divisor) {
>      > -                             buffer_index =
>     LLVMBuildAdd(ctx->ac.builder, ctx->abi.instance_id,
>      > -                                                       
>       ctx->abi.start_instance, "");
>      > +                             buffer_index = ctx->abi.instance_id;
>      >
>      >                               if (divisor != 1) {
>      >                                       buffer_index =
>     LLVMBuildUDiv(ctx->ac.builder, buffer_index,
>      > @@ -2000,8 +1999,10 @@ handle_vs_input_decl(struct
>     radv_shader_context *ctx,
>      >                                               MAX2(1,
>     ctx->shader_info->vs.vgpr_comp_cnt);
>      >                               }
>      >                       } else {
>      > -                             buffer_index = ctx->ac.i32_0;
>      > +                             unreachable("Invalid vertex
>     attribute divisor of 0.");
> 
> 
> You'll want to leave this alone.  zero is coming back...  Yeah, I know 
> it's annoying but I'm really trying to get this settled out as quickly 
> as possible.  In the mean time, reports are that zero is useful for some 
> DXVK apps so it's best to just silently support it rather than breaking 
> stuff.

Yeah, you are right. I have just reached that assertion with a DXVK app...

> 
>      >                       }
>      > +
>      > +                     buffer_index =
>     LLVMBuildAdd(ctx->ac.builder, ctx->abi.start_instance, buffer_index,
>     "");
>      >               } else
>      >                       buffer_index =
>     LLVMBuildAdd(ctx->ac.builder, ctx->abi.vertex_id,
>      >                                                 
>       ctx->abi.base_vertex, "");
>      >
>     _______________________________________________
>     mesa-dev mailing list
>     mesa-dev at lists.freedesktop.org <mailto:mesa-dev at lists.freedesktop.org>
>     https://lists.freedesktop.org/mailman/listinfo/mesa-dev
> 


More information about the mesa-dev mailing list