Because it's possible to specify the formats explicitly it doesn't make
sense not to support that. Eventually contents-based detection could be
implemented as well, but I don't want to do that just yet.
And make it return right after the first error. Also clean up some
old-style code -- the redirection should be restricted to the smallest
scope possible.
So if we convert foo.blah but explicitly tell it that it's a SPIR-V
file, it actually treats it as such, instead of complaining that `blah`
is not a known extension.
First step towards being able to operate directly on data.
Currently those will be needed mainly by the Vk library to patch around
a SwiftShader bug. I'm not sure yet how the public API should look so
it's all hidden in the Implementation namespace for now.
If it's ignored, a warning is printed to catch accidents, but not an
error since it should be possible to just append --info to existing
command line to see what the input is about.
Together with:
* CommandBuffer::draw()
* Support for indexed and non-indexed meshes
* Support for setting primitive and stride dynamically
I took one shortcut and vkCmdBindVertexBuffers() is currently called
once for each binding. The interface is ready for this, but I'm not yet
100% sure how to test that it actually does batch the buffers, so it's
left at the lazy implementation for now.
So it's possible to do
Vk::Mesh mesh{Vk::MeshLayout{}
.addBinding(...)
.addAttribute(...)
};
Without this, the above will result in a dangling layout reference.
Because that's what it is, after all. Also mention this naming
difference in the Vulkan wrapping overview.
I was wondering if I should rename QueueFlag::Graphics too, but since
graphics queues are used for (not really rasterization-specific) image
copies as well, and ray tracing is actually done on compute queues, I
don't think renaming to Rasterization is a good idea. Clarified the
comments at least.
I named it RasterizationPipelineCreateInfo and not
GraphicsPipelineCreateInfo because there's now a
RayTracingPipelineCreateInfo as well, which is *also* graphics, and it
would be confusing for everyone except people already drowned in Vulkan
naming quirks.
Name the move constructor/assignment arguments so it's clearer that it's
indeed a custom implementation and not just a defaulted function moved
into the cpp.