Announcement

Collapse
No announcement yet.

Radeon Page-Flipping Patches Come About

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #11
    Originally posted by agd5f View Post
    Try the newer patches I posted later. here:

    for your convenience.
    Nope still corruption. I think there's something wrong with the pitch. if I change to another display resolution and then back to the native resolution I get a different pitch value in xorg log and there's no corruption.

    with corruption
    Code:
    width 1680 pitch 7168 (/4 1792)
    after resolution change (no corruption)
    Code:
    width 1680 pitch 6912 (/4 1728)

    Comment


    • #12
      New ddx patches should fix it:

      Comment


      • #13
        It fixes it in the sense that there's no more corruption, but I'm not sure if it's still using page flipping at the displays native resolution of 1680x1050 with that patch. As I don't get any of these fevent lines any more in my xorg log. They do appear when I set the display resolution to 1280x1024 however.

        Comment


        • #14
          pageflipping only works when both buffers are the same w/h/pitch/depth. It sounds like perhaps they are not in that case. You'd need to add some debugging to see why they are not the same.

          Comment


          • #15
            Yeah I already added a little debugging to it. It fails in the width test in can_exchange.

            Code:
            radeon_dri2_schedule_swap -> can_exchange
            
            if (front_pixmap->drawable.width != back_pixmap->drawable.width) {
            
            results in the following comparison: 1680 != 1792
            So it looks to me like it's comparing width against pitch, why I have no idea...

            Comment


            • #16
              updated patches:

              Comment


              • #17
                Still fails for me in exactly the same way in the width test with latest patches and git master including unified bo alignment commit. Also pitch and stride are still different after xrandr resize. Don't know if unified bo alignment was supposed to fix this.

                initial: 1792
                after xrandr resize: 1728

                I'll try to add some more debugging into it later when I have some time.

                Comment


                • #18
                  Originally posted by monraaf View Post
                  Still fails for me in exactly the same way in the width test with latest patches and git master including unified bo alignment commit. Also pitch and stride are still different after xrandr resize. Don't know if unified bo alignment was supposed to fix this.

                  initial: 1792
                  after xrandr resize: 1728

                  I'll try to add some more debugging into it later when I have some time.
                  1792 is aligned to 256 pixels while 1728 is aligned to 64 pixels. So both buffers are still not getting aligned the same.

                  Comment


                  • #19
                    Originally posted by monraaf View Post
                    Still fails for me in exactly the same way in the width test with latest patches and git master including unified bo alignment commit. Also pitch and stride are still different after xrandr resize. Don't know if unified bo alignment was supposed to fix this.

                    initial: 1792
                    after xrandr resize: 1728

                    I'll try to add some more debugging into it later when I have some time.
                    This part in the add pageflip support patch looks suspect:

                    Code:
                    @@ -287,12 +302,18 @@ radeon_dri2_create_buffer(DrawablePtr drawable,
                     					      (format != 0)?format:drawable->depth,
                     					      flags);
                     
                    -	} else
                    +	} else {
                    +	    unsigned aligned_width = drawable->width;
                    +
                    +	    if (aligned_width == front_width)
                    +		aligned_width = front_pitch;

                    Comment


                    • #20
                      Originally posted by Otus View Post
                      This part in the add pageflip support patch looks suspect:

                      Code:
                      @@ -287,12 +302,18 @@ radeon_dri2_create_buffer(DrawablePtr drawable,
                       					      (format != 0)?format:drawable->depth,
                       					      flags);
                       
                      -	} else
                      +	} else {
                      +	    unsigned aligned_width = drawable->width;
                      +
                      +	    if (aligned_width == front_width)
                      +		aligned_width = front_pitch;
                      That should probably be pScrn->virtualX

                      Comment

                      Working...
                      X