diff options
author | Dave Airlie <[email protected]> | 2017-04-03 04:38:12 +0100 |
---|---|---|
committer | Dave Airlie <[email protected]> | 2017-04-04 05:55:15 +1000 |
commit | 1171b304f30f77b6780891b2b0561b52234a1ec5 (patch) | |
tree | 3a3a50fd4390e6ceb8fc4005a5c29ea058a1020e /src/amd/vulkan/radv_private.h | |
parent | 471c1bc7ccd33caa38bbf7124691ccf6884ac5f8 (diff) |
radv: overhaul fragment shader sample positions.
The current code was broken, and I decided to redesign it instead.
This puts the sample positions for all samples into the queue
constant descriptor buffer after all the spill/ring descriptors.
It then uses a single offset register to point how far into the
samples the samples for num_samples are. This saves one user sgpr
and means we only generate the sample position data in the rare
single case where we need it currently.
This doesn't fix the failing CTS tests without the followup
fix.
Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Signed-off-by: Dave Airlie <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_private.h')
-rw-r--r-- | src/amd/vulkan/radv_private.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/amd/vulkan/radv_private.h b/src/amd/vulkan/radv_private.h index 3f92d59ac97..a28c8250367 100644 --- a/src/amd/vulkan/radv_private.h +++ b/src/amd/vulkan/radv_private.h @@ -460,6 +460,7 @@ struct radv_queue { uint32_t esgs_ring_size; uint32_t gsvs_ring_size; bool has_tess_rings; + bool has_sample_positions; struct radeon_winsys_bo *scratch_bo; struct radeon_winsys_bo *descriptor_bo; @@ -748,6 +749,7 @@ struct radv_cmd_buffer { uint32_t esgs_ring_size_needed; uint32_t gsvs_ring_size_needed; bool tess_rings_needed; + bool sample_positions_needed; int ring_offsets_idx; /* just used for verification */ }; |