[Mesa-dev] glxgears performance higher with software renderer compared to h/w drivers

Divick Kishore divick.kishore at gmail.com
Tue May 7 11:18:57 PDT 2013


Hi Patrick,

>
> I don't know a whole lot about Mesa's structure, but I know that the
> LLVMpipe driver is supposed to be the fastest software driver for x86 CPUs.
> The reason is that it JIT compiles vertex/fragment programs into x86/x64
> assembly using LLVM as the code generator. LLVM contains extensive
> optimization functions and is much more sophisticated than the "rtasm"
> module you'll see in Mesa's source tree. Additionally, the LLVMpipe driver
> will utilize multiple cores to execute vertex/fragment programs. For super
> simple rendering, e.g. flat shaded gears in glxgears, I wouldn't be
> surprised if special-case code (generally part of Mesa's 'swrast' module) is
> faster because it does not require the overhead of executing a program for
> each vertex/pixel, and can possibly operate on multiple pixels at once using
> MMX/SSE2. However, the optimizations for those generally target apps <=
> 2001, while newer apps that make extensive use of programmable hardware will
> likely be far faster on LLVM pipe.
>

I too noticed that with a simple GLES2 app with a not so simple
rendering. I saw that with that app the xlib based renderer was
crawling at 8-9 fps while the llvm based renderer was able to give
performance as high as close to 250fps with single thread. I am not
sure if that is expected and if the difference is so much significant.

In any case I have not been able to understand clearly the difference
between xlib based s/w renderer and the gallium based softpipe
renderer (without llvm). Any pointers would be helpful.

Thanks & Regards,
Divick


More information about the mesa-dev mailing list