1. 17 Jun, 2020 1 commit
  2. 02 Apr, 2020 1 commit
    • Markus Stange's avatar
      Bug 1595038 - Make sure that TransformAndClipBounds returns an empty clipped... · 6b704749
      Markus Stange authored
      Bug 1595038 - Make sure that TransformAndClipBounds returns an empty clipped rect when the clip itself is already empty. r=kip
      
      The test added in this changeset is already fixed by the no-normalization change, but there are probably cases that require the explicit check that this patch adds.
      When we were still normalizing the plane normals, the TransformAndClipBounds call in the added test was returning (1023.999878, 1023.999878, 0.000061, 0.000122).
      
      Depends on D68703
      
      Differential Revision: https://phabricator.services.mozilla.com/D68704
      
      --HG--
      extra : moz-landing-system : lando
      6b704749
  3. 01 Apr, 2020 1 commit
    • Markus Stange's avatar
      Bug 1595038 - Stop normalizing the plane normals, in order reduce error from... · 70151209
      Markus Stange authored
      Bug 1595038 - Stop normalizing the plane normals, in order reduce error from floating point inaccuracies. r=kip
      
      For example, if the clipping rectangle has aClip.X() == 1024, then the normal for the clipping plane induced by the left edge of the clip will now be (1, 0, 0, -1024) rather than (0.0009765620343390458, 0, 0, -0.9999995231631829).
      
      This change is mathematically valid:
       - The dot products computed from these vectors become multiplied by planeNormal.Length() (compared to before this patch).
       - The sign of the dot products is not affected, so the "intersection with plane" check is not affected:
         `if ((nextDot >= 0.0) != (prevDot >= 0.0)) {`
       - The value of the dot products is only used to compute `t`, as follows:
         `F t = -prevDot / (nextDot - prevDot);`
         Here, the length now appears both in the numerator and in the denominator, canceling itself out.
      
      As a result from this change, the existing tests no longer require integer nudging in order to pass.
      
      Depends on D68702
      
      Differential Revision: https://phabricator.services.mozilla.com/D68703
      
      --HG--
      extra : moz-landing-system : lando
      70151209
  4. 25 Mar, 2020 1 commit
  5. 16 Oct, 2019 1 commit
  6. 06 Sep, 2019 1 commit
    • Markus Stange's avatar
      Bug 1578045 - Correctly return zero vertices if clipping plane 0 or 2 clip... · 9cd785e1
      Markus Stange authored
      Bug 1578045 - Correctly return zero vertices if clipping plane 0 or 2 clip away the entire polygon. r=kip
      
      This fixes a bug that was introduced three years ago in bug 1268854.
      What happened was that the final pass over the polygon assumed that the current
      polygon was living in plane[0]. But due to the double buffering, the "current"
      polygon alternates between plane[0] and plane[1]. And bug 1268854 had introduced
      an early exit so that we could hit the final pass at a time where the current,
      now empty, polygon was in plane[1]. So we would incorrectly treat all 32 points
      in plane[0] as part of the final polygon.
      
      This bug was responsible for intermittently unreasonable numbers in CompositorOGL's fill
      rate / overdraw overlay, and, since changeset cc84a0e9d5ddde198422f4f11ab6bf85f631d5f0,
      also caused CompositorOGL to execute unnecessary draw calls.
      
      Differential Revision: https://phabricator.services.mozilla.com/D44312
      
      --HG--
      extra : moz-landing-system : lando
      9cd785e1