mirror of https://git.ffmpeg.org/ffmpeg.git
vulkan: rename read_only to singular
There's nothing stopping users from writing to such buffers. Its more accurate to say they are singular, i.e. not duplicated between multiple submissions. This can be helpful for global statistics, or error propagation purposes.
This commit is contained in:
parent
e11087b162
commit
80ddc72717
|
@ -1465,7 +1465,7 @@ static const struct descriptor_props {
|
||||||
int ff_vk_pipeline_descriptor_set_add(FFVulkanContext *s, FFVulkanPipeline *pl,
|
int ff_vk_pipeline_descriptor_set_add(FFVulkanContext *s, FFVulkanPipeline *pl,
|
||||||
FFVkSPIRVShader *shd,
|
FFVkSPIRVShader *shd,
|
||||||
FFVulkanDescriptorSetBinding *desc, int nb,
|
FFVulkanDescriptorSetBinding *desc, int nb,
|
||||||
int read_only, int print_to_shader_only)
|
int singular, int print_to_shader_only)
|
||||||
{
|
{
|
||||||
VkResult ret;
|
VkResult ret;
|
||||||
int has_sampler = 0;
|
int has_sampler = 0;
|
||||||
|
@ -1535,7 +1535,7 @@ int ff_vk_pipeline_descriptor_set_add(FFVulkanContext *s, FFVulkanPipeline *pl,
|
||||||
vk->GetDescriptorSetLayoutBindingOffsetEXT(s->hwctx->act_dev, set->layout,
|
vk->GetDescriptorSetLayoutBindingOffsetEXT(s->hwctx->act_dev, set->layout,
|
||||||
i, &set->binding_offset[i]);
|
i, &set->binding_offset[i]);
|
||||||
|
|
||||||
set->read_only = read_only;
|
set->singular = singular;
|
||||||
set->nb_bindings = nb;
|
set->nb_bindings = nb;
|
||||||
pl->nb_descriptor_sets++;
|
pl->nb_descriptor_sets++;
|
||||||
|
|
||||||
|
@ -1592,7 +1592,7 @@ int ff_vk_exec_pipeline_register(FFVulkanContext *s, FFVkExecPool *pool,
|
||||||
|
|
||||||
for (int i = 0; i < pl->nb_descriptor_sets; i++) {
|
for (int i = 0; i < pl->nb_descriptor_sets; i++) {
|
||||||
FFVulkanDescriptorSet *set = &pl->desc_set[i];
|
FFVulkanDescriptorSet *set = &pl->desc_set[i];
|
||||||
int nb = set->read_only ? 1 : pool->pool_size;
|
int nb = set->singular ? 1 : pool->pool_size;
|
||||||
|
|
||||||
err = ff_vk_create_buf(s, &set->buf, set->aligned_size*nb,
|
err = ff_vk_create_buf(s, &set->buf, set->aligned_size*nb,
|
||||||
NULL, NULL, set->usage,
|
NULL, NULL, set->usage,
|
||||||
|
@ -1624,7 +1624,7 @@ static inline void update_set_descriptor(FFVulkanContext *s, FFVkExecContext *e,
|
||||||
size_t desc_size)
|
size_t desc_size)
|
||||||
{
|
{
|
||||||
FFVulkanFunctions *vk = &s->vkfn;
|
FFVulkanFunctions *vk = &s->vkfn;
|
||||||
const size_t exec_offset = set->read_only ? 0 : set->aligned_size*e->idx;
|
const size_t exec_offset = set->singular ? 0 : set->aligned_size*e->idx;
|
||||||
void *desc = set->desc_mem + /* Base */
|
void *desc = set->desc_mem + /* Base */
|
||||||
exec_offset + /* Execution context */
|
exec_offset + /* Execution context */
|
||||||
set->binding_offset[bind_idx] + /* Descriptor binding */
|
set->binding_offset[bind_idx] + /* Descriptor binding */
|
||||||
|
@ -1831,7 +1831,7 @@ void ff_vk_exec_bind_pipeline(FFVulkanContext *s, FFVkExecContext *e,
|
||||||
|
|
||||||
if (pl->nb_descriptor_sets) {
|
if (pl->nb_descriptor_sets) {
|
||||||
for (int i = 0; i < pl->nb_descriptor_sets; i++)
|
for (int i = 0; i < pl->nb_descriptor_sets; i++)
|
||||||
offsets[i] = pl->desc_set[i].read_only ? 0 : pl->desc_set[i].aligned_size*e->idx;
|
offsets[i] = pl->desc_set[i].singular ? 0 : pl->desc_set[i].aligned_size*e->idx;
|
||||||
|
|
||||||
/* Bind descriptor buffers */
|
/* Bind descriptor buffers */
|
||||||
vk->CmdBindDescriptorBuffersEXT(e->buf, pl->nb_descriptor_sets, pl->desc_bind);
|
vk->CmdBindDescriptorBuffersEXT(e->buf, pl->nb_descriptor_sets, pl->desc_bind);
|
||||||
|
|
|
@ -125,7 +125,8 @@ typedef struct FFVulkanDescriptorSet {
|
||||||
VkDeviceSize *binding_offset;
|
VkDeviceSize *binding_offset;
|
||||||
int nb_bindings;
|
int nb_bindings;
|
||||||
|
|
||||||
int read_only;
|
/* Descriptor set is shared between all submissions */
|
||||||
|
int singular;
|
||||||
} FFVulkanDescriptorSet;
|
} FFVulkanDescriptorSet;
|
||||||
|
|
||||||
typedef struct FFVulkanPipeline {
|
typedef struct FFVulkanPipeline {
|
||||||
|
@ -463,7 +464,7 @@ void ff_vk_update_push_exec(FFVulkanContext *s, FFVkExecContext *e,
|
||||||
int ff_vk_pipeline_descriptor_set_add(FFVulkanContext *s, FFVulkanPipeline *pl,
|
int ff_vk_pipeline_descriptor_set_add(FFVulkanContext *s, FFVulkanPipeline *pl,
|
||||||
FFVkSPIRVShader *shd,
|
FFVkSPIRVShader *shd,
|
||||||
FFVulkanDescriptorSetBinding *desc, int nb,
|
FFVulkanDescriptorSetBinding *desc, int nb,
|
||||||
int read_only, int print_to_shader_only);
|
int singular, int print_to_shader_only);
|
||||||
|
|
||||||
/* Initialize/free a pipeline. */
|
/* Initialize/free a pipeline. */
|
||||||
int ff_vk_init_compute_pipeline(FFVulkanContext *s, FFVulkanPipeline *pl,
|
int ff_vk_init_compute_pipeline(FFVulkanContext *s, FFVulkanPipeline *pl,
|
||||||
|
|
Loading…
Reference in New Issue