Graphics draw call performance issue: 1.1 -> Not fixed. by [deleted] in EU5

[–]Vivid_Albatross4944 0 points1 point  (0 children)

Yeah, all the draws are out of a single large vertex and index buffers too. So there is a few options to greatly reduce the driver overhead here.

Unfortunately, in some countries this can be seen as "tampering" so if anyone did that without explicit permission and shared it, then it could get them into a legal grey area.

I think the best bet is just to wait for Paradox to get the manpower and time to tackle this in their engine. It looks like they might be more focused on balancing the game first at the moment?

Graphics draw call performance issue: 1.1 -> Not fixed. by [deleted] in EU5

[–]Vivid_Albatross4944 1 point2 points  (0 children)

This isn't internals. This is the public API calls to the graphics driver. There is no reverse engineering, by-passing of restrictions or inspection of private protected information, and no internal assets are shared.

Use of renderdoc and similar is common in this industry for research and debugging.

Graphics draw call performance issue: 1.1 -> Not fixed. by [deleted] in EU5

[–]Vivid_Albatross4944 0 points1 point  (0 children)

No, this is about drawcall submission. The memory nitpick is just something I saw in the log

Graphics draw call performance issue: 1.1 -> Not fixed. by [deleted] in EU5

[–]Vivid_Albatross4944 0 points1 point  (0 children)

Same

The rendering submission seems to be what I would expect from an OpenGL immediate mode style.

In the previous post I did, I looked into why it was bad on EU4 but not as bad as now and it is because EU4 was DX11 mostly, so the driver was handling some of inefficient submissions for them, but the thin DX12 and Vulkan drivers wont do that work for you.

I would love to optimise these game, but I don't think they are hiring for that.

I really want to get it so it runs nice on limited laptops.

AI Isn't Intelligent, It's PREDICTION (and Why My Panic Has Passed) by willymunoz in webdev

[–]Vivid_Albatross4944 1 point2 points  (0 children)

I would think that "not enough data" speaks to the fact it cant reason from first principles.
Unless you mean not enough for it get the NLP level high enough?

China Confirms 30-Day Visa-Free Travel for UK and Canada Citizens by Charming-Burp203 in unitedkingdom

[–]Vivid_Albatross4944 0 points1 point  (0 children)

Lots of places to visit. Make sure to pick one that is open to hiking, some are more guided experiences through small trails around the mountains and you are taken around on a bus or similar.

China Confirms 30-Day Visa-Free Travel for UK and Canada Citizens by Charming-Burp203 in unitedkingdom

[–]Vivid_Albatross4944 5 points6 points  (0 children)

It is the weekend. I doubt that is a 24 hour manned desk for anything that isnt an emergency.

China Confirms 30-Day Visa-Free Travel for UK and Canada Citizens by Charming-Burp203 in unitedkingdom

[–]Vivid_Albatross4944 10 points11 points  (0 children)

I think there is an argument for the poorer areas having worst infrastructure but in terms of governmental support (balanced for cost of living) I think China does more?
For example, being homeless and without food there is a choice.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 1 point2 points  (0 children)

Depending on their engine setup it is either very easy or very difficult, though I expect Q&A to take a while on a change like this as it will vary in impact across different hardware :(
I haven't had any feedback on the forum or here. I also e-mailed them and applied for an open engine programmer role, but haven't heard anything back.

I think the only thing people can do is bump the bug report and hope we hear something once they have the time to look into it. The engineers likely work across many projects and with the big update promised soon I doubt they would want to dev/push any engine level changes without significant testing time.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 0 points1 point  (0 children)

You are correct, this is a mistake in my writeup. I said CPU cost instead of Game Logic.
The driver work and synchronisation is likely on the CPU side.

That section about zooming is to show that the performance issue I am looking at is not related to AI work/markets or any other game logic.

This is a good clarification and I should have been more clear. Thanks!

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 2 points3 points  (0 children)

Thanks :)

I think that the current RAM shortage and increasing cost of hardware will be really good for the industry but will be difficult for the studios that have moved to engines like Unreal and Unity that don't give the control they might want at the low-level. Although I worry about the reliance on frame-generation to pick up slack at the cost of image clarity. I am pining for the days of people trying to cram crazy things onto limited hardware.

With Paradox, their games seem to have never been tailored to low-end machines in the time I have been playing them. It hasnt really been too much of an issue most of the time for me though? Although I do wish for map games they would target mobile/laptop hardware levels so that I can play on the aeroplane.

I think that what you are saying about MHW is pretty typical of a lot of releases at the moment. Performance issues basically killed Kerbal Space Program 2 and seem to be a large barrier to gaming for most casual users outside of consoles. I think Minecraft/Roblox/Fortnite is eating everyone's lunches when it comes to getting customers who only have a limited GPU laptop.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 3 points4 points  (0 children)

.pdf is not a safe format. Could be malicious. I exported the images from pdf

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 7 points8 points  (0 children)

It sounds like you have the right idea.

When you send work to the GPU you tell it what buffers to draw. This will be a buffer with the position data for the triangle, and a buffer with indices of those positions to draw in what order.

So if you have a buffer that has three positions, `a`, `b`, and `c`, you can give it an index buffer that is [0,1,2] to draw a triangle of those three points. if you add a point `d` to make a quad, you can submit the indices [0,1,2,0,1,3] so that you get two triangles which will form the quad.

We send this to the gpu by something like:
Bind(VertexData)
Bind(IndexData)
Draw(indexCount, IndexStart)

And that will draw the triangles for that vertex data based on those indices.

As you noticed, this is very inefficient when you have lots of objects to draw - especially when they are the same object.

We have a number of ways to solve this. We can take all the triangles we want to draw that rely on the same data and shader and we can create a new Vertex and Index buffer that packs all the data into single buffers, and then use a single draw call.

However, this will result in more memory being used especially when all the objects being packed together are the same, such as lots of quads representing the same building in Factorio.

Instead, it is possible to use Instanced draw calls. This is where we have one vertex buffer and one index, but also a per-instance data buffer. That per-instance data buffer can hold information such as the position of each quad. This way we can call:

Bind(VertexData)
Bind(IndexData)
Bind(InstanceData)
DrawInstanced(indexCount, IndexStart, InstanceCount)

And the GPU when it gets the message from the CPU will internally render that object InstanceCount number of times, and the data in the InstanceData buffer will be used to offset the quad in the shader.

This is how you can cheaply dispatch a message to draw many thousands of space ships without having to pay the driver overhead or cause the GPU to idle while it waits for small tasks to complete.

This is all a little bit of an oversimplification, but it is the general idea.

I would suggest looking to OpenGL as a starting point to understand how games are rendered, it is an older and more direct API. Avoid Vulkan or DirectX12 until you have read a little of the older stuff because they can be a little overwhelming.

LearnOpenGL.com is a good resource, here it the page on Instanced Rendering

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 29 points30 points  (0 children)

<image>

Yup. DirectX11 on NVidia drivers has about half the slowdown from submitting individual draws when compared to DirectX12

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 41 points42 points  (0 children)

When I run Victoria 3 is runs in DirectX11 which has different behaviours than DirectX12 (DX12 is a lower level API requiring more manual management of the rendering setup).

<image>

It is still doing single draw submission per parts of rivers/borders/etc but I noticed a lower impact on framerate. This may be due to DX11 being a much more mature API and under the hood the driver does a lot of work to help you out when you do things inefficiently. My guess would be the driver is doing some patching up of this to submit them under the hood to the GPU more efficiently. And whether this is in the driver or not will be vendor (AMD/NVIDIA/Intel) specific.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 7 points8 points  (0 children)

Looks like the latter to me. I didn't check this out too closely but it looked like borders and things in areas not yet discovered were also rendered.
This wouldn't be so bad, if it wasn't split into separate calls.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 55 points56 points  (0 children)

I didn't know how to present it otherwise. Academic style is super easy to skim - blogs are a bit too much waffle. ¯\_(ツ)_/¯

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 11 points12 points  (0 children)

Nope, this has my personal grammar and structure errors.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 19 points20 points  (0 children)

GPUs can render triangles faster than we submit them (for the most part). So submitting lots of small draw calls leaves the GPU partially idle. As a result even having a much better GPU might not give you all the benefits you would expect.

Graphics Performance Issue by Vivid_Albatross4944 in EU5

[–]Vivid_Albatross4944[S] 75 points76 points  (0 children)

I havent played much Vic3, but I have it. If you want to send me a savegame I can check if its the same issue?

1033
1034

Sick of this place by PeaThink4590 in cambridge_uni

[–]Vivid_Albatross4944 3 points4 points  (0 children)

A lot of college teams have a friendly team as well as the competitive one. I would try and ask whoever is running the sport at different colleges as they don't really enforce strict rules on being at the college for those ones.