mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-10 23:32:09 +00:00
[vulkan] Parse in descriptor set layouts
For now, just their create info is parsed, but they will be created on demand. Most importantly, they are named for ease of use in pipeline layouts.
This commit is contained in:
parent
44f058869f
commit
b10c8dc1a1
3 changed files with 209 additions and 4 deletions
|
@ -24,6 +24,14 @@ typedef struct qfv_reference_s {
|
||||||
int line;
|
int line;
|
||||||
} qfv_reference_t;
|
} qfv_reference_t;
|
||||||
|
|
||||||
|
typedef struct qfv_descriptorsetinfo_s {
|
||||||
|
const char *name;
|
||||||
|
VkDescriptorSetLayoutCreateFlags flags;
|
||||||
|
uint32_t num_bindings;
|
||||||
|
VkDescriptorSetLayoutBinding *bindings;
|
||||||
|
VkDescriptorSetLayout setLayout;
|
||||||
|
} qfv_descriptorsetinfo_t;
|
||||||
|
|
||||||
typedef struct qfv_imageinfo_s {
|
typedef struct qfv_imageinfo_s {
|
||||||
const char *name;
|
const char *name;
|
||||||
VkImageCreateFlags flags;
|
VkImageCreateFlags flags;
|
||||||
|
@ -157,6 +165,8 @@ typedef struct qfv_renderinfo_s {
|
||||||
uint32_t num_renderpasses;
|
uint32_t num_renderpasses;
|
||||||
qfv_renderpassinfo_t *renderpasses;
|
qfv_renderpassinfo_t *renderpasses;
|
||||||
qfv_output_t output;
|
qfv_output_t output;
|
||||||
|
uint32_t num_descriptorsets;
|
||||||
|
qfv_descriptorsetinfo_t *descriptorsets;
|
||||||
} qfv_renderinfo_t;
|
} qfv_renderinfo_t;
|
||||||
|
|
||||||
typedef struct qfv_label_s {
|
typedef struct qfv_label_s {
|
||||||
|
|
|
@ -495,6 +495,190 @@ properties = {
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
descriptorSetLayouts = {
|
||||||
|
matrix_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = uniform_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = vertex|geometry;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
quad_data_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
// glyph texture data
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = combined_image_sampler;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
// glyph geometry data (offset and uv)
|
||||||
|
binding = 1;
|
||||||
|
descriptorType = uniform_texel_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = vertex;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
texture_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = combined_image_sampler;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment|vertex;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
oit_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 1;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 2;
|
||||||
|
descriptorType = storage_image;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
entity_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = vertex;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
bone_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = vertex;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
sprite_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = uniform_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = vertex;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 1;
|
||||||
|
descriptorType = combined_image_sampler;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
lighting_attach = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 1;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 2;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 3;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 4;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
lighting_lights = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = uniform_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
lighting_shadow = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = combined_image_sampler;
|
||||||
|
descriptorCount = 32;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
compose_attach = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = input_attachment;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = fragment;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
particle_set = {
|
||||||
|
bindings = (
|
||||||
|
{
|
||||||
|
binding = 0;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = compute;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 1;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = compute;
|
||||||
|
},
|
||||||
|
{
|
||||||
|
binding = 2;
|
||||||
|
descriptorType = storage_buffer;
|
||||||
|
descriptorCount = 1;
|
||||||
|
stageFlags = compute;
|
||||||
|
},
|
||||||
|
);
|
||||||
|
};
|
||||||
|
};
|
||||||
images = {
|
images = {
|
||||||
depth = {
|
depth = {
|
||||||
@inherit = $image_base;
|
@inherit = $image_base;
|
||||||
|
|
|
@ -34,6 +34,7 @@
|
||||||
qfv_subpass_t,
|
qfv_subpass_t,
|
||||||
qfv_output_t,
|
qfv_output_t,
|
||||||
|
|
||||||
|
qfv_descriptorsetinfo_t,
|
||||||
qfv_imageinfo_t,
|
qfv_imageinfo_t,
|
||||||
qfv_imageviewinfo_t,
|
qfv_imageviewinfo_t,
|
||||||
qfv_dependencyinfo_t,
|
qfv_dependencyinfo_t,
|
||||||
|
@ -587,10 +588,6 @@
|
||||||
};
|
};
|
||||||
qfv_renderpassinfo_s = {
|
qfv_renderpassinfo_s = {
|
||||||
.name = qfv_renderpassinfo_t;
|
.name = qfv_renderpassinfo_t;
|
||||||
name = {
|
|
||||||
type = string;
|
|
||||||
string = name;
|
|
||||||
};
|
|
||||||
color = auto;
|
color = auto;
|
||||||
attachments = {
|
attachments = {
|
||||||
type = (labeledarray, qfv_attachmentinfo_t, name);
|
type = (labeledarray, qfv_attachmentinfo_t, name);
|
||||||
|
@ -604,6 +601,15 @@
|
||||||
values = subpasses;
|
values = subpasses;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
qfv_descriptorsetinfo_s = {
|
||||||
|
.name = qfv_descriptorsetinfo_t;
|
||||||
|
flags = auto;
|
||||||
|
bindings = {
|
||||||
|
type = (array, VkDescriptorSetLayoutBinding);
|
||||||
|
size = num_bindings;
|
||||||
|
values = bindings;
|
||||||
|
};
|
||||||
|
};
|
||||||
qfv_renderinfo_s = {
|
qfv_renderinfo_s = {
|
||||||
.name = qfv_renderinfo_t;
|
.name = qfv_renderinfo_t;
|
||||||
properties = ignore;
|
properties = ignore;
|
||||||
|
@ -623,6 +629,11 @@
|
||||||
size = num_renderpasses;
|
size = num_renderpasses;
|
||||||
values = renderpasses;
|
values = renderpasses;
|
||||||
};
|
};
|
||||||
|
descriptorSetLayouts = {
|
||||||
|
type = (labeledarray, qfv_descriptorsetinfo_t, name);
|
||||||
|
size = num_descriptorsets;
|
||||||
|
values = descriptorsets;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue