Questions tagged [vulkan]

For questions about the Vulkan graphics/compute API.

Filter by
Sorted by
Tagged with
62
votes
9answers
42k views

Should new graphics programmers be learning Vulkan instead of OpenGL?

From the wiki: "the Vulkan API was initially referred to as the 'next generation OpenGL initiative' by Khrono", and that it is "a grounds-up redesign effort to unify OpenGL and OpenGL ES into one ...
22
votes
3answers
911 views

Why is thread safety such a huge deal for Graphics APIs?

Both Vulkan and DirectX12 are claimed to be usable in a thread-safe manner. People seem to be excited about that. Why is this considered such a huge feature? The "real" processing gets thrown over ...
11
votes
1answer
7k views

What are Metal and Vulkan?

I keep coming across the terms 'Metal' and 'Vulkan' on this site. Guessing this to be some CG software, I'm interested to know what these are exactly and what the intended and most common usage is. A ...
10
votes
1answer
4k views

What prevents older GPUs from supporting Vulkan?

More out of curiosity than for any practical purpose, I'm wondering what is lacking from older GPUs that causes them to be unable to support Vulkan. I know that some argue that some hardware, such as ...
8
votes
2answers
3k views

What's the main difference of pipeline process between Vulkan and DX12?

DX12 introduces a new feature of pipeline named 'Bundle'. It seems that can optimize the command list, and send it to final pipeline. Vulkan invent some different pipeline: The graphic pipeline and ...
7
votes
1answer
2k views

Why can't I utilize multiple CPU cores with OpenGL like Vulkan?

Can I pass the data to the GPU through multiple cores with OpenGL?
7
votes
2answers
8k views

Vulkan: Uniform Buffers versus Push Constants for static data

I'm sort of struggling to understand the conceptual difference between uniform buffers and push constants. From what I can gather by reading the spec, the main differences are: Uniform buffers can be ...
7
votes
1answer
1k views

Is vkCmdPushDescriptorSetKHR efficient?

I am new to Vulkan. Compared to DX12, the resource binding procedure seems a little bit complicated. In terms of per draw call uniform buffers, I currently have two approaches in mind, and they both ...
6
votes
2answers
3k views

Vulkan: how does host coherence work?

I have a memory that is persistently mapped. It is both HOST_VISIBLE and HOST_COHERENT but not DEVICE_LOCAL. (My physical device offers no memory that is exclusively HOST_VISIBLE without also being ...
6
votes
1answer
4k views

How do I create a Win32 window with a Vulkan context?

I am aware of libraries that already do this (like GLFW), but I would actually prefer do all of the window and context creation by myself.
6
votes
1answer
405 views

Instanced Stereo Rendering vs. Multiple Command Buffers

Source In this webpage from Nvidia, the author(s) seems to imply that you could create a command buffer for each eye on separate threads. However, I don't see the benefit to this over instanced stereo ...
5
votes
2answers
6k views

Can i compile my shaders to SPIR-V without using glslangValidator?

I'm making a cross-platform application, and i need my shaders to be compiled to SPIR-V for both Opengl and Vulkan. It seems that the only way to do so is to call a separate program, called "...
4
votes
1answer
181 views

Colorblending shader recompilation scenarios

Context As I was trying to learn more about Vulkan, I learned that certain fixed-function steps could be implemented with shader code from this video (at around the spot where he talks about the ...
4
votes
1answer
329 views

How much does driver quality affect Vulkan and DX12 compared to OpenGL and DX11?

Considering the fact that Vulkan and DX12 delegate most of the memory management / work scheduling tasks to the application itself, how much do drivers affect performance? To put my question into ...
4
votes
1answer
1k views

Is a single shader and 1x1 pixel white sampler more efficient than frequent switching between shaders with and without samplers?

I have some existing OpenGL code that I am porting to Vulkan. The question is somewhat relevant to both OpenGL and Vulkan. I am rendering some primitives using textures, some single channel, others ...
4
votes
1answer
62 views

vulkan perspective matrix vs opengl perspective matrix

Hi I have a slight confusion in using the opengl perspective matrix in vulkan. glm's perspective matrix works directly in vulkan just by multiplying the "[1,1 term by -1 but when I compared the ...
4
votes
1answer
2k views

How to change sampler/pipeline states at runtime in Vulkan?

I have problems implementing a Vulkan renderer alongside my OpenGL one. In OpenGL one can change sampler parameters easily at runtime (like anisotropy settings through glTexParameter) or blend/depth ...
4
votes
2answers
1k views

How to check which API's are available on a given machine?

I'm building an engine, which has Vulkan for its primary rendering engine. But to have at least some backwards compatibility with devices that don't have drivers for it (mainly mobile) I want to ...
4
votes
1answer
7k views

understanding glm::perspective vs glm::ortho

I'm new to computer graphics. I played around with OpenGL and now am trying out Vulkan. Basically what I want to do, in 2D is have an 800x800 window, and I want that to represent 800 meters by 800 ...
4
votes
0answers
218 views

Are there any reasons to use power of two textures with modern mobile platforms?

Are there any reasons to use power of two textures (like 128x128 sized) if one targets modern mobile platforms (with OpenGL ES 3.0, Metal and/or Vulkan)? With iOS the PVRTC only supports power of two ...
3
votes
1answer
157 views

What mechanisms are being used by Directx12 and Vulkan APIs in order to communicate with graphic card drivers internally?

I am trying and learning to develop a low level graphics API. I want to know, how do modern graphics APIs manage to communicate with graphic card drivers (to tackle GPU) so efficiently and in an ...
3
votes
1answer
1k views

Vulkan: efficient way to update VBO mesh vertices?

I would like to change/add/remove some mesh vertices in existing VBO's (while deforming and remeshing 3D objects) . With OpenGL I would have to reload whole vertex VBO's. I suppose with Vulkan there ...
3
votes
1answer
2k views

Vulkan best way of updating pipeline viewport

I have discovered that there are two ways to update the viewport (might be more, but not sure). Currently I am rebuilding the Pipeline when I resize my screen but there is a noticeable stutter as it ...
3
votes
1answer
2k views

What is the oldest hardware able to feasibly support Vulkan?

What is the oldest hardware or minimum requirements conceptually able to support a fully hardware-accelerated Vulkan implementation? I am not referring to what implementations are currently available ...
2
votes
1answer
1k views

What are the use cases for multiple render passes?

From what I understand of Vulkan, we have a render pass with its associated image resources and subpasses, and each subpass accesses those resources and may synchronise with previous subpasses to ...
2
votes
1answer
833 views

Clarifying vulkan glsl std140

So I have a uniform block that looks something lile this { mat4; mat4[128]; uint[16] } The block should total up to 8320 bytes. After aligning by 256 bytes for nvidia, that brings the total ...
2
votes
2answers
1k views

Multiple swapchains in Vulkan app with ImGui

I am integrating imgui into my app using glfw + vulkan example. The function vkCreateSwapchainKHR() is also called by imgui setup logic in addition to my app on the same device and it fails with "...
2
votes
1answer
2k views

Best way to clear a framebuffer image without drawing?

So I have a framebuffer image which later acts as input to a compute shader, and some frames there is geometry drawn to the framebuffer, but some frames this is not necessary. The thing is, in my ...
2
votes
1answer
356 views

How different is the SPIR-V accepted by OpenGL (ARB_gl_spirv) from SPIR-V accepted by Vulkan?

The format of SPIR-V bytecode is probably one of the least documented parts of both OpenGL and Vulkan that I am aware of. I have compiled a very basic fragment shaders into both the OpenGL and Vulkan ...
2
votes
1answer
58 views

How do fragment shader invocations subgroups map onto triangles?

Should I expect that every invocation/fragment within a subgroup, when using something like subgroupBroadcast(), will belong to the same triangle?
2
votes
1answer
527 views

Vulkan: using gl_PrimitiveID without geometryShader feature

When compiling a glsl fragment shader which reads gl_PrimitiveID with glslc compiler I get the spirv-1.0 with Geometry capability enabled, which is technically ...
2
votes
1answer
1k views

Which 3D applications currently uses Vulkan API?

I'm a newbie in terms of CG world. I'm curious to know about the applications that use Vulkan API and their performances compared to other APIs. As I read, Vulkan has more access to the graphic cards ...
2
votes
1answer
280 views

Do you have to group and optimize your draw and shader calls in Vulkan?

This is in reference and contrast to the discipline (or more or less requirement) of opengl to group draws that use the same materials together, to minimize making many draw calls or many switch ...
2
votes
1answer
278 views

Inconsistent behavior involving VkPhysicalDeviceFeatures.fillModeNonSolid

I departed slightly from the Vulkan tutorial I was following and decided to draw a wireframe instead of a solid triangle. As soon as I call ...
2
votes
1answer
2k views

Do I need separate Graphics and Transfer commands?

I was following this tutorial on Vulkan https://vulkan-tutorial.com/Vertex_buffers/Staging_buffer and I decided to do this bit: The buffer copy command requires a queue family that supports transfer ...
2
votes
0answers
132 views

Difference between Passing Instance Data to Vertex Shader methods

I see two kinds of passing Instance Data to Vertex Shader in different Examples. 1 .Using a Uniform Buffer and filling in an array, like below ...
2
votes
0answers
349 views

Out of core rendering

Suppose there is a frame, which is larger that the device memory (I mean, dozens of Gb). And I would like to render to it from a set of textures, which is larger than the host memory (I mean, dozens ...
2
votes
0answers
59 views

Communication between vertex shader executions

Look at this vertex shader: ...
2
votes
1answer
874 views

Feeding vertex data to a compute shader

I'm writing a CAD program in vulkan. In my current design, I have line paths represented as large vertex buffers for rendering. I would like to implement an algorithm for extruding the path outwards, ...
1
vote
2answers
6k views

FPS counter for a simple Vulkan app

What measurement/monitoring tools could I use to get the FPS values for a simple Vulkan app? Thanks in advance
1
vote
1answer
639 views

GLSL Compute Shader Setting "shared" memory buffer size

Is it possible to set the size of the shared memory of a compute shader workgroup from the host code? There is a way to do this in CUDA and I am suspecting that, since there is an GLSL extension to ...
1
vote
1answer
475 views

How was computer graphics libraries or gtk,qt programmed?

I am wondering how was first graphic or image libraries created,I know C and Python ,I want to create plotting application,and I cant imagine these libraries(QT,OpenGL,Vulkan) written by C,how can I ...
1
vote
1answer
588 views

How do I swap the buffers when using a Win32 window with Vulkan?

I was recently told here how to manage the integration between Vulkan and Win32. I am writing a windowing library like "GLFW", that is only going to support Vulkan; I have now come to the point where ...
1
vote
1answer
471 views

Controling order of execution of a (compute) shader on an array of vertices (data) in Vulkan

Is it possible to force Vulkan to execute a shader on vertices (data) in a semi-consecutive manner? For example, if the data passed to the shaders as a binary tree, shader would process it one layer ...
1
vote
1answer
1k views

What is a "Vulkan Extension"?

When creating a VkInstance, you need to setup the API's extensions that are going to be used by your application (for example you need an extension to interface with the window system on desktop ...
1
vote
1answer
25 views

A lot of pipelines on Vulkan for each render pass, what could go wrong?

I would like to represent creation for each 2D shape or bitmap effect as a pipeline. The only purpose of this to modularize algorithms because extendibility is a big deal for current project. However, ...
1
vote
1answer
69 views

Mesh-Shader and layered rendering

In the usual pipeline (vertex, tessellation, geometry and fragment shaders) the geometry can be deformed and in the geometry shader it is possible to copy the generated and deformed geometry in order ...
1
vote
2answers
168 views

Is there an efficient way to achieve color blending in compute shaders?

What I want is a function like imageStore, but instead of replacing a value - applying a blend operation to it, e.g. addition. It is not possible to do something ...
1
vote
1answer
38 views

Mat4 that is written to a storage buffer in a compute shader has an altered value when read back

I am attempting to use a compute shader to calculate joint transforms for animations. I use a loop to calculate the global joint transforms from the local transforms. Relevant code below: ...
1
vote
1answer
293 views

Retrieve real distance from depth buffer for shadow ray (vulkan hybrid rendering)

I'm trying to implement an hybrid renderer based on Vulkan extension VK_NV_ray_tracing. Basically, the rasterizer compute the albedo and depth map of the scene. Then I try to compute the distance from ...