I finally tried Borderlands with glthread (thanks steam for breaking yet another application) and it finally has playbable framerates:
Announcement
Collapse
No announcement yet.
Mesa Threaded OpenGL Dispatch Finally Landing, Big Perf Win For Some Games
Collapse
X
-
Originally posted by atomsymbol
In my opinion, Mesa could start with measuring just FPS difference of normal-vs-glthread via alternate frame rendering during the first 1000 frames, and then:- automatically adapt to changes by repeating the measurement with probability P=0.001 (1 measurement per 1000 frames),
- repeat the measurement if Mesa detects changes in the type&structure of OpenGL requests,
- gradually work on "distributing & sinking the measurement down" to sub-frame concepts if possible,
- gradually work on "distributing & raising the measurement up" to multi-frame concepts if possible. mareko.
Comment
-
Originally posted by ldo17 View PostSeems like these different instruction pointers cannot do very much. I base my experience on looking at CPU versus GPU rendering in a 3D program like Blender: the usual recommendation is to set the tile size small for CPU rendering, large for GPU rendering. As it is rendering, you can see little orange highlight lines appear in the render result window, showing which tiles are currently being processed: this is as many threads as your hardware will allow. On a CPU this could typically be 4 or 8, but on a GPU it is always 1. Hence my conclusion that GPUs are essentially single-threaded.
I think what you are seeing is a single CPU thread per GPU, which feeds work to the GPU that might involve hundreds or thousands of threads.
Test signature
Comment
-
Originally posted by bridgman View Post
Every different pixel or vertex is a separate "little thread" - every chunk of 64 pixels or vertices is a "big thread" with separate instruction pointer.
Just to recap, with the Blender Cycles renderer, you can see multiple threads in action with CPU rendering, but only a single thread at a time with GPU rendering.
Comment
-
Originally posted by atomsymbolIn my opinion, many single-threaded applications can be broken down into an unexpectedly high number of tiny concurrent tasks forming a dependency graph. An underlying problem usually inherently contains some concurrency.
Comment
Comment