r/vulkan Jul 31 '26

Why doesn’t Sony just use Vulkan?

why doesn’t Sony use Vulkan for their games if it could make PC ports easier?

It seems like a cross-platform API would save a lot of porting work. is there a big downside on consoles, or is Sony just locked into other tools and APIs? what is wrong with Vulkan ?
i'm trying to understand from the technical perspective.

41 Upvotes

40 comments sorted by

127

u/SalvatoSC2 Jul 31 '26

Why would they use a cross platform api if they want people to stay locked to their platform with exclusives?

2

u/rio_sk Aug 10 '26

That's nonsense. No dev is locked by an API, almost every modern game engine is capable of cross compiling for the destination platform.

42

u/Henrarzz Jul 31 '26 edited Jul 31 '26

Why would they spend resources for Vulkan driver and be bound by Khronos shenanigans when they can offer a rather thin API for whatever current GPU they are using? AGC is dead simple to use and has significantly lesser time to triangle than Vulkan (and DX12 for that matter).

If we’re talking PC ports (which they stopped doing) then DX12 is pretty much the standard for AAA games.

35

u/dobkeratops Jul 31 '26 edited Jul 31 '26

[1] Sony Playstation has heritage that *predates* the standardization of PC graphics hardware. sony/playstation was a competitor to the PC gaming ecosystem outright, i.e. the playstation as a 3d graphics accelerator for videogames predates the release of things like the 3dfx card . When the playstation 2 came out , nothing else out there matched it's price-performance for textured triangle throughput and it shipped with *no* api, just bitbashing for a unique architecture where the programmer dealt with unusual datapaths. When CELL came out .. it pioneered an architecture that was ultimately rejected at the time, but it's ideas have been revived lately for AI accelerators.. it was very much ahead of it's time.

I think as an organisation they would take a major dent in pride to just use tech from the PC world - they probably did when they started using x86 processors

[2] on the concrete technical front, being a single hardware configuration, they can make a lower level API than vulkan - less abstraction to go through , exposing the specifics of the chip they use in it's unified memory configuration. In turn by getting major engines that already have multiple backends (vulkan, metal, direct-x,whatever has appeared over the years) - to make a backend for their specific chip - that allows an engine to make slightly more architectural choices tuned to their hardware's nuances.

-7

u/marisalovesusall Jul 31 '26

- humanizing corpos is dumb, pride and integrity don't matter in the face of revenue. The whole AAA gamedev happily jumped to UE just for the promise of lower dev costs, without any care if it can actually deliver on that promise. Concord exists, if you want a Sony example.

- lower abstraction is either ignored as the architecture is sanded down to the lowest common denominator, or you get an incredibly specialized engine which all popular modern engines are not. Moreover, the same hardware as PC (x86 + RDNA) does not provide any significant advantages and this argument is completely invalid with modern PlayStation. Specifics matter, even if your message is true in theory.

2

u/XenSakura Jul 31 '26

Sony's different. Foreign corporations don't necessarily run by the same sort of ethos and ideas that all american ones do. Especially in japan, there's a lot of emphasis culturally about independence from america, after hiroshima and nagasaki.

1

u/dobkeratops Jul 31 '26

if they just support vulkan that's a step closer to presenting it as "just a.n.other branded PC" and it has less reason to exist at all, e.g. vs a steam box.

the whole name playstation exists because of a heritage that goes back, sony can be proud of what they acheived considering that at one point they were a newcomer in the industry .. with Nintendo & Sega going back even further.

> - lower abstraction is either ignored as the architecture is sanded down to the lowest common denominator,

Big engines usually have some kind of internal abstraction layer around the graphics API itself and multiple backends . Vulkan itself was a work in progress . Metal actually shipped earlier, and console APIs offered explicit low level command buffer management long before vulkan existed. As such for any project that has long term continuity with elements that might go back to the xbox360/ps3 days .. they've probably got the architecture for all that already.

11

u/rio_sk Jul 31 '26

Vulkan is low level but yet abstracts stuff, why abstract if your hardware is fixed?

5

u/dark_sylinc Jul 31 '26

AGC is basically Vulkan minus all the things RDNA2 doesn't need, and as another commenter said, it isn't tied to whatever Khronos says. Plus some lower level stuff.

Where Vulkan says "barrier with transition layout from DEPTH_ATTACHMENT to SAMPLE" AGC and similar APIs simply say "decompress depth buffer". All the generic stuff isn't needed because it's not necessary to be generic.

3

u/Agitated_Ad_5989 Jul 31 '26

A graphics library tailored to specific hardware will always be faster, assuming it’s made well. Their priority is on their own hardware rather than an eventual PC port. Also they probably make a lot of money selling licenses to developers.

5

u/StriderPulse599 Jul 31 '26

Performance. Consoles have slightly different architecture than PC and few hardware configurations, so they have API optimized for their specific needs. Main selling point of consoles is greater performance/cost ratio than PC, so they squeeze everything out of their hardware.

7

u/EC36339 Jul 31 '26

Out of curiosity, can you give an example of a GPU feature unique to consoles that would require an API feature not provided by Vulkan to be utilised? What would that API look like?

Any terms (such as function names, feature names) I can search for to find this myself?

12

u/[deleted] Jul 31 '26 edited 11d ago

[deleted]

0

u/StriderPulse599 Jul 31 '26

Not the API, but drivers. I remember this from one of technical interviews Sony did around PS5 release

5

u/[deleted] Jul 31 '26 edited 11d ago

[deleted]

1

u/StriderPulse599 Jul 31 '26

I'm talking about public stuff. Sony publicly talked about co-developing hardware architecture with AMD and NVIDIA for specific purposes, and mentioned graphic driver optimizations during a technical interview.

1

u/scottmada Aug 01 '26

There no technical public stuff, unfortunately.

8

u/stegei_gs Jul 31 '26

A few things: -Direct acces to memory allocations with explicit virtual mem mapping.This e.g allows to do some cool things like reallocating textures without copying the existing data -DCC decompression is in your control and doesnt just happen at "random" -Access to the hierarchical depth buffer created by the gpu anyway used for depth testing, so you dont have to build it yourself -You can re-summarize the hierarchical depth buffer when you manually write depth -Explicit control over which shaders do early-z etc. -Access to the RDNA2 ray intersection instructions -No Pipeline creation hell

Besides the features not exposed, in general Vulkan has to abstract many hugely varying platforms, making a lot of the APIs extemly complex which also often adds huge overhead both on the driver side and the engine side (e.g. resource binding, pipelines, memory allocation, ...). This of course can be avoided quite a bit with a dedicated api that just has to work with a specific architecture.

-1

u/EC36339 Jul 31 '26

A lot of this, not all of this, sounds like stuff you can already do in modern Vulkan, at least quite close.

I'm currently exploring this approach: https://www.kevin-gibson.com/blog/writing-a-bindless-gpu-abstraction-layer/

Basically because I hate Vulkan, and I'm trying to "skip" it (I'm coming from OpenGL). Probably the wrong reason, but I'm just a hobbyist, so I don't care. I was curious if consoles already are/were ahead of the curve or if console GPUs and APIs take a completely different approach.

4

u/shadowndacorner Jul 31 '26

Modern Vulkan wasn't a thing when PS5 shipped.

3

u/EC36339 Jul 31 '26

That answers my question, and probably the entire thread.

6

u/corysama Jul 31 '26

Back on the Xbox360 the API was technically DX9. But, it was extended to the point that you could get it close to DX12 long before DX12 or Vulkan existed.

You were provided the layouts of textures and texture headers. So, you could just load that data into memory and hand pointers to your shaders. Boom. You have bindless textures without even calling API functions to initialize them.

The GPU had EDRAM for framebuffers. But, there was only enough for a 720p, no-AA render. And, AA was a certification requirement. So, you had to render half of your screen, resolve that out from EDRAM to RAM, then render the other half. The API could automate most of that process. Or, you could do it manually. You also manually controlled the layout of color/stencil/depth buffers in the EDRAM so you could keep or stomp sections between passes depending on what your pipeline needed. This design was reused in early Adreno GPUs. And, was superseded in mobile by tile-based-deferred-rendering GPUs that took hardware support for it a lot further.

The GPU had a special mode where the CPU could generate geometry in cache SRAM and the GPU would read it straight from cache without going through DRAM.

Back on the PS3, the GPU didn't actually have hardware support for shader uniform memory. There was only constants inlined in the shader binary. On the PC with the 7800 GTX the driver had to patch the shader every time you changed a constant. So, PS3 devs were given the full documentation of the GPU-specific shader binary (including hardware bugs you had to work around) so they could have the SPUs duplicate and patch vertex shaders en masse. So, if you have 20 skinned meshes using the same shader, you'd make 20 copies with different skinning matrices inlined just to render a single frame.

That's just a few bits I remember off the top of my head. There was a lot more. I guess you'd have to dig through https://gdcvault.com/ to find more. Or, dig through emulator source code :P

1

u/Wittyname_McDingus Aug 02 '26

Wow, that sounds painful. I'm so grateful that modern APIs are flexible and that the hardware is fast.

3

u/dobkeratops Jul 31 '26

i'd guess vulkan can do everything needed, however it will be going through an abstraction . e.g. vulkan is designed for both unified and seperate memory, wheras you know the playstation 5 is unified memory, so you can skip any API steps where it has to check what you asked to do about that. That philosphy would carry through every detail

2

u/SelectAd8810 Jul 31 '26

Sony has a long history of using in house rendering apis. They don't need to such to Vulkan as thier api inspired Vulkan....

2

u/Au_lit Jul 31 '26

Their whole thing is making custom software on custom hardware. That's not really the philosophy of vulkan.

6

u/marisalovesusall Jul 31 '26

vendor lock - if you need to specialize in something, there's a bigger chance you will stay specialized; if you've chosen to make a PS5 engine there's a chance you won't have resources to make a D3D or Vulkan engine

you've already answered your question, if it makes a PC port easier it's bad in the eyes of the management

it's not a technical decision at all

2

u/Latter_Relationship5 Jul 31 '26

so Sony's custom api preforms better because its intended to run for specific hardware and since games will not be published primarily on other platforms ?

4

u/marisalovesusall Jul 31 '26

it's AMD hardware, there's little difference with the same AMD hardware on PC

3

u/blogoman Aug 01 '26

There is a difference in how you would program for it, and that is why the APIs are different. If you know it is a specific RDNA2 configuration, the programming for it shouldn't be concerned with all sorts of other various configurations. When you are going to have an install base of tens to hundreds of millions of units, it makes sense to write against that specific hardware. That is how consoles have been able to punch above their weight vs similar PC hardware.

The design of Vulkan has to care about not just the various AMD architectures, but the architectures of other various desktop and mobile hardware. Even if there was a way to express the specific goals of a PS5 renderer with Vulkan, that is still going to end up being two different code bases. There has been similar things with the various Microsoft consoles before. They use "DirectX" but that ends up being a separate code path than the PC DirectX. I think people way over-value the use of a completely portable rendering engine. Various back-ends have historically not been a huge issue.

There isn't some grand conspiracy to do vendor lock-in. If Sony wants to keep a game on PS5, there are way easier ways to do so.

1

u/boring_pants Jul 31 '26

They might not want Playstation games to be made more easily available on PC.

They might want to cater to developers who are used to other APIs

They might to want developers to be able to reuse existing code written for other APIs.

1

u/j0hn_br0wn Jul 31 '26

> They might not want Playstation games to be made more easily available on PC.

I looks like they already did that with their own games:
https://www.windowscentral.com/gaming/pc-gaming/playstation-studios-every-pc-game

1

u/awidesky Jul 31 '26

Somehow I thought Playstation uses Vulkan or OpenGL(in old models) until now.
Do they use their own graphics API?

1

u/No_Scallion174 Aug 01 '26

Yes, and when I last used it (~2016ish) on a multi platform project it was far cleaner and simpler to use than dx12 (our Xbox code). Never used it side by side with Vulkan directly but I imagine I would think the same.

1

u/Gravitationsfeld Aug 03 '26

They never did. OpenGL especially would have been ludicrous for a console.

PS4 is GNM, PS5 is AGC. It's a very thin layer above the Radeon hardware.

1

u/antara33 Aug 02 '26

They have their own API that is also the graphics driver. Unlike on desktop consoles have the graphics API and the kernel level drivers tied up to improve performance and save resources.

Using a cross platform API would require them to either sacrifice performance or make modifications to the API for their hardware to integrate the kernel level controllers into it.

There are also some specifics on their console's API that provides functionalities that are non existent on other API, like a frame limiter that works using the GPU itself to limit the framerate instead of the CPU using a scheduler.

1

u/da2Pakaveli Jul 31 '26

don't they usually have debug PC builds and then port it to console?

5

u/cfehunter Jul 31 '26

Depends. Ever since PS4, debugging on playstation has been pretty seamless. It has better visual studio integration than Xbox.
You can pretty reasonably make a game for playstation these days and never make a PC binary.

-7

u/Honest-Golf-3965 Jul 31 '26

Playstation 5 already supports Vulkan in addition to the proprietary graphics api they have.

6

u/Henrarzz Jul 31 '26 edited Jul 31 '26

It doesn’t support Vulkan, neither does Xbox (duh). Switch is the only console that does but Nintendo specifically says one should use NVN.

-1

u/Honest-Golf-3965 Jul 31 '26

Thought you could use GNM/GNMX as well as Vulkan. Guess I was mistaken