mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-05-30 21:37:53 -04:00
vulkan: add enumerate function for dsp and raw
This commit is contained in:
parent
e1cee625d5
commit
d17f853b03
3 changed files with 28 additions and 2 deletions
|
|
@ -308,9 +308,9 @@ static int port_enum_formats(void *object,
|
|||
}
|
||||
return 1;
|
||||
}
|
||||
return spa_vulkan_blit_enumerate_dsp_formats(&this->state, index-1, spa_vulkan_blit_get_buffer_caps(&this->state, direction), param, builder);
|
||||
return spa_vulkan_blit_enumerate_formats(&this->state, index-1, spa_vulkan_blit_get_buffer_caps(&this->state, direction), param, builder);
|
||||
} else {
|
||||
return spa_vulkan_blit_enumerate_dsp_formats(&this->state, index, spa_vulkan_blit_get_buffer_caps(&this->state, direction), param, builder);
|
||||
return spa_vulkan_blit_enumerate_formats(&this->state, index, spa_vulkan_blit_get_buffer_caps(&this->state, direction), param, builder);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -408,6 +408,30 @@ int spa_vulkan_blit_enumerate_dsp_formats(struct vulkan_blit_state *s, uint32_t
|
|||
return 1;
|
||||
}
|
||||
|
||||
int spa_vulkan_blit_enumerate_formats(struct vulkan_blit_state *s, uint32_t index, uint32_t caps,
|
||||
struct spa_pod **param, struct spa_pod_builder *builder)
|
||||
{
|
||||
uint32_t fmt_idx;
|
||||
bool has_modifier;
|
||||
uint32_t raw_offset = 0;
|
||||
if ((caps & VULKAN_BUFFER_TYPE_CAP_SHM) > 0)
|
||||
raw_offset += s->formatInfosDSP.formatCount;
|
||||
if ((caps & VULKAN_BUFFER_TYPE_CAP_DMABUF) > 0)
|
||||
raw_offset += s->formatInfosDSP.formatsWithModifiersCount;
|
||||
if (index < raw_offset) {
|
||||
if (find_EnumFormatInfo(&s->formatInfosDSP, index, caps, &fmt_idx, &has_modifier)) {
|
||||
*param = build_dsp_EnumFormat(&s->formatInfosDSP.infos[fmt_idx], has_modifier, builder);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
if (find_EnumFormatInfo(&s->formatInfosRaw, index - raw_offset, caps, &fmt_idx, &has_modifier)) {
|
||||
*param = build_raw_EnumFormat(&s->formatInfosRaw.infos[fmt_idx], has_modifier, builder);
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int vulkan_stream_init(struct vulkan_stream *stream, enum spa_direction direction,
|
||||
struct spa_dict *props)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -64,6 +64,8 @@ int spa_vulkan_blit_enumerate_raw_formats(struct vulkan_blit_state *s, uint32_t
|
|||
struct spa_pod **param, struct spa_pod_builder *builder);
|
||||
int spa_vulkan_blit_enumerate_dsp_formats(struct vulkan_blit_state *s, uint32_t index, uint32_t caps,
|
||||
struct spa_pod **param, struct spa_pod_builder *builder);
|
||||
int spa_vulkan_blit_enumerate_formats(struct vulkan_blit_state *s, uint32_t index, uint32_t caps,
|
||||
struct spa_pod **param, struct spa_pod_builder *builder);
|
||||
int spa_vulkan_blit_prepare(struct vulkan_blit_state *s);
|
||||
int spa_vulkan_blit_unprepare(struct vulkan_blit_state *s);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue