Navigate to the top level

Image_blit

Description
Tests behavior of the 2D blitting commands.
NV09F, NV012, NV019, NV072
Suite class def

BlitBeyondWidth

Demonstrates the interaction between 0x9F image blit operations and assigned GPU tiles. A blit operation is configured with a target smaller than the source. The target address is set within an active GPU tile such that the blit would extend beyond the end of the tile and a guard value is tested to prove that the blit is clipped to stay within the tile. A similar blit is performed outside of the tile, demonstrating that unprotected blits may overdraw the target region.

Image with alpha
Test result for Image_blit::BlitBeyondWidth
Image as seen on display
No alpha test result for Image_blit::BlitBeyondWidth

BlitRenderBlit

Blits an image into a render surface, then performs a 3d render on top of the surface, then another blit on top of the composited two. Finally does a srccopy to blit the finished composition to the framebuffer. Demonstrates apparent incorrect ordering in various versions of xemu.

Image with alpha
Test result for Image_blit::BlitRenderBlit
Image as seen on display
No alpha test result for Image_blit::BlitRenderBlit

DirtyOverlappedDestSurf

Performs a 3d render into the backbuffer, then a 2D srccopy that completely overwrites it. Finally performs another 3d render, demonstrating incorrect behavior in various versions of xemu.

Image with alpha
Test result for Image_blit::DirtyOverlappedDestSurf
Image as seen on display
No alpha test result for Image_blit::DirtyOverlappedDestSurf

ImgBlt_BLENDAND_XRGB_B00000000

Demonstrates expected behavior of the contextual beta (class 0x12) during image blits.

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00000000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00000000

ImgBlt_BLENDAND_XRGB_B007FFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B007FFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B007FFFFF

ImgBlt_BLENDAND_XRGB_B00800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00800000

ImgBlt_BLENDAND_XRGB_B00D00000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00D00000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B00D00000

ImgBlt_BLENDAND_XRGB_B03300000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B03300000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B03300000

ImgBlt_BLENDAND_XRGB_B44400000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B44400000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B44400000

ImgBlt_BLENDAND_XRGB_B444FFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B444FFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B444FFFFF

ImgBlt_BLENDAND_XRGB_B66800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B66800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B66800000

ImgBlt_BLENDAND_XRGB_B7F800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B7F800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B7F800000

ImgBlt_BLENDAND_XRGB_B7FFFFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B7FFFFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B7FFFFFFF

ImgBlt_BLENDAND_XRGB_B80000000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B80000000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B80000000

ImgBlt_BLENDAND_XRGB_B8FFFFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_XRGB_B8FFFFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_XRGB_B8FFFFFFF

ImgBlt_BLENDAND_ZRGB_B007FFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B007FFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B007FFFFF

ImgBlt_BLENDAND_ZRGB_B00800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B00800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B00800000

ImgBlt_BLENDAND_ZRGB_B00D00000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B00D00000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B00D00000

ImgBlt_BLENDAND_ZRGB_B03300000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B03300000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B03300000

ImgBlt_BLENDAND_ZRGB_B44400000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B44400000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B44400000

ImgBlt_BLENDAND_ZRGB_B444FFFFF

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B444FFFFF
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B444FFFFF

ImgBlt_BLENDAND_ZRGB_B66800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B66800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B66800000

ImgBlt_BLENDAND_ZRGB_B7F800000

Image with alpha
Test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B7F800000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_BLENDAND_ZRGB_B7F800000

ImgBlt_Clip_0_0_640_480

Demonstrates expected behavior of the contextual clip rectangle (class 0x19) during image blits.

Image with alpha
Test result for Image_blit::ImgBlt_Clip_0_0_640_480
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_0_0_640_480

ImgBlt_Clip_300_200_16_24

Image with alpha
Test result for Image_blit::ImgBlt_Clip_300_200_16_24
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_300_200_16_24

ImgBlt_Clip_320_240_0_0

Image with alpha
Test result for Image_blit::ImgBlt_Clip_320_240_0_0
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_320_240_0_0

ImgBlt_Clip_320_240_0_10

Image with alpha
Test result for Image_blit::ImgBlt_Clip_320_240_0_10
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_320_240_0_10

ImgBlt_Clip_320_240_1_1

Image with alpha
Test result for Image_blit::ImgBlt_Clip_320_240_1_1
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_320_240_1_1

ImgBlt_Clip_320_240_640_480

Image with alpha
Test result for Image_blit::ImgBlt_Clip_320_240_640_480
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_320_240_640_480

ImgBlt_Clip_320_240_64_40

Image with alpha
Test result for Image_blit::ImgBlt_Clip_320_240_64_40
Image as seen on display
No alpha test result for Image_blit::ImgBlt_Clip_320_240_64_40

ImgBlt_SRCCOPY_ARGB_B00000000

Image with alpha
Test result for Image_blit::ImgBlt_SRCCOPY_ARGB_B00000000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_SRCCOPY_ARGB_B00000000

ImgBlt_SRCCOPY_XRGB_B00000000

Image with alpha
Test result for Image_blit::ImgBlt_SRCCOPY_XRGB_B00000000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_SRCCOPY_XRGB_B00000000

ImgBlt_SRCCOPY_ZRGB_B00000000

Image with alpha
Test result for Image_blit::ImgBlt_SRCCOPY_ZRGB_B00000000
Image as seen on display
No alpha test result for Image_blit::ImgBlt_SRCCOPY_ZRGB_B00000000

Overlap_BL_Inside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit exactly inside the bottom-left corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_BL_Inside
Image as seen on display
No alpha test result for Image_blit::Overlap_BL_Inside

Overlap_BL_Outside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit just outside the bottom-left corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_BL_Outside
Image as seen on display
No alpha test result for Image_blit::Overlap_BL_Outside

Overlap_BR_Inside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit exactly inside the bottom-right corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_BR_Inside
Image as seen on display
No alpha test result for Image_blit::Overlap_BR_Inside

Overlap_BR_Outside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit just outside the bottom-right corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_BR_Outside
Image as seen on display
No alpha test result for Image_blit::Overlap_BR_Outside

Overlap_TL_Inside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit exactly inside the top-left corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_TL_Inside
Image as seen on display
No alpha test result for Image_blit::Overlap_TL_Inside

Overlap_TL_Outside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit just outside the top-left corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_TL_Outside
Image as seen on display
No alpha test result for Image_blit::Overlap_TL_Outside

Overlap_TR_Inside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit exactly inside the top-right corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_TR_Inside
Image as seen on display
No alpha test result for Image_blit::Overlap_TR_Inside

Overlap_TR_Outside

Tests the boundary condition of xemu's 2D blit overlap detection by performing a 1x1 pixel blit just outside the top-right corner of a 3D render surface.

Image with alpha
Test result for Image_blit::Overlap_TR_Outside
Image as seen on display
No alpha test result for Image_blit::Overlap_TR_Outside

OverlapFIFO

Demonstrates that image blits overlapping the pushbuffer are performed without issue on HW. A blit copying the test image over the current pushbuffer write address is queued, followed by a blit copying the data from there to the screen. This is flushed to the HW, along with a wait until the pushbuffer is fully consumed. Failure to wait demonstrates a race between the blits and subsequent instructions, generally leading to some corruption near the top of the image.

Image with alpha
Test result for Image_blit::OverlapFIFO
Image as seen on display
No alpha test result for Image_blit::OverlapFIFO