mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-19 05:46:25 +00:00
tests/flip_test: add flip vs. rmfb testcase
To check that the kernel doesn't fall over when tearing down a life fb. Confirmed that it exercises the right codepath with printk. Also fix an issue Imre introduced in commit fe7fea0be3b5f418b76dc7834e73b31827484429 Author: Imre Deak <imre.deak@intel.com> Date: Tue Oct 16 04:09:43 2012 +0300 flip_test: add event sequence number tracking Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
parent
df41e1a6bb
commit
f56384c2c0
@ -54,6 +54,7 @@
|
|||||||
#define TEST_VBLANK_ABSOLUTE (1 << 10)
|
#define TEST_VBLANK_ABSOLUTE (1 << 10)
|
||||||
#define TEST_VBLANK_EXPIRED_SEQ (1 << 11)
|
#define TEST_VBLANK_EXPIRED_SEQ (1 << 11)
|
||||||
#define TEST_FB_RECREATE (1 << 12)
|
#define TEST_FB_RECREATE (1 << 12)
|
||||||
|
#define TEST_RMFB (1 << 13)
|
||||||
|
|
||||||
#define EVENT_FLIP (1 << 0)
|
#define EVENT_FLIP (1 << 0)
|
||||||
#define EVENT_VBLANK (1 << 1)
|
#define EVENT_VBLANK (1 << 1)
|
||||||
@ -396,10 +397,14 @@ static void check_state(struct test_output *o, struct event_state *es)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* This bounding matches the one in DRM_IOCTL_WAIT_VBLANK. */
|
/* This bounding matches the one in DRM_IOCTL_WAIT_VBLANK. */
|
||||||
if (es->current_seq - (es->last_seq + es->seq_step) > 1UL << 23) {
|
if (!(o->flags & (TEST_DPMS | TEST_MODESET))) {
|
||||||
fprintf(stderr, "unexpected %s seq %u, should be >= %u\n",
|
/* check only valid if no modeset happens in between, that
|
||||||
es->name, es->current_seq, es->last_seq + es->seq_step);
|
* increments by (1 << 23) on each step. */
|
||||||
exit(10);
|
if (es->current_seq - (es->last_seq + es->seq_step) > 1UL << 23) {
|
||||||
|
fprintf(stderr, "unexpected %s seq %u, should be >= %u\n",
|
||||||
|
es->name, es->current_seq, es->last_seq + es->seq_step);
|
||||||
|
exit(10);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((o->flags & TEST_CHECK_TS) && (!analog_tv_connector(o))) {
|
if ((o->flags & TEST_CHECK_TS) && (!analog_tv_connector(o))) {
|
||||||
@ -578,6 +583,9 @@ static unsigned int run_test_step(struct test_output *o)
|
|||||||
if (do_flip && (o->flags & TEST_EBUSY))
|
if (do_flip && (o->flags & TEST_EBUSY))
|
||||||
assert(do_page_flip(o, new_fb_id) == -EBUSY);
|
assert(do_page_flip(o, new_fb_id) == -EBUSY);
|
||||||
|
|
||||||
|
if (do_flip && (o->flags & TEST_RMFB))
|
||||||
|
recreate_fb(o);
|
||||||
|
|
||||||
/* pan before the flip completes */
|
/* pan before the flip completes */
|
||||||
if (o->flags & TEST_PAN) {
|
if (o->flags & TEST_PAN) {
|
||||||
int count = do_flip ?
|
int count = do_flip ?
|
||||||
@ -597,7 +605,7 @@ static unsigned int run_test_step(struct test_output *o)
|
|||||||
if (o->flags & TEST_DPMS)
|
if (o->flags & TEST_DPMS)
|
||||||
do_or_die(set_dpms(o, DRM_MODE_DPMS_OFF));
|
do_or_die(set_dpms(o, DRM_MODE_DPMS_OFF));
|
||||||
|
|
||||||
if (o->flags & TEST_MODESET) {
|
if (o->flags & TEST_MODESET && !(o->flags & TEST_RMFB)) {
|
||||||
if (drmModeSetCrtc(drm_fd, o->crtc,
|
if (drmModeSetCrtc(drm_fd, o->crtc,
|
||||||
0, /* no fb */
|
0, /* no fb */
|
||||||
0, 0,
|
0, 0,
|
||||||
@ -1015,6 +1023,7 @@ int main(int argc, char **argv)
|
|||||||
{ 15, TEST_FLIP | TEST_CHECK_TS | TEST_EBUSY , "plain-flip-ts-check" },
|
{ 15, TEST_FLIP | TEST_CHECK_TS | TEST_EBUSY , "plain-flip-ts-check" },
|
||||||
{ 15, TEST_FLIP | TEST_CHECK_TS | TEST_EBUSY | TEST_FB_RECREATE,
|
{ 15, TEST_FLIP | TEST_CHECK_TS | TEST_EBUSY | TEST_FB_RECREATE,
|
||||||
"plain-flip-fb-recreate" },
|
"plain-flip-fb-recreate" },
|
||||||
|
{ 15, TEST_FLIP | TEST_EBUSY | TEST_RMFB | TEST_MODESET , "flip-vs-rmfb" },
|
||||||
{ 30, TEST_FLIP | TEST_DPMS | TEST_EINVAL, "flip-vs-dpms" },
|
{ 30, TEST_FLIP | TEST_DPMS | TEST_EINVAL, "flip-vs-dpms" },
|
||||||
{ 30, TEST_FLIP | TEST_DPMS | TEST_WITH_DUMMY_LOAD, "delayed-flip-vs-dpms" },
|
{ 30, TEST_FLIP | TEST_DPMS | TEST_WITH_DUMMY_LOAD, "delayed-flip-vs-dpms" },
|
||||||
{ 5, TEST_FLIP | TEST_PAN, "flip-vs-panning" },
|
{ 5, TEST_FLIP | TEST_PAN, "flip-vs-panning" },
|
||||||
|
Loading…
x
Reference in New Issue
Block a user