i965: Store a clip_distance_mask field similar to cull_distance_mask.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 4 Oct 2016 06:41:09 +0000 (23:41 -0700)
committerKenneth Graunke <kenneth@whitecape.org>
Sat, 19 Nov 2016 20:30:25 +0000 (12:30 -0800)
This isn't useful for legacy GL, but will be used in Vulkan.

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Jason Ekstrand <jason@jlekstrand.net>
src/mesa/drivers/dri/i965/brw_compiler.h
src/mesa/drivers/dri/i965/brw_shader.cpp
src/mesa/drivers/dri/i965/brw_vec4.cpp
src/mesa/drivers/dri/i965/brw_vec4_gs_visitor.cpp

index c2400f9935210a670e183c947bef21fb4820a903..65a74784642417033a2f82eb0c780ec4e5d54b41 100644 (file)
@@ -626,6 +626,7 @@ struct brw_vue_prog_data {
    GLuint urb_read_length;
    GLuint total_grf;
 
+   uint32_t clip_distance_mask;
    uint32_t cull_distance_mask;
 
    /* Used for calculating urb partitions.  In the VS, this is the size of the
index 8601bb5ea1884a8651b4cfd556b302df2ef0e8c8..bee4d8875c570c0a9b6a33affe3324a81c943585 100644 (file)
@@ -1376,6 +1376,8 @@ brw_compile_tes(const struct brw_compiler *compiler,
       return NULL;
    }
 
+   prog_data->base.clip_distance_mask =
+      ((1 << nir->info->clip_distance_array_size) - 1);
    prog_data->base.cull_distance_mask =
       ((1 << nir->info->cull_distance_array_size) - 1) <<
       nir->info->clip_distance_array_size;
index 4da8f6e09d6894994bf68c812792b4f5ea892483..b9e592f65f6b11bbc972c748a9c8b7f3936be71c 100644 (file)
@@ -2121,6 +2121,8 @@ brw_compile_vs(const struct brw_compiler *compiler, void *log_data,
 
    const unsigned *assembly = NULL;
 
+   prog_data->base.clip_distance_mask =
+      ((1 << shader->info->clip_distance_array_size) - 1);
    prog_data->base.cull_distance_mask =
       ((1 << shader->info->cull_distance_array_size) - 1) <<
       shader->info->clip_distance_array_size;
index 5e2dcc08540f285f257e622caeabacd63e319998..900d9d345ec2513b547cc122ea56509decc7d20f 100644 (file)
@@ -621,6 +621,8 @@ brw_compile_gs(const struct brw_compiler *compiler, void *log_data,
    brw_nir_lower_vue_outputs(shader, is_scalar);
    shader = brw_postprocess_nir(shader, compiler->devinfo, is_scalar);
 
+   prog_data->base.clip_distance_mask =
+      ((1 << shader->info->clip_distance_array_size) - 1);
    prog_data->base.cull_distance_mask =
       ((1 << shader->info->cull_distance_array_size) - 1) <<
       shader->info->clip_distance_array_size;