[Intel-gfx] intel_prepare_render(intel); unhelpful?
Peter Clifton
pcjc2 at cam.ac.uk
Sun Oct 31 02:15:34 CET 2010
Hi guys,
I was just poking around looking for somewhere quick and dirty to shove
my new experimental DRM IOCTL for retrieving IDLE data from the GPU. I
was looking at the various breakpoints in the debugger, and found
intel_prepare_render() being called more often than I'd like.
For instance, in intelClear() we call it - AIUI, flushing rendering
before code execution continues. Nasty ;(
I use glClear many times per frame on the stencil buffer, which always
ends up hitting the 3D engine for the clear (even normal colour buffer
clear seems to hit that path too, as BLIT can't do the correct kind of
tiling IIRC?)
If we can pre-determine we will use the 3D engine, presumably all the
state-changes in _mesa_meta_clear() will end up pipelined?
In a non-statistically correct sample test run of one benchmark
iteration each.. blindly commenting the intel_prepare_render() call gave
me 27.7fps -> 29.8fps.
I also noted that I'm hitting a path in intel_prepare_render which
throttles, even with vblank_mode=0. Why does it have to do this?
if (intel->need_throttle && intel->first_post_swapbuffers_batch) {
drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
intel->first_post_swapbuffers_batch = NULL;
intel->need_throttle = GL_FALSE;
}
Actually, bypassing it doesn't seem to have much / any positive effect,
(although I thought I got one the first time I tried it). Never mind.
--
Peter Clifton
Electrical Engineering Division,
Engineering Department,
University of Cambridge,
9, JJ Thomson Avenue,
Cambridge
CB3 0FA
Tel: +44 (0)7729 980173 - (No signal in the lab!)
Tel: +44 (0)1223 748328 - (Shared lab phone, ask for me)
More information about the Intel-gfx
mailing list