First(?) game to use D3D11.1 features is Civ5?

Kaotik

Drunk Member
Legend
Supporter
As I'm doing my benchmark project, I noticed that Civ5 graphics config files now include this:
; Constant Rebasing (DX11.1)
Enable Constant Rebasing = 0

Does anyone have any clue what it actually does, and is this the first game to actually utilize D3D11.1 (and if so, does it actually do anything meaningful performance or otherwise?)
 
Most likely binding a constant buffer with an offset. That can help because you can for example update material constants for a lot of draw calls at once and then just offset into that constant buffer.
 
Btw., if I see it right, than that's an 11.1 API feature not requiring feature level 11_1. It runs on all DX10 cards (and gets emulated on feature levels 9_x).
 
It supposedly even works on Win 7 with the platform update & drivers that support it, but last time I tried that didn't work with NVIDIA cards (driver didn't support it).

Also as far as I know that's something that even the first D3D10 cards could do in hardware (it's just a memory offset after all), but for some strange reasons it never was exposed in the APIs.
 
Last edited by a moderator:
Yeah, it's pretty weird that MS waited until DirectX11.1 when OpenGL had this functionality since version 3.0.
 
Why wouldnt it does win7 not support dx 11.1 ?

Davros, why would you stay on win7, and deprive yourself the joy of the Metro interface of Windows 8 ?

Windows 8 even forces you to boot to the Metro Start Screen, since it knows you like it so much. Who wants to boot to the obsolete Desktop anyway?

Windows 7, with the relic we used to call the Start Menu. Can you believe we ever used that thing? I'm just glad the focus groups of 87 year old grandmothers and 14 year old tweeners convinced Microsoft that it was just too darn confusing, and so not cool any more. Windows 8 is better for all of us really, and if you don't agree, YOU CAN FUCK OFF BECAUSE WHAT ELSE ARE YOU GOING TO USE.
 
Last edited by a moderator:
I don't agree with you, homerdog. I don't care for the Win 8 Metro interface. At all.

I know you were being sarcastic.
 
It's less that it's hard to do than it wasn't a priority because DX already has the Map/Discard model where the driver internally creates a ring buffer. Bind with offset is basically just a solution to move that management to user space. This provides some advantages, but the drivers have been optimized for the discard/streaming model for quite a long time now.

i.e. it's good to have both available. I expect the engines to handle their own cbuffer versioning with "bind with offset", but likely most games will continue to use Map/Discard.
 
I really want more control over data layout. The map/discard model only works to a certain point.
It's more about versioning/pipe-lining than layout, but yeah. That's why there's two options now. Constant buffers in general feel sort of unnecessary going forward compared to just pulling data in shaders anyways.

As a step towards less stateful APIs, I'm all for it, but I think ultimately the "offset" thing is a bit of a stop gap until we just have bindless everything.
 
Constant buffers in general feel sort of unnecessary going forward compared to just pulling data in shaders anyways.
Yes, constant buffers are a huge waste (but of course much better compared to the old single constant update model). GPU should access whatever it needs to render the scene by itself. I don't like sending the same draw calls to the GPU either.

It's my first day of summer vacation, so I made a small poem :)

"frame after frame...
submit the same draw calls...
set the same constants...
burn so many cycles...
and move a lot of data back and forth...
what a waste"
 
Back
Top