Launchpad has imported 8 comments from the remote bug at
https://bugs.freedesktop.org/show_bug.cgi?id=54763.

If you reply to an imported comment from within Launchpad, your comment
will be sent to the remote bug automatically. Read more about
Launchpad's inter-bugtracker facilities at
https://help.launchpad.net/InterBugTracking.

------------------------------------------------------------------------
On 2012-09-11T09:24:50+00:00 Daniel van Vugt wrote:

I call glCopyPixels a couple of times briefly on startup and then never
again. The problem is that doing this makes all subsequent rendering
much slower. If I never call glCopyPixels on startup then rendering
remains fast thereafter.

It seems glCopyPixels is modifying the context in a way that permanently
cripples later operations. The only possible cause I can see so far is:

src/mesa/main/drawpix.c: _mesa_CopyPixels:
   /* We're not using the current vertex program, and the driver may install
    * it's own.  Note: this may dirty some state.
    */
   _mesa_set_vp_override(ctx, GL_TRUE);

This seems to set a flag in the ctx which is never cleared.

Using Mesa 8.0.2 in Ubuntu 12.04

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/16

------------------------------------------------------------------------
On 2012-09-11T10:10:48+00:00 Daniel van Vugt wrote:

I am using Intel Sandy Bridge HD 2000 by the way. I believe that means
i965.

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/18

------------------------------------------------------------------------
On 2012-09-11T13:32:24+00:00 Michel-daenzer wrote:

(In reply to comment #2)
> I call glCopyPixels a couple of times briefly on startup and then never again.
> The problem is that doing this makes all subsequent rendering much slower. If 
> I
> never call glCopyPixels on startup then rendering remains fast thereafter.

What are the read and draw buffers for glCopyPixels? If either of them
is GL_FRONT*, that will cause a DRI2 fake front buffer to be allocated
and thereafter kept up to date wrt the real front buffer.


> This seems to set a flag in the ctx which is never cleared.

It is cleared:

end:
   _mesa_set_vp_override(ctx, GL_FALSE);

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/19

------------------------------------------------------------------------
On 2012-09-12T01:48:54+00:00 Daniel van Vugt wrote:

Yes, the read buffer is GL_FRONT in this case. So I guess the slow-down
is by design in Mesa. I'm going to work around it in compiz anyway.
glCopyPixels should never be touched at all really.

P.S. _mesa_set_vp_override(ctx, GL_FALSE) does not clear NewState. Which
is what I was concerned about:

void
_mesa_set_vp_override(struct gl_context *ctx, GLboolean flag)
{
   if (ctx->VertexProgram._Overriden != flag) {
      ctx->VertexProgram._Overriden = flag;

      /* Set one of the bits which will trigger fragment program
       * regeneration:
       */
      ctx->NewState |= _NEW_PROGRAM;
   }
}

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/20

------------------------------------------------------------------------
On 2012-09-12T02:33:00+00:00 Marek Olšák wrote:

Don't worry about NewState. It's cleared after every draw operation.

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/21

------------------------------------------------------------------------
On 2012-09-12T04:52:06+00:00 Chris Forbes wrote:

Would it be reasonable to put a performance note in
ARB_debug_output/KHR_debug when mesa falls into this slow state?

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/22

------------------------------------------------------------------------
On 2012-09-12T09:29:28+00:00 Michel-daenzer wrote:

(In reply to comment #3)
> Yes, the read buffer is GL_FRONT in this case. So I guess the slow-down is by
> design in Mesa.

Rather the X server / DRI2 protocol. It *might* be possible to make
xserver not enforce the fake front buffer for the Composite Overlay
Window, not sure.


> I'm going to work around it in compiz anyway. glCopyPixels
> should never be touched at all really.

Out of curiosity, what are you using it for?

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/23

------------------------------------------------------------------------
On 2012-09-12T09:31:58+00:00 Daniel van Vugt wrote:

It is a fallback used for maintaining a persistent backbuffer if FBOs
are not available. However it's not an important one because all drivers
provide FBOs now.

http://bazaar.launchpad.net/~compiz-
team/compiz/0.9.8/view/head:/plugins/opengl/src/screen.cpp#L1726

Reply at: https://bugs.launchpad.net/compiz/+bug/1037411/comments/24


** Changed in: mesa
       Status: Unknown => Confirmed

** Changed in: mesa
   Importance: Unknown => Medium

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to mesa in Ubuntu.
https://bugs.launchpad.net/bugs/1037411

Title:
  [regression][DRI] SubBuffer rendering is much slower in compiz 0.9.8.0
  than it was in 0.9.7

Status in Compiz:
  Fix Committed
Status in Mesa:
  Confirmed
Status in “compiz” package in Ubuntu:
  Triaged
Status in “mesa” package in Ubuntu:
  Triaged
Status in “compiz” source package in Precise:
  Invalid
Status in “mesa” source package in Precise:
  Invalid
Status in “compiz” source package in Quantal:
  Triaged
Status in “mesa” source package in Quantal:
  Triaged

Bug description:
  (This is no longer the primary performance regression bug for compiz
  0.9.8.0. Look at bug 1024304 instead)

  TEST CASE:
  1. CCSM > OpenGL >
       framebuffer_object = OFF
       vertex_buffer_object = OFF
       always_swap_buffers = OFF
  2. Run graphics benchmarks.

  Expected: Similar results to compiz 0.9.7
  Observed: Much lower results than compiz 0.9.7

  
  ORIGINAL DESCRIPTION:
  Comparing graphics performance in a two-monitor configuration, I find the 
gles2 branch is 25-40% slower than trunk.

  This would not normally be surprising, however the slowdown REMAINS
  even when I turn off the new rendering features in the gles2 branch:
  framebuffer_object, vertex_buffer_object, always_swap_buffers

  So both branches should be using the same code path. But gles2 is
  still dramatically slower than trunk using two monitors.

  The good news is that this bug only affects benchmark results and
  seemingly a little lag. The physical frame rate achieved with two
  monitors still seems to be higher using the gles2 branch, meaning it
  drops from 60Hz to 30Hz much less often than trunk does.

  NOTE 1: This regression was allowed in compiz 0.9.8.0 because it is
  generally only visible in benchmark results. Meanwhile, physical
  compiz rendering performance (as reported by the compiz Benchmark
  plugin) is higher in compiz 0.9.8.0 than previous versions, in most
  cases.

  NOTE 2: If you're just worried about fullscreen game performance, then
  you don't need to wait for this bug to be resolved. You can get
  optimal graphics performance with unredirect mode. But see bug 980663
  first.

To manage notifications about this bug go to:
https://bugs.launchpad.net/compiz/+bug/1037411/+subscriptions

-- 
Mailing list: https://launchpad.net/~desktop-packages
Post to     : desktop-packages@lists.launchpad.net
Unsubscribe : https://launchpad.net/~desktop-packages
More help   : https://help.launchpad.net/ListHelp

Reply via email to