quakeforge/libs/video/renderer/vulkan/vkparse.plist
Bill Currie 7901f87960 [vulkan] Add support for compute shaders
This needed changing Vulkan_CreatePipeline to
Vulkan_CreateGraphicsPipeline for consistency (and parsing the
difference from a plist seemed... not worth thinking about).
2021-12-24 06:45:13 +09:00

362 lines
9.5 KiB
Text

{
search = (
VkAttachmentDescription,
VkDebugUtilsMessageSeverityFlagBitsEXT,
VkSubpassDescription,
VkSubpassDependency,
VkSpecializationInfo,
VkPipelineShaderStageCreateInfo,
VkPipelineVertexInputStateCreateInfo,
VkPipelineInputAssemblyStateCreateInfo,
VkPipelineViewportStateCreateInfo,
VkPipelineRasterizationStateCreateInfo,
VkPipelineMultisampleStateCreateInfo,
VkPipelineDepthStencilStateCreateInfo,
VkPipelineColorBlendStateCreateInfo,
VkPipelineDynamicStateCreateInfo,
VkDescriptorSetLayoutBinding,
VkDescriptorSetLayoutCreateInfo,
VkPushConstantRange,
VkPipelineLayoutCreateInfo,
VkGraphicsPipelineCreateInfo,
VkComputePipelineCreateInfo,
VkDescriptorPoolCreateInfo,
VkSamplerCreateInfo,
VkImageCreateInfo,
VkImageViewCreateInfo,
VkFramebufferCreateInfo,
VkClearValue,
VkPhysicalDeviceLimits,
);
parse = {
VkSubpassDescription = {
flags = auto;
pipelineBindPoint = auto;
inputAttachments = {
type = (array, VkAttachmentReference);
size = inputAttachmentCount;
values = pInputAttachments;
};
colorAttachments = {
type = (array, VkAttachmentReference);
size = colorAttachmentCount;
values = pColorAttachments;
};
resolveAttachments = {
type = (array, VkAttachmentReference);
values = pResolveAttachments;
matchSize = colorAttachments;
};
depthStencilAttachment = {
type = (single, VkAttachmentReference);
value = pDepthStencilAttachment;
};
preserveAttachments = {
type = (array, uint32_t);
size = preserveAttachmentCount;
values = pPreserveAttachments;
};
};
VkRenderPassCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
attachments = {
type = (array, VkAttachmentDescription);
size = attachmentCount;
values = pAttachments;
};
subpasses = {
type = (array, VkSubpassDescription);
size = subpassCount;
values = pSubpasses;
};
dependencies = {
type = (array, VkSubpassDependency);
size = dependencyCount;
values = pDependencies;
};
};
VkSpecializationInfo = {
mapEntries = {
type = (array, VkSpecializationMapEntry);
size = mapEntryCount;
values = pMapEntries;
};
data = {
type = (custom, (QFBinary, QFString),
parse_specialization_data);
fields = (dataSize, pData);
};
};
VkPipelineShaderStageCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
stage = auto;
name = {
type = string;
string = pName;
};
module = {
type = (custom, QFString, parse_VkShaderModule);
fields = (module);
};
specializationInfo = {
type = (single, VkSpecializationInfo);
value = pSpecializationInfo;
};
};
VkShaderModuleCreateInfo = skip;
VkDescriptorSetLayoutBinding = {
binding = auto;
descriptorType = auto;
descriptorCount = auto;
stageFlags = auto;
// skip pImmutableSamplers (default to 0) until I know how it works
};
VkDescriptorSetLayoutCreateInfo = {
flags = auto;
bindings = {
type = (array, VkDescriptorSetLayoutBinding);
size = bindingCount;
values = pBindings;
};
};
VkDescriptorPoolCreateInfo = {
flags = auto;
maxSets = auto;
bindings = {
type = (array, VkDescriptorPoolSize);
size = poolSizeCount;
values = pPoolSizes;
};
};
VkPipelineVertexInputStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
bindings = {
type = (array, VkVertexInputBindingDescription);
size = vertexBindingDescriptionCount;
values = pVertexBindingDescriptions;
};
attributes = {
type = (array, VkVertexInputAttributeDescription);
size = vertexAttributeDescriptionCount;
values = pVertexAttributeDescriptions;
};
};
VkPipelineInputAssemblyStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
topology = auto;
primitiveRestartEnable = auto;
};
VkPipelineViewportStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
//FIXME redo as one array
viewports = {
type = (array, VkViewport);
size = viewportCount;
values = pViewports;
};
scissors = {
type = (array, VkRect2D);
size = scissorCount;
values = pScissors;
};
};
VkPipelineRasterizationStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
depthClampEnable = auto;
rasterizerDiscardEnable = auto;
polygonMode = auto;
cullMode = auto;
frontFace = auto;
depthBiasEnable = auto;
depthBiasConstantFactor = auto;
depthBiasClamp = auto;
depthBiasSlopeFactor = auto;
lineWidth = auto;
};
VkPipelineMultisampleStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
rasterizationSamples = auto;
sampleShadingEnable = auto;
minSampleShading = auto;
//pSampleMask = auto; FIXME disabled until correct size is known
alphaToCoverageEnable = auto;
alphaToOneEnable = auto;
};
VkPipelineDepthStencilStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
depthTestEnable = auto;
depthWriteEnable = auto;
depthCompareOp = auto;
depthBoundsTestEnable = auto;
stencilTestEnable = auto;
front = auto;
back = auto;
minDepthBounds = auto;
maxDepthBounds = auto;
};
VkPipelineColorBlendStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
logicOpEnable = auto;
logicOp = auto;
attachments = {
type = (array, VkPipelineColorBlendAttachmentState);
size = attachmentCount;
values = pAttachments;
};
blendConstants = {
type = (custom, QFString, parse_RGBA);
fields = (blendConstants);
};
};
VkPipelineDynamicStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
dynamicState = {
type = (array, VkDynamicState);
size = dynamicStateCount;
values = pDynamicStates;
};
};
VkPipelineLayoutCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
setLayouts = {
type = (array, {
parse_type = (QFDictionary, QFString);
type = VkDescriptorSetLayout;
parser = parse_VkDescriptorSetLayout;
});
size = setLayoutCount;
values = pSetLayouts;
};
pushConstantRanges = {
type = (array, VkPushConstantRange);
size = pushConstantRangeCount;
values = pPushConstantRanges;
};
};
VkPipelineTessellationStateCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
patchControlPoints = auto;
};
VkGraphicsPipelineCreateInfo = {
flags = auto;
stages = {
type = (array, VkPipelineShaderStageCreateInfo);
size = stageCount;
values = pStages;
};
vertexInput = {
type = (single, VkPipelineVertexInputStateCreateInfo);
value = pVertexInputState;
};
inputAssembly = {
type = (single, VkPipelineInputAssemblyStateCreateInfo);
value = pInputAssemblyState;
};
tessellation = {
type = (single, VkPipelineTessellationStateCreateInfo);
value = pTessellationState;
};
viewport = {
type = (single, VkPipelineViewportStateCreateInfo);
value = pViewportState;
};
rasterization = {
type = (single, VkPipelineRasterizationStateCreateInfo);
value = pRasterizationState;
};
multisample = {
type = (single, VkPipelineMultisampleStateCreateInfo);
value = pMultisampleState;
};
depthStencil = {
type = (single, VkPipelineDepthStencilStateCreateInfo);
value = pDepthStencilState;
};
colorBlend = {
type = (single, VkPipelineColorBlendStateCreateInfo);
value = pColorBlendState;
};
dynamic = {
type = (single, VkPipelineDynamicStateCreateInfo);
value = pDynamicState;
};
layout = {
type = (custom, QFString, parse_VkPipelineLayout);
fields = (layout);
};
renderPass = {
type = (custom, QFString, parse_VkRenderPass);
fields = (renderPass);
};
subpass = auto;
basePipelineHandle = {
type = (custom, QFString, parse_BasePipeline);
fields = (basePipelineHandle);
};
basePipelineIndex = auto;
};
VkComputePipelineCreateInfo = {
flags = auto;
stage = auto;
layout = {
type = (custom, QFString, parse_VkPipelineLayout);
fields = (layout);
};
basePipelineHandle = {
type = (custom, QFString, parse_BasePipeline);
fields = (basePipelineHandle);
};
basePipelineIndex = auto;
};
VkImageCreateInfo = {
flags = auto;
imageType = auto;
format = auto;
extent = auto;
mipLevels = auto;
arrayLayers = auto;
samples = auto;
tiling = auto;
usage = auto;
sharingMode = skip; // FIXME for now
queueFamilyIndexCount = skip; // FIXME for now
pQueueFamilyIndices = skip; // FIXME for now
initialLayout = auto;
};
VkImageViewCreateInfo = {
flags = auto;
image = {
type = (custom, (QFDictionary, QFString),
parse_VkImage);
fields = (image);
};
viewType = auto;
format = auto;
components = auto;
subresourceRange = auto;
};
VkFramebufferCreateInfo = {
//flags = auto; reserved for future use (Bits enum does not exist)
renderPass = {
type = (custom, QFString, parse_VkRenderPass);
fields = (renderPass);
};
attachments = {
type = (array, VkImageView);
size = attachmentCount;
values = pAttachments;
};
width = auto;
height = auto;
layers = auto;
};
VkClearColorValue = skip;
VkClearValue = {
color = {
type = (custom, QFString, parse_RGBA);
fields = (color);
};
depthStencil = auto;
};
}
}