Highest Rated Comments

ancientGouda57 karma

A depth buffer is needed by the GPU to determine which parts (pixels) of an object are in front of others. A stencil buffer is needed to "cut out" a part of the rendering; I only do 2D developing so I don't know the details, but it is used with shadows I think.

The "default" framebuffer (visible on screen) can be allocated with these already attached, but if you utilize off-screen buffers you need to construct and attach these manually.

ancientGouda15 karma

Thank you for doing this AMA.

  • How are you envisioning extension support for Vukan? Will it be similar to OpenGL where you check for availability and then GetProcAddress the entry points?

  • In the Khronos session, it was explained that you would have to manually opt in to any extensions. Does that mean that, for example, if an extension provides an additional texture format, the driver has to validate every time textures are created whether the format extension was opted-into or not? Or is the behavior in such a case simply undefined and responsibility pushed to the debug layers to catch this?

  • What additions to the Intel DRM driver were necessary to make it work with Vulkan?

  • What are "descriptor set pools"? From what I have read elsewhere, it's a special kind of memory heap to allocate descriptor sets from, but why would you need to reference the pool explicitly? In what kind of scenarios would you be using multiple pools?

  • What was the rationale behind pipeline objects being serializable, what is the use case for this? Are serialized pipeline vendor/driver/device(context) specific?

  • Why are you using the two terms "event" and "fence" if they're more or less the same thing? Isn't a fence just an event signalled automatically when a commandbuffer has finished executing?

  • What does "querying the GPU memory requirements for images" entail? It sounded a bit like you would need to allocate memory from multiple pools for one image, is that the case? And when would an image require a different pool than usual, is it based on size?

  • Will there be a distinction between textures and renderbuffers as offscreen rendertargets in Vulkan, or does that not make sense anymore on modern hardware?

That's all I could think of off the top of my head, thanks in advance for answering.

ancientGouda14 karma

In the Khronos session at GDC they mentioned the concept of a "loader library, initialized with vkCreateInstance()", which to me sounded a lot like a jump-table based approach similar to how OpenGL operates on Windows and how the new OpenGL ABI on Linux was proposed

ancientGouda13 karma

Also how many programming languages do you need to know on average to work on a project like this?

"Knowing many languages" is not really a thing in software development, at a certain level it is very important to understand core concepts and designs. Learning new programming languages is the same as learning new environments, it maybe takes a couple weeks but isn't something critical.

ancientGouda7 karma

If your thinking that Nvidia = good OpenGL driver, then I have to disappoint you; it's not that their driver is clean and well written, but that they have thousands of man hours more than AMD poured into writing per-game hacks and workarounds.

I'd imagine an OpenGL implementation on top of Vulkan would perform similarly to open source drivers (so not bad, but definitely not proprietary level).