From mboxrd@z Thu Jan 1 00:00:00 1970 From: Peter Clifton Subject: intel_prepare_render(intel); unhelpful? Date: Sun, 31 Oct 2010 01:15:34 +0000 Message-ID: <1288487734.3762.12.camel@pcjc2lap> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from ppsw-52.csi.cam.ac.uk (ppsw-52.csi.cam.ac.uk [131.111.8.152]) by gabe.freedesktop.org (Postfix) with ESMTP id 8F623A08F1 for ; Sat, 30 Oct 2010 18:15:36 -0700 (PDT) Received: from cpc1-cmbg11-0-0-cust238.5-4.cable.virginmedia.com ([86.22.72.239]:35462 helo=[192.168.1.4]) by ppsw-52.csi.cam.ac.uk (smtp.hermes.cam.ac.uk [131.111.8.159]:465) with esmtpsa (LOGIN:pcjc2) (SSLv3:DHE-RSA-CAMELLIA256-SHA:256) id 1PCMWF-0001Rr-DK (Exim 4.72) for intel-gfx@lists.freedesktop.org (return-path ); Sun, 31 Oct 2010 01:15:35 +0000 List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org Errors-To: intel-gfx-bounces+gcfxdi-intel-gfx=m.gmane.org@lists.freedesktop.org To: "intel-gfx@lists.freedesktop.org" List-Id: intel-gfx@lists.freedesktop.org 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)