radv/gfx10: fix VK_KHR_pipeline_executable_properties with NGG GS

No GS copy shader if a pipeline enables NGG GS.

This fixes
dEQP-VK.pipeline.executable_properties.graphics.*geometry_stage*.

Fixes: 86864eedd2 ("radv: Implement radv_GetPipelineExecutablePropertiesKHR.")
Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl>
This commit is contained in:
Samuel Pitoiset 2019-09-18 16:58:06 +02:00
parent fe7aa271a9
commit 99c186fbbe
1 changed files with 13 additions and 4 deletions

View File

@ -4923,8 +4923,15 @@ static uint32_t radv_get_executable_count(const struct radv_pipeline *pipeline)
{
uint32_t ret = 0;
for (int i = 0; i < MESA_SHADER_STAGES; ++i) {
if (pipeline->shaders[i])
ret += i == MESA_SHADER_GEOMETRY ? 2u : 1u;
if (!pipeline->shaders[i])
continue;
if (i == MESA_SHADER_GEOMETRY &&
!radv_pipeline_has_ngg(pipeline)) {
ret += 2u;
} else {
ret += 1u;
}
}
return ret;
@ -4943,7 +4950,8 @@ radv_get_shader_from_executable_index(const struct radv_pipeline *pipeline, int
--index;
if (i == MESA_SHADER_GEOMETRY) {
if (i == MESA_SHADER_GEOMETRY &&
!radv_pipeline_has_ngg(pipeline)) {
if (!index) {
*stage = i;
return pipeline->gs_copy_shader;
@ -5034,7 +5042,8 @@ VkResult radv_GetPipelineExecutablePropertiesKHR(
desc_copy(pProperties[executable_idx].description, description);
++executable_idx;
if (i == MESA_SHADER_GEOMETRY) {
if (i == MESA_SHADER_GEOMETRY &&
!radv_pipeline_has_ngg(pipeline)) {
assert(pipeline->gs_copy_shader);
if (executable_idx >= count)
break;