1. 06 2月, 2012 3 次提交
  2. 05 2月, 2012 1 次提交
  3. 04 2月, 2012 23 次提交
  4. 03 2月, 2012 12 次提交
  5. 02 2月, 2012 1 次提交
    • I
      drm/radeon/kms/blit: fix blit copy for very large buffers · 52b53a0b
      Ilija Hadzic 提交于
      Evergreen and NI blit copy was broken if the buffer maps to a rectangle
      whose one dimension is 16384 (max dimension allowed by these chips).
      In the mainline kernel, the problem is exposed only when buffers are
      very large (1G), but it's still a problem. The problem could be exposed
      for smaller buffers if anyone modifies the algorithm for rectangle
      construction in r600_blit_create_rect() (the reason why someone would
      modify that algorithm is to tune the performance of buffer moves).
      
      The root cause was in i2f() function which only operated on range between
      0 and 16383. Fix this by extending the range of i2f() function to 0 to
      32767.
      
      While at it improve the function so that the range can be easily
      extended in the future (if it becomes necessary), cleanup lines
      over 80 characters, and replace in-line comments with one strategic
      comment that explains the crux of the function.
      
      Credits to michel@daenzer.net for pointing out the root cause of
      the bug.
      
      v2: Fix I2F_MAX_INPUT constant definition goof and warn only once
          if input argument is out of range. Edit the comment a little
          bit to avoid some linguistic confusion and make it look better
          in general.
      Signed-off-by: NIlija Hadzic <ihadzic@research.bell-labs.com>
      Reviewed-by: NAlex Deucher <alexander.deucher@amd.com>
      Reviewed-by: NMichel Dänzer <michel@daenzer.net>
      Signed-off-by: NDave Airlie <airlied@redhat.com>
      52b53a0b