@ -374,7 +374,7 @@ START_TEST(virgl_test_transfer_1d_bad_iov_offset)
}
}
END_TEST
END_TEST
START_TEST ( virgl_test_transfer_1d_strides_are_ignored )
START_TEST ( virgl_test_transfer_1d_bad_ strides )
{
{
struct virgl_renderer_resource_create_args res ;
struct virgl_renderer_resource_create_args res ;
unsigned char data [ 50 * 4 ] ;
unsigned char data [ 50 * 4 ] ;
@ -395,10 +395,10 @@ START_TEST(virgl_test_transfer_1d_strides_are_ignored)
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
& box , 0 , & iov , niovs ) ;
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , 0 ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 0 , bad_stride ,
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 0 , bad_stride ,
& box , 0 , & iov , niovs ) ;
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , 0 ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
@ -406,7 +406,7 @@ START_TEST(virgl_test_transfer_1d_strides_are_ignored)
}
}
END_TEST
END_TEST
START_TEST ( virgl_test_transfer_2d_layer_stride_is_ignored )
START_TEST ( virgl_test_transfer_2d_bad_strides )
{
{
struct virgl_renderer_resource_create_args res ;
struct virgl_renderer_resource_create_args res ;
unsigned char data [ 50 * 4 ] ;
unsigned char data [ 50 * 4 ] ;
@ -423,9 +423,12 @@ START_TEST(virgl_test_transfer_2d_layer_stride_is_ignored)
virgl_renderer_ctx_attach_resource ( 1 , res . handle ) ;
virgl_renderer_ctx_attach_resource ( 1 , res . handle ) ;
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 0 , bad_stride ,
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 0 , bad_stride ,
& box , 0 , & iov , niovs ) ;
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , 0 ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
@ -433,7 +436,7 @@ START_TEST(virgl_test_transfer_2d_layer_stride_is_ignored)
}
}
END_TEST
END_TEST
START_TEST ( virgl_test_transfer_buffer_strides_are_ignored )
START_TEST ( virgl_test_transfer_buffer_bad_ strides )
{
{
struct virgl_renderer_resource_create_args res ;
struct virgl_renderer_resource_create_args res ;
unsigned char data [ 50 * 4 ] ;
unsigned char data [ 50 * 4 ] ;
@ -452,10 +455,10 @@ START_TEST(virgl_test_transfer_buffer_strides_are_ignored)
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
& box , 0 , & iov , niovs ) ;
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , 0 ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , bad_stride , 0 ,
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 0 , bad_stride ,
& box , 0 , & iov , niovs ) ;
& box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , 0 ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
@ -519,32 +522,6 @@ START_TEST(virgl_test_transfer_2d_bad_level)
}
}
END_TEST
END_TEST
/* test stride less than box size */
START_TEST ( virgl_test_transfer_2d_bad_stride )
{
struct virgl_renderer_resource_create_args res ;
unsigned char data [ 50 * 4 * 2 ] ;
struct iovec iov = { . iov_base = data , . iov_len = sizeof ( data ) } ;
int niovs = 1 ;
int ret ;
struct virgl_box box = { . w = 50 , . h = 2 , . d = 1 } ;
testvirgl_init_simple_2d_resource ( & res , 1 ) ;
ret = virgl_renderer_resource_create ( & res , NULL , 0 ) ;
ck_assert_int_eq ( ret , 0 ) ;
virgl_renderer_ctx_attach_resource ( 1 , res . handle ) ;
ret = virgl_renderer_transfer_write_iov ( res . handle , 1 , 0 , 10 , 0 , & box , 0 , & iov , niovs ) ;
ck_assert_int_eq ( ret , EINVAL ) ;
virgl_renderer_ctx_detach_resource ( 1 , res . handle ) ;
virgl_renderer_resource_unref ( 1 ) ;
}
END_TEST
/* for each texture type construct a valid and invalid transfer,
/* for each texture type construct a valid and invalid transfer,
invalid using a box outside the bounds of the transfer */
invalid using a box outside the bounds of the transfer */
# define LARGE_FLAG_WIDTH (1 << 0)
# define LARGE_FLAG_WIDTH (1 << 0)
@ -985,12 +962,11 @@ static Suite *virgl_init_suite(void)
tcase_add_test ( tc_core , virgl_test_transfer_1d ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_bad_iov ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_bad_iov ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_bad_iov_offset ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_bad_iov_offset ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_strides_are_ignored ) ;
tcase_add_test ( tc_core , virgl_test_transfer_1d_bad_ strides ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_layer_stride_is_ignored ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_bad_strides ) ;
tcase_add_test ( tc_core , virgl_test_transfer_buffer_strides_are_ignored ) ;
tcase_add_test ( tc_core , virgl_test_transfer_buffer_bad_ strides ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_array_bad_layer_stride ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_array_bad_layer_stride ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_bad_level ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_bad_level ) ;
tcase_add_test ( tc_core , virgl_test_transfer_2d_bad_stride ) ;
tcase_add_loop_test ( tc_core , virgl_test_transfer_res_read_valid , 0 , PIPE_MAX_TEXTURE_TYPES ) ;
tcase_add_loop_test ( tc_core , virgl_test_transfer_res_read_valid , 0 , PIPE_MAX_TEXTURE_TYPES ) ;
tcase_add_loop_test ( tc_core , virgl_test_transfer_res_write_valid , 0 , PIPE_MAX_TEXTURE_TYPES ) ;
tcase_add_loop_test ( tc_core , virgl_test_transfer_res_write_valid , 0 , PIPE_MAX_TEXTURE_TYPES ) ;