summaryrefslogtreecommitdiffstats
path: root/src/amd/vulkan/radv_pipeline.c
diff options
context:
space:
mode:
authorSamuel Pitoiset <[email protected]>2019-08-01 10:43:42 +0200
committerSamuel Pitoiset <[email protected]>2019-08-02 09:37:36 +0200
commit8a86908e9a79fb7ac94df1fa3194b54059a6045f (patch)
treee85df798586e6bdc2f944d95125622ec403c16cd /src/amd/vulkan/radv_pipeline.c
parent953bbacc23bbf8b107a49187abc88cc2f4b1be43 (diff)
radv/gfx10: add Wave32 support for vertex, tessellation and geometry shaders
It can be enabled with RADV_PERFTEST=gewave32. Signed-off-by: Samuel Pitoiset <[email protected]> Reviewed-by: Bas Nieuwenhuizen <[email protected]>
Diffstat (limited to 'src/amd/vulkan/radv_pipeline.c')
-rw-r--r--src/amd/vulkan/radv_pipeline.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/amd/vulkan/radv_pipeline.c b/src/amd/vulkan/radv_pipeline.c
index dbfe261c982..d722d558a43 100644
--- a/src/amd/vulkan/radv_pipeline.c
+++ b/src/amd/vulkan/radv_pipeline.c
@@ -1782,7 +1782,7 @@ calculate_ngg_info(const VkGraphicsPipelineCreateInfo *pCreateInfo,
/* Round up towards full wave sizes for better ALU utilization. */
if (!max_vert_out_per_gs_instance) {
- const unsigned wavesize = 64;
+ const unsigned wavesize = pipeline->device->physical_device->ge_wave_size;
unsigned orig_max_esverts;
unsigned orig_max_gsprims;
do {
@@ -4125,6 +4125,14 @@ radv_compute_vgt_shader_stages_en(const struct radv_pipeline *pipeline)
if (pipeline->device->physical_device->rad_info.chip_class >= GFX9)
stages |= S_028B54_MAX_PRIMGRP_IN_WAVE(2);
+ if (pipeline->device->physical_device->rad_info.chip_class >= GFX10 &&
+ pipeline->device->physical_device->ge_wave_size == 32) {
+ /* legacy GS only supports Wave64 */
+ stages |= S_028B54_HS_W32_EN(1) |
+ S_028B54_GS_W32_EN(radv_pipeline_has_ngg(pipeline)) |
+ S_028B54_VS_W32_EN(1);
+ }
+
return stages;
}