anv: export descriptor flushing functions
Signed-off-by: Lionel Landwerlin <lionel.g.landwerlin@intel.com> Reviewed-by: Tapani Pälli <tapani.palli@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/26989>
This commit is contained in:

committed by
Marge Bot

parent
43fb43ba2c
commit
6bb3ae99c5
@@ -133,6 +133,17 @@ void genX(emit_l3_config)(struct anv_batch *batch,
|
|||||||
void genX(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
|
void genX(cmd_buffer_config_l3)(struct anv_cmd_buffer *cmd_buffer,
|
||||||
const struct intel_l3_config *cfg);
|
const struct intel_l3_config *cfg);
|
||||||
|
|
||||||
|
uint32_t
|
||||||
|
genX(cmd_buffer_flush_descriptor_sets)(struct anv_cmd_buffer *cmd_buffer,
|
||||||
|
struct anv_cmd_pipeline_state *pipe_state,
|
||||||
|
const VkShaderStageFlags dirty,
|
||||||
|
struct anv_shader_bin **shaders,
|
||||||
|
uint32_t num_shaders);
|
||||||
|
void
|
||||||
|
genX(cmd_buffer_flush_push_descriptor_set)(struct anv_cmd_buffer *cmd_buffer,
|
||||||
|
struct anv_cmd_pipeline_state *state,
|
||||||
|
struct anv_pipeline *pipeline);
|
||||||
|
|
||||||
void genX(cmd_buffer_flush_gfx_hw_state)(struct anv_cmd_buffer *cmd_buffer);
|
void genX(cmd_buffer_flush_gfx_hw_state)(struct anv_cmd_buffer *cmd_buffer);
|
||||||
|
|
||||||
void genX(cmd_buffer_flush_gfx_runtime_state)(struct anv_cmd_buffer *cmd_buffer);
|
void genX(cmd_buffer_flush_gfx_runtime_state)(struct anv_cmd_buffer *cmd_buffer);
|
||||||
|
@@ -2266,12 +2266,12 @@ emit_samplers(struct anv_cmd_buffer *cmd_buffer,
|
|||||||
return VK_SUCCESS;
|
return VK_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint32_t
|
uint32_t
|
||||||
flush_descriptor_sets(struct anv_cmd_buffer *cmd_buffer,
|
genX(cmd_buffer_flush_descriptor_sets)(struct anv_cmd_buffer *cmd_buffer,
|
||||||
struct anv_cmd_pipeline_state *pipe_state,
|
struct anv_cmd_pipeline_state *pipe_state,
|
||||||
const VkShaderStageFlags dirty,
|
const VkShaderStageFlags dirty,
|
||||||
struct anv_shader_bin **shaders,
|
struct anv_shader_bin **shaders,
|
||||||
uint32_t num_shaders)
|
uint32_t num_shaders)
|
||||||
{
|
{
|
||||||
VkShaderStageFlags flushed = 0;
|
VkShaderStageFlags flushed = 0;
|
||||||
|
|
||||||
@@ -2346,10 +2346,10 @@ flush_descriptor_sets(struct anv_cmd_buffer *cmd_buffer,
|
|||||||
* and surface state generation when a pipeline is not going to use the
|
* and surface state generation when a pipeline is not going to use the
|
||||||
* binding table to access any push descriptor data.
|
* binding table to access any push descriptor data.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
flush_push_descriptor_set(struct anv_cmd_buffer *cmd_buffer,
|
genX(cmd_buffer_flush_push_descriptor_set)(struct anv_cmd_buffer *cmd_buffer,
|
||||||
struct anv_cmd_pipeline_state *state,
|
struct anv_cmd_pipeline_state *state,
|
||||||
struct anv_pipeline *pipeline)
|
struct anv_pipeline *pipeline)
|
||||||
{
|
{
|
||||||
assert(pipeline->use_push_descriptor &&
|
assert(pipeline->use_push_descriptor &&
|
||||||
pipeline->layout.push_descriptor_set_index != -1);
|
pipeline->layout.push_descriptor_set_index != -1);
|
||||||
@@ -3167,9 +3167,9 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer)
|
|||||||
cmd_buffer->state.push_descriptors_dirty &
|
cmd_buffer->state.push_descriptors_dirty &
|
||||||
pipeline->base.base.use_push_descriptor;
|
pipeline->base.base.use_push_descriptor;
|
||||||
if (push_descriptor_dirty) {
|
if (push_descriptor_dirty) {
|
||||||
flush_push_descriptor_set(cmd_buffer,
|
genX(cmd_buffer_flush_push_descriptor_set)(cmd_buffer,
|
||||||
&cmd_buffer->state.gfx.base,
|
&cmd_buffer->state.gfx.base,
|
||||||
&pipeline->base.base);
|
&pipeline->base.base);
|
||||||
descriptors_dirty |= push_descriptor_dirty;
|
descriptors_dirty |= push_descriptor_dirty;
|
||||||
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
||||||
}
|
}
|
||||||
@@ -3280,11 +3280,12 @@ genX(cmd_buffer_flush_gfx_state)(struct anv_cmd_buffer *cmd_buffer)
|
|||||||
*/
|
*/
|
||||||
uint32_t dirty = 0;
|
uint32_t dirty = 0;
|
||||||
if (descriptors_dirty) {
|
if (descriptors_dirty) {
|
||||||
dirty = flush_descriptor_sets(cmd_buffer,
|
dirty = genX(cmd_buffer_flush_descriptor_sets)(
|
||||||
&cmd_buffer->state.gfx.base,
|
cmd_buffer,
|
||||||
descriptors_dirty,
|
&cmd_buffer->state.gfx.base,
|
||||||
pipeline->base.shaders,
|
descriptors_dirty,
|
||||||
ARRAY_SIZE(pipeline->base.shaders));
|
pipeline->base.shaders,
|
||||||
|
ARRAY_SIZE(pipeline->base.shaders));
|
||||||
cmd_buffer->state.descriptors_dirty &= ~dirty;
|
cmd_buffer->state.descriptors_dirty &= ~dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5779,19 +5780,19 @@ genX(cmd_buffer_flush_compute_state)(struct anv_cmd_buffer *cmd_buffer)
|
|||||||
cmd_buffer->state.push_descriptors_dirty &
|
cmd_buffer->state.push_descriptors_dirty &
|
||||||
pipeline->base.use_push_descriptor;
|
pipeline->base.use_push_descriptor;
|
||||||
if (push_descriptor_dirty) {
|
if (push_descriptor_dirty) {
|
||||||
flush_push_descriptor_set(cmd_buffer,
|
genX(cmd_buffer_flush_push_descriptor_set)(cmd_buffer,
|
||||||
&cmd_buffer->state.compute.base,
|
&cmd_buffer->state.compute.base,
|
||||||
&pipeline->base);
|
&pipeline->base);
|
||||||
cmd_buffer->state.descriptors_dirty |= push_descriptor_dirty;
|
cmd_buffer->state.descriptors_dirty |= push_descriptor_dirty;
|
||||||
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((cmd_buffer->state.descriptors_dirty & VK_SHADER_STAGE_COMPUTE_BIT) ||
|
if ((cmd_buffer->state.descriptors_dirty & VK_SHADER_STAGE_COMPUTE_BIT) ||
|
||||||
cmd_buffer->state.compute.pipeline_dirty) {
|
cmd_buffer->state.compute.pipeline_dirty) {
|
||||||
flush_descriptor_sets(cmd_buffer,
|
genX(cmd_buffer_flush_descriptor_sets)(cmd_buffer,
|
||||||
&cmd_buffer->state.compute.base,
|
&cmd_buffer->state.compute.base,
|
||||||
VK_SHADER_STAGE_COMPUTE_BIT,
|
VK_SHADER_STAGE_COMPUTE_BIT,
|
||||||
&pipeline->cs, 1);
|
&pipeline->cs, 1);
|
||||||
cmd_buffer->state.descriptors_dirty &= ~VK_SHADER_STAGE_COMPUTE_BIT;
|
cmd_buffer->state.descriptors_dirty &= ~VK_SHADER_STAGE_COMPUTE_BIT;
|
||||||
|
|
||||||
#if GFX_VERx10 < 125
|
#if GFX_VERx10 < 125
|
||||||
@@ -6525,9 +6526,9 @@ cmd_buffer_trace_rays(struct anv_cmd_buffer *cmd_buffer,
|
|||||||
cmd_buffer->state.push_descriptors_dirty &
|
cmd_buffer->state.push_descriptors_dirty &
|
||||||
pipeline->base.use_push_descriptor;
|
pipeline->base.use_push_descriptor;
|
||||||
if (push_descriptor_dirty) {
|
if (push_descriptor_dirty) {
|
||||||
flush_push_descriptor_set(cmd_buffer,
|
genX(cmd_buffer_flush_push_descriptor_set)(cmd_buffer,
|
||||||
&cmd_buffer->state.rt.base,
|
&cmd_buffer->state.rt.base,
|
||||||
&pipeline->base);
|
&pipeline->base);
|
||||||
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
cmd_buffer->state.push_descriptors_dirty &= ~push_descriptor_dirty;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user