| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
They were non-working for quite a while.
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
| |
The issue is that if dedicated allocation is used, VkBufferCreateInfo.size
and the actual allocated size mismatched, which is a validation error.
|
|
|
|
|
| |
Its more useful when buffers are allocated, not in the
pool.
|
|
|
|
|
|
|
|
|
|
| |
This function is only used for filtering and generic compute.
The issue is that a view inherits the usage flags from the image
by default, and the spec says the view format must be compatible
with the usage. VkImageViewUsageCreateInfo allows us to filter out
the indeded uses of the imageview.
Pffff.
|
|
|
|
|
|
|
|
|
| |
When using **integer** images inside shaders, it turns out
that conversion doesn't automatically happen, but we need to
explicitly use the imageviews to get the image exposed as
a suitable representation for the shader.
Finally enables bitexact image representations.
|
|
|
|
| |
Can/could be useful to know which buffers are mapped.
|
| |
|
| |
|
|
|
|
| |
Signed-off-by: James Almer <jamrial@gmail.com>
|
|
|
|
|
|
|
|
| |
r8
r16/r16f
r32f
Sure, GLSL. Makes sense.
|
| |
|
| |
|
|
|
|
|
| |
Using signed or unsigned integer formats/layouts requires that
"uimage" or "iimage" are used.
|
|
|
|
|
|
|
|
| |
The original either reported 8 or 16-bit conversion from the
original, rather than being able to return the actual original.
This makes it usable in a situation where preserving exactness
is required.
|
|
|
|
|
| |
Same as the previous commit, the compiler may insert padding.
Thanks to Marvin Scholz for pointing this out.
|
|
|
|
|
|
| |
The flexible array member struct can have padding added by
the compiler which was not taken into account properly, which
could lead to a heap buffer overflow.
|
| |
|
| |
|
|
|
|
|
| |
Implicit types were a mistake.
lowp/mediump/highp was a sin.
|
|
|
|
| |
Needed to prevent crashes on vc2 vulkan encoder patch
|
|
|
|
|
| |
This simply keeps all shader optimizations, but allows debug
data to be generated.
|
|
|
|
| |
Only nlmeans_vulkan uses it.
|
|
|
|
| |
Required to let users know whether debugging is active.
|
| |
|
|
|
|
|
|
| |
This makes std430 (which we use everywhere already) fully match C
layout.
Extension was made mandatory in 1.2.
|
|
|
|
|
| |
This saves resources, as dependencies are freed/reclaimed with a lower latency,
and provies a speedup.
|
|
|
|
| |
Shader objects finally allow completely independent shaders.
|
|
|
|
|
| |
This finally permits using fully compiled shaders across
multiple execution contexts.
|
|
|
|
|
|
|
| |
Pipelines are just shaders. There's no reason to treat them
differently.
This also lets us implement shader objects and is an overall
cleanup.
|
|
|
|
|
|
|
|
| |
Push descriptors are in theory slightly faster, but come with
limitations for which we have to check.
Either way, they're not difficult to implement, so even though
no one should be using peasant-tier descriptors, do it anyway.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This permits:
- The use of Vulkan filtering on many more devices
- Better debugging due to lack of descriptor buffer support in layers
Much of the changes here are due to a requirement that updates to
descriptors must happen between the command buffer being waited on,
and the pipeline not being bound.
We routinely did it the other way around, by updating only after
we bind the pipeline.
|
|
|
|
| |
Just avoids a single temporary allocation.
|
|
|
|
|
| |
This function simply takes in a binary semaphore as a dependency
to an execution.
|
|
|
|
| |
No reason to allocate 16 when 3 will do.
|
|
|
|
|
|
| |
images
This allows mapping of 10-bit DRM images.
|
|
|
|
|
|
|
|
|
|
|
| |
The old query code never worked properly, and did some hideous
heuristics to read the status bit, and work that into a return
code.
This is all best left to callers to do, which simplifies
our code a lot.
This also fixes minor validation errors regarding calling queries
which are not in their active state.
|
|
|
|
|
| |
This function sets the class correctly, and calls functions
that all users have to call anyway.
|
| |
|
| |
|
|
|
|
|
| |
Implementations are required to list memory heaps in the most optimal
order. But its better to be explicit for this particular allocation.
|
|
|
|
|
| |
Avoids the need to call ff_vk_qf_init if manually filling in
a queue family structure.
|
| |
|
|
|
|
| |
This would've let to a segfault if custom allocators were used.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit was long overdue. The old transfer dubiously tried to
merge as much code as possible, and had very little in the way
of optimizations, apart from basic host-mapping.
The new code uses buffer pools for any temporary bufflers, and
handles falling back to buffer-based uploads if host-mapping fails.
Roundtrip performance difference:
ffmpeg -init_hw_device "vulkan=vk:0,debug=0,disable_multiplane=1" -f lavfi \
-i color=red:s=3840x2160 -vf hwupload,hwdownload,format=yuv420p -f null -
7900XTX:
Before: 224fps
After: 502fps
Ada, with proprietary drivers:
Before: 29fps
After: 54fps
Alder Lake:
Before: 85fps
After: 108fps
With the host-mapping codepath disabled:
Before: 32fps
After: 51fps
|
|
|
|
| |
Lets us implement FPS conversion.
|
| |
|
|
|
|
|
|
|
|
|
| |
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 was not done, resulting in validation issues, and potential
driver issues.
|