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:
parent
fe7aa271a9
commit
99c186fbbe
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue