freedreno/a5xx: use vertex_id_zero_base
authorRob Clark <robdclark@gmail.com>
Mon, 18 Dec 2017 18:34:18 +0000 (13:34 -0500)
committerRob Clark <robdclark@gmail.com>
Tue, 19 Dec 2017 20:00:18 +0000 (15:00 -0500)
Cmdstream traces from blob make it clear that the blob driver dev's
*think* a5xx has a real (non-zero-based) vtxid.  But reality claims
differently.

Fixes ./bin/gl-3.2-basevertex-vertexid and probably others.

This means draw-indirect is going to need some gymnastics to copy
base-vertex into uniform.  (a4xx probably needs that too.)

Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/a5xx/fd5_program.c
src/gallium/drivers/freedreno/ir3/ir3_nir.c

index aa4babdf5b199adde1b8d16f3ee7d2ea78ddff95..81fe7d4b5826fc5ec72babff9ff0c6ff8448d4f0 100644 (file)
@@ -341,7 +341,7 @@ fd5_program_emit(struct fd_context *ctx, struct fd_ringbuffer *ring,
 
        pos_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_POS);
        psize_regid = ir3_find_output_regid(s[VS].v, VARYING_SLOT_PSIZ);
-       vertex_regid = ir3_find_sysval_regid(s[VS].v, SYSTEM_VALUE_VERTEX_ID);
+       vertex_regid = ir3_find_sysval_regid(s[VS].v, SYSTEM_VALUE_VERTEX_ID_ZERO_BASE);
        instance_regid = ir3_find_sysval_regid(s[VS].v, SYSTEM_VALUE_INSTANCE_ID);
 
        if (s[FS].v->color0_mrt) {
index 39d3bf15fdebd0164ec190f3c4460dfe0ff30f5e..9ab5e0f7f256541b9bb1434163350ec6d85e5a8d 100644 (file)
@@ -52,23 +52,6 @@ static const nir_shader_compiler_options options = {
                .lower_extract_word = true,
 };
 
-static const nir_shader_compiler_options options_5xx = {
-               .lower_fpow = true,
-               .lower_fsat = true,
-               .lower_scmp = true,
-               .lower_flrp32 = true,
-               .lower_flrp64 = true,
-               .lower_ffract = true,
-               .lower_fmod32 = true,
-               .lower_fmod64 = true,
-               .lower_fdiv = true,
-               .fuse_ffma = true,
-               .native_integers = true,
-               .vertex_id_zero_based = false,
-               .lower_extract_byte = true,
-               .lower_extract_word = true,
-};
-
 struct nir_shader *
 ir3_tgsi_to_nir(const struct tgsi_token *tokens)
 {
@@ -78,8 +61,6 @@ ir3_tgsi_to_nir(const struct tgsi_token *tokens)
 const nir_shader_compiler_options *
 ir3_get_compiler_options(struct ir3_compiler *compiler)
 {
-       if (compiler->gpu_id >= 500)
-               return &options_5xx;
        return &options;
 }