Hi,
I can't keep quiet about this and also I think this is very strange why this issue hasn't come to the light.
Until yesterday I have been understanding that DX12 is faster than DX11.
My own performance tests had been indicating so too.
The test I did was simply drawing a single triangle, with a vast number of draw call per 1 frame(16,000 triangles = 16,000 draw calls).
Each triangles are drawn on the different positions.
The result are as below.
(Corei9-9900KF GeForce RTX2080 64G sytem mem)
Single thread 16,000 draw calls per frame.
DX11 569 fps DX12 955 fps DX12(using bundle) 1341 fps
Multi threads(16 threads, each thread draws 1,000) 16,000 draw calls per frame.
DX11 1056 fps DX12 1440 fps DX12(using bundle) 1456 fps
136% to 235% faster. It can be said it's WAY faster. I'm so happy.
BUT, I did a different type of performance test yesterday which is also very simple test. It's drawing 1 mesh per frame. The mesh is consist of a vast number of triangles.
Please look at the result below.
Drawing only 1 mesh per frame. (The mesh has 44.458 vertices and 88,512 triangles)
DX11 9,921 fps DX12 5,487 fps
Drawing only 1 mesh per frame. (The mesh has 77.402 vertices and 354,048 triangles)
DX11 6,451 fps DX12 4,425 fps
Drawing only 1 mesh per frame. (The mesh has 708,896 vertices and 1,416,192 triangles)
DX11 2,238 fps DX12 2,001 fps
89% to 55%(55% !) slower than DX11. I'm not happy.
I believe somebody have seen this kind of result, because such a simple code.
Of course my coding might be bad and it causes this result.
But such a simple test I believe I didn't so bad.
Vertex buffer and index buffer are both in the HEAP_DEFAULT, only constant buffer is in the HEAP_UPLOAD since it is changed per frame.
Barriers and fences are minimum. Just 1 fence per frame.
I think I can be so bad.
My question is, is it world common that DX12 is slower than DX11 in such a scenario(drawing 1 very big mesh)?
I hesitate put my code in here because my code is fully commented in JAPANESE and I don't want to bother this forum.
If Japanese commented code is fine, I would happily put my code here.
I'm looking forward to your reply, hoping my code is the cause.
Thanks.