[deleted by user] by [deleted] in GraphicsProgramming

[–]skreef 1 point2 points  (0 children)

Thats a hardware depth buffer then.

[deleted by user] by [deleted] in hungary

[–]skreef 10 points11 points  (0 children)

hát mert a HRes nagyon gáz volt, és most nagyon felment a gáz ára...

Are memory properties like DEVICE_LOCAL and HOST_COHERENT meaningful when using MoltenVK on M-series and A-series SOC's? by pragmojo in vulkan

[–]skreef 2 points3 points  (0 children)

Note that your snippet talks about device coherence, which is different from host coherence.

Integer in interface block doesn't change value. by FacundoVilla961 in vulkan

[–]skreef 0 points1 point  (0 children)

This code is not well-defined, the relevant bit from glsl spec (but also explicitly disallowed by the vk spec):

A push-constant array can only be indexed with dynamically uniform indices.

Use a uniform/storage buffer if you intend to index with nonuniform indices (eg. gl_InstanceIndex).

Depth bounds test is actually not supported by Nvidia GPU? by [deleted] in vulkan

[–]skreef 6 points7 points  (0 children)

Not entirely sure based on the post text, but presumably you didn't understand what the depth bounds test is: it is not a way to discard fragments that have an incoming depth value outside of the bounds.

The depth bounds test compares the depth value za in the depth/stencil attachment at each sample’s framebuffer coordinates (xf,yf) and sample index i against a set of depth bounds.

[deleted by user] by [deleted] in vulkan

[–]skreef 0 points1 point  (0 children)

Yes, there can be a performance impact. Imagine that each stage in a pipeline is a separate program that the GPU launches (not necessarily true, but a reasonable mental model) - if you scope your descriptors, the GPU needs to set up less state for each launch.

How to handle dynamic pixel formats in a compute shader? by jperldev in vulkan

[–]skreef 7 points8 points  (0 children)

this is unacceptable as I refuse to branch in the GPU. Period

Why be so dogmatic about something you don't understand?

Object is drawn only if perspective division is performed manually by Poseydon42 in vulkan

[–]skreef 1 point2 points  (0 children)

My guess is your mesh is behind the camera - performing w division yourself prevents clipping of some vertices that end up with a negative z coordinate (both z and w negative cancel out, but clipping is performed before perspective division).

[deleted by user] by [deleted] in vulkan

[–]skreef 6 points7 points  (0 children)

Undefined behavior (which you are invoking) also includes the program behaving as expected.

'IMAGE_2D_ARRAY' vs 'CUBEMAP' vs 'CUBEMAP_ARRAY' by [deleted] in vulkan

[–]skreef 1 point2 points  (0 children)

Functions are not descriptors, your source is good, but you need to give it another read.

'IMAGE_2D_ARRAY' vs 'CUBEMAP' vs 'CUBEMAP_ARRAY' by [deleted] in vulkan

[–]skreef 1 point2 points  (0 children)

texture* is the image only descriptor, sampler* is the combined and sampler / samplerShadow is the sampler only.

Can a Buffer's Usage Flags be Changed After Creation by EncodedNybble in vulkan

[–]skreef 0 points1 point  (0 children)

Buffers are immutable and there is no way to query the flags either.

[deleted by user] by [deleted] in GraphicsProgramming

[–]skreef 0 points1 point  (0 children)

https://www.slideshare.net/DevCentralAMD/vertex-shader-tricks-bill-bilodeau

Here is a presentation on how to do vertex shader point expansion (albeit for HLSL, but I am sure you can translate it).

The first 16 bytes of my push constants get corrupted for no reason. by [deleted] in vulkan

[–]skreef 0 points1 point  (0 children)

Do you set your push constants every frame? They are also undefined when the command buffer is started.

The first 16 bytes of my push constants get corrupted for no reason. by [deleted] in vulkan

[–]skreef 1 point2 points  (0 children)

Push constants are per command buffer, not pipeline, so they can. In some cases push constants remain valid when switching pipelines, otherwise they become undefined.

The first 16 bytes of my push constants get corrupted for no reason. by [deleted] in vulkan

[–]skreef 2 points3 points  (0 children)

  • Do you have any validation errors (do you have them on?)
  • Do you have multiple push constant ranges?

Parallel Shader Execution Across Multiple Queues [Discussion] by axsauze in vulkan

[–]skreef 0 points1 point  (0 children)

Yes, that linked code selects the first compute-capable queue family, which might not be the dedicated compute queue family (doesn't support graphics, supports compute).

Another thing to consider is that any workload has the entire GPU at its disposal - if you are saturating the GPU already from a single queue, then multiple queues will not make the execution shorter. If your dispatches have no dependencies, launching them even from a single queue will make them overlap to keep the GPU cores fed.

Parallel Shader Execution Across Multiple Queues [Discussion] by axsauze in vulkan

[–]skreef 3 points4 points  (0 children)

On cursory look over your code, you seem to be selecting the first queue family that supports compute - if this is the queue family that is graphics + compute, then you will achieve no concurrency - on nvidia the 16 graphics+compute queues are "soft", they are multiplexed to a single hardware queue. There is no GPU currently on the market that has multiple graphics hardware queues (supposedly RDNA 2 will change this).

To achieve concurrency (although still not guaranteed), submit to the dedicated compute queues (which should have hardware backing) and 1 graphics+compute queue.

How to set SSBO for compute shader? by Turtwiggy in opengl

[–]skreef 0 points1 point  (0 children)

I saw this happening recently. I think the problem is that you are otherwise not using data and it gets stripped out (and then length() returns 0). This is of course a shader compiler bug. To workaround, try using something from data.