<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [SKL bisected] texsubimage pbo intermittent failures"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=91926#c51">Comment # 51</a>
              on <a class="bz_bug_link 
          bz_status_ASSIGNED "
   title="ASSIGNED - [SKL bisected] texsubimage pbo intermittent failures"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=91926">bug 91926</a>
              from <span class="vcard"><a class="email" href="mailto:topi.pohjolainen@intel.com" title="Topi Pohjolainen <topi.pohjolainen@intel.com>"> <span class="fn">Topi Pohjolainen</span></a>
</span></b>
        <pre>(In reply to Topi Pohjolainen from <a href="show_bug.cgi?id=91926#c50">comment #50</a>)
<span class="quote">> I wonder if I finally have something. I started slicing the update blit of
> the source texture (recall that this is the round overwriting a selected
> region, and although the error is always in the part that corresponds to
> pixels outside the region, still without this blit the error doesn't
> manifest itself).

> I have simplified the test on IVB so much that the only meaningful meta
> operation is this update-blit allowing me to freely hack things out in meta
> and in the i965-state setup conditionally using _mesa_meta_in_progress(). I
> found out that the nested meta stacking isn't a problem as without the final
> kick for drawing the error can't be reproduced (or at least I don't see it
> any 200 test rounds. Note that normally I get in the 2nd or 3rd round
> latest).
> I continued to i965-state tracking and got all the way down to texture
> surface setup. This is the temporary texture created to represent the pixel
> buffer object used as the source for the pixel values in the sub-region to
> be updated.

> Now the buffer is offset by y * pitch + x * bpp, in my hardcoded case 4 *
> 512 + 46 * 4 = 2232. This is used in gen7_emit_texture_surface_state() when
> the relocation entry (by drm_intel_bo_emit_reloc()) is set for the surface.
> I tried first taking away the offset together and realised that this makes a
> difference - I can't reproduce the error anymore. (Note that sampled values
> for the updated region are of course off but the simplified test only
> concerns itself on the region outside where original error takes place). I
> narrowed this some more and realized that 2048 + 64 + 64 + 32 + 16 = 2224 is
> still fine but 2225 trips over and the bug reproduces with high probability.

> When the surface is setup we also set vertical alignment to four
> (alternatives are four or eight). This pbo backed surface is linear but the
> documentation (bspec) seems to make no difference between tiled and linear -
> both should be large enough for the sampler engine to treat with aligned
> dimensions,
> </span >

And for the reference the section in bspec:

Gen Graphics » BSpec » Memory Views » Common Surface Formats » Surface Padding
Requirements » Sampling Engine Surface


Even though I'm dealing with non-compressed textures here in this bug, I think
the text found in the section discussing compressed textures hints that
hardware has limitations w.r.t. linear orientation. It says:

"This must be ensured regardless of whether the surface is stored tiled or
linear. This is due to the potential rotation of cache line orientation from
memory to cache."</pre>
        </div>
      </p>
      <hr>
      <span>You are receiving this mail because:</span>
      
      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>