radv: remove small overhead of radv_pipeline_has_ngg()
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/4784 Signed-off-by: Samuel Pitoiset <samuel.pitoiset@gmail.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/10908>
This commit is contained in:
parent
ca783612e7
commit
a00be79d80
|
@ -3054,7 +3054,7 @@ radv_flush_ngg_gs_state(struct radv_cmd_buffer *cmd_buffer)
|
||||||
uint32_t ngg_gs_state = 0;
|
uint32_t ngg_gs_state = 0;
|
||||||
uint32_t base_reg;
|
uint32_t base_reg;
|
||||||
|
|
||||||
if (!radv_pipeline_has_gs(pipeline) || !radv_pipeline_has_ngg(pipeline))
|
if (!radv_pipeline_has_gs(pipeline) || !pipeline->graphics.is_ngg)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* By default NGG GS queries are disabled but they are enabled if the
|
/* By default NGG GS queries are disabled but they are enabled if the
|
||||||
|
@ -4378,8 +4378,8 @@ radv_CmdBindPipeline(VkCommandBuffer commandBuffer, VkPipelineBindPoint pipeline
|
||||||
|
|
||||||
if (cmd_buffer->device->physical_device->rad_info.has_vgt_flush_ngg_legacy_bug &&
|
if (cmd_buffer->device->physical_device->rad_info.has_vgt_flush_ngg_legacy_bug &&
|
||||||
cmd_buffer->state.emitted_pipeline &&
|
cmd_buffer->state.emitted_pipeline &&
|
||||||
radv_pipeline_has_ngg(cmd_buffer->state.emitted_pipeline) &&
|
cmd_buffer->state.emitted_pipeline->graphics.is_ngg &&
|
||||||
!radv_pipeline_has_ngg(cmd_buffer->state.pipeline)) {
|
!cmd_buffer->state.pipeline->graphics.is_ngg) {
|
||||||
/* Transitioning from NGG to legacy GS requires
|
/* Transitioning from NGG to legacy GS requires
|
||||||
* VGT_FLUSH on GFX10 and Sienna Cichlid. VGT_FLUSH
|
* VGT_FLUSH on GFX10 and Sienna Cichlid. VGT_FLUSH
|
||||||
* is also emitted at the beginning of IBs when legacy
|
* is also emitted at the beginning of IBs when legacy
|
||||||
|
|
|
@ -142,7 +142,7 @@ radv_pipeline_get_color_blend_state(const VkGraphicsPipelineCreateInfo *pCreateI
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool
|
static bool
|
||||||
radv_pipeline_has_ngg(const struct radv_pipeline *pipeline)
|
radv_pipeline_has_ngg(const struct radv_pipeline *pipeline)
|
||||||
{
|
{
|
||||||
struct radv_shader_variant *variant = NULL;
|
struct radv_shader_variant *variant = NULL;
|
||||||
|
@ -5481,6 +5481,8 @@ radv_pipeline_init(struct radv_pipeline *pipeline, struct radv_device *device,
|
||||||
/* Find the last vertex shader stage that eventually uses streamout. */
|
/* Find the last vertex shader stage that eventually uses streamout. */
|
||||||
pipeline->streamout_shader = radv_pipeline_get_streamout_shader(pipeline);
|
pipeline->streamout_shader = radv_pipeline_get_streamout_shader(pipeline);
|
||||||
|
|
||||||
|
pipeline->graphics.is_ngg = radv_pipeline_has_ngg(pipeline);
|
||||||
|
|
||||||
radv_pipeline_generate_pm4(pipeline, pCreateInfo, extra, &blend);
|
radv_pipeline_generate_pm4(pipeline, pCreateInfo, extra, &blend);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -1740,6 +1740,9 @@ struct radv_pipeline {
|
||||||
/* Used for rbplus */
|
/* Used for rbplus */
|
||||||
uint32_t col_format;
|
uint32_t col_format;
|
||||||
uint32_t cb_target_mask;
|
uint32_t cb_target_mask;
|
||||||
|
|
||||||
|
/* Whether the pipeline uses NGG (GFX10+). */
|
||||||
|
bool is_ngg;
|
||||||
} graphics;
|
} graphics;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1765,8 +1768,6 @@ radv_pipeline_has_tess(const struct radv_pipeline *pipeline)
|
||||||
return pipeline->shaders[MESA_SHADER_TESS_CTRL] ? true : false;
|
return pipeline->shaders[MESA_SHADER_TESS_CTRL] ? true : false;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool radv_pipeline_has_ngg(const struct radv_pipeline *pipeline);
|
|
||||||
|
|
||||||
bool radv_pipeline_has_ngg_passthrough(const struct radv_pipeline *pipeline);
|
bool radv_pipeline_has_ngg_passthrough(const struct radv_pipeline *pipeline);
|
||||||
|
|
||||||
bool radv_pipeline_has_gs_copy_shader(const struct radv_pipeline *pipeline);
|
bool radv_pipeline_has_gs_copy_shader(const struct radv_pipeline *pipeline);
|
||||||
|
|
Loading…
Reference in New Issue