[PATCH] Handling negative test case for Tiling

Nidhi Gupta nidhi1.gupta at intel.com
Wed Feb 7 04:26:39 UTC 2018


From: Jeevan B <jeevan.b at intel.com>

Signed-off-by: Jeevan B <jeevan.b at intel.com>
---
 framework/atomic_flip/drm_flip.cpp    | 15 +++++++++------
 framework/atomic_flip/drm_modeset.cpp |  4 ++--
 framework/atomic_flip/drmtest.cpp     |  4 +++-
 framework/include/drm_flip.h          |  4 ++--
 framework/include/drmtest.h           |  2 +-
 5 files changed, 17 insertions(+), 12 deletions(-)

diff --git a/framework/atomic_flip/drm_flip.cpp b/framework/atomic_flip/drm_flip.cpp
index fb537da..c638460 100644
--- a/framework/atomic_flip/drm_flip.cpp
+++ b/framework/atomic_flip/drm_flip.cpp
@@ -295,7 +295,7 @@ static void fill_sprite(
 /*
 *This function creates framebuffer and returns framebuffer id if successful else Failure.
 */
-int create_framebuffer(int drm_fd, drm_plane_data_t *plane_data)
+int create_framebuffer(int drm_fd, drm_plane_data_t *plane_data, int tflag)
 {
 	int bufferid, drm_format, i;
 	drm_fb_t fb;
@@ -314,7 +314,7 @@ int create_framebuffer(int drm_fd, drm_plane_data_t *plane_data)
 		strcpy(fb.rc_buffer_file,plane_data->rc_buffer_file);
 	}
 
-	bufferid = drm_create_fb_with_bo_size(drm_fd,plane_data->width,plane_data->height,drm_format,plane_data->tiling,&fb,0);
+	bufferid = drm_create_fb_with_bo_size(drm_fd,plane_data->width,plane_data->height,drm_format,plane_data->tiling,&fb,0,tflag);
 
 	if (bufferid > 0) {
 
@@ -394,7 +394,7 @@ int plane_needs_fb_update(drm_data_t *drm_data, int index)
 
 int manage_framebuffer(drm_data_t *drm_data)
 {
-	int num_planes, itr, itr2, ret;
+	int num_planes, itr, itr2, ret, tflag=0;
 	int current_index,bufferid;
 
 	num_planes = drm_data->requested_flip_data.num_planes;
@@ -421,7 +421,10 @@ int manage_framebuffer(drm_data_t *drm_data)
 			}
 		}
 
-		ret = create_framebuffer(drm_data->drm_fd, drm_data->requested_flip_data.plane_data[itr]);
+		if (IS_DRM_DATA_FLAG_SET(drm_data->flags, NEGATIVE_MASK)){
+		tflag=-1;
+		}
+		ret = create_framebuffer(drm_data->drm_fd, drm_data->requested_flip_data.plane_data[itr], tflag);
 		fb_id[itr] = ret;
 		if(ret == FAILURE) {
 			/*Remove frame buffers created earlier*/
@@ -938,7 +941,7 @@ int drm_fb_calc_uv(drm_fb_t *fb)
  */
 int drm_create_fb_with_bo_size(int fd, int width, int height,
                            uint32_t format, unsigned int tiling,
-                           drm_fb_t *fb, unsigned bo_size)
+                           drm_fb_t *fb, unsigned bo_size, int tflag)
 {
 	uint32_t handles[4];
 	uint32_t pitches[4];
@@ -1011,7 +1014,7 @@ int drm_create_fb_with_bo_size(int fd, int width, int height,
 	 * corruption while painting the buffer using fill_sprite
 	 */
 	if (tiling != I915_TILING_NONE)
-		gem_set_tiling(fd, gem_handle, tiling, stride);
+		gem_set_tiling(fd, gem_handle, tiling, stride, tflag);
 
 	fb->width = width;
 	fb->height = height;
diff --git a/framework/atomic_flip/drm_modeset.cpp b/framework/atomic_flip/drm_modeset.cpp
index 58e463d..0a48282 100644
--- a/framework/atomic_flip/drm_modeset.cpp
+++ b/framework/atomic_flip/drm_modeset.cpp
@@ -193,7 +193,7 @@ int apply_mode(drm_data_t *drm_data, int num_displays, drmModeModeInfo *mode_to_
 {
 
 	drm_pipe_t *pipe;
-	int output_index[num_displays], driver_crtcid;
+	int output_index[num_displays], driver_crtcid, tflag=0;
 	drm_display_t display = drm_data->display;
 	int i, k = 0, j, ret;
 	int num_planes = 0, fb_id, asp_ratio;
@@ -265,7 +265,7 @@ int apply_mode(drm_data_t *drm_data, int num_displays, drmModeModeInfo *mode_to_
 					break;
 			}
 
-			fb_id = create_framebuffer(drm_data->drm_fd,plane_data[k]);
+			fb_id = create_framebuffer(drm_data->drm_fd,plane_data[k],tflag);
 
 			if(fb_id <= 0){
 				_err("fb_id should be greater than 0\n");
diff --git a/framework/atomic_flip/drmtest.cpp b/framework/atomic_flip/drmtest.cpp
index b9433d1..5962863 100644
--- a/framework/atomic_flip/drmtest.cpp
+++ b/framework/atomic_flip/drmtest.cpp
@@ -238,7 +238,7 @@ int drm_open_any_master(void)
 	return fd;
 }
 
-void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride)
+void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride, int tflag)
 {
 	struct drm_i915_gem_set_tiling st;
 	int ret;
@@ -251,8 +251,10 @@ void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride)
 
 		ret = ioctl(fd, DRM_IOCTL_I915_GEM_SET_TILING, &st);
 	} while (ret == -1 && (errno == EINTR || errno == EAGAIN));
+	if(tflag==-0){
 	assert(ret == 0);
 	assert(st.tiling_mode == tiling);
+	}
 }
 
 void gem_close(int fd, uint32_t handle)
diff --git a/framework/include/drm_flip.h b/framework/include/drm_flip.h
index 0922f68..17b2694 100644
--- a/framework/include/drm_flip.h
+++ b/framework/include/drm_flip.h
@@ -28,7 +28,7 @@
 void default_plane_data(drm_plane_data_t *plane_data);
 void invalid_plane_data(drm_plane_data_t *plane_data);
 int plane_drawn(drm_data_t *drm_data, int index);
-int create_framebuffer(int drm_fd, drm_plane_data_t *plane_data);
+int create_framebuffer(int drm_fd, drm_plane_data_t *plane_data, int tflag);
 int plane_needs_fb_update(drm_data_t *drm_data, int index);
 int manage_framebuffer(drm_data_t *drm_data);
 void dump_flip_details(dump_flip_data_t data);
@@ -42,7 +42,7 @@ int do_flip(drm_data_t *drm_data);
 void drm_require_fb_modifiers(int fd);
 int addfb(int fd, uint32_t handle, uint32_t width, uint32_t height, uint32_t stride, uint32_t pixel_format, uint64_t modifier, uint32_t flags, uint32_t *buf_id, uint32_t uv_offset, uint32_t aux_stride);
 int drm_fb_calc_uv(struct drm_fb *fb);
-int drm_create_fb_with_bo_size(int fd, int width, int height, uint32_t format, unsigned int tiling, drm_fb_t *fb, unsigned bo_size);
+int drm_create_fb_with_bo_size(int fd, int width, int height, uint32_t format, unsigned int tiling, drm_fb_t *fb, unsigned bo_size, int tflag);
 uint32_t drm_format_to_bpp(uint32_t drm_format, int plane);
 uint32_t val_to_drm_format(int pixelformat);
 uint32_t get_equivalent_format(uint32_t pixelformat);
diff --git a/framework/include/drmtest.h b/framework/include/drmtest.h
index bc29e41..c37d3a6 100644
--- a/framework/include/drmtest.h
+++ b/framework/include/drmtest.h
@@ -113,7 +113,7 @@ int drm_open_any_master(void);
 void gem_quiescent_gpu(int fd);
 
 /* ioctl wrappers and similar stuff for bare metal testing */
-void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride);
+void gem_set_tiling(int fd, uint32_t handle, int tiling, int stride, int tflag);
 void gem_close(int fd, uint32_t handle);
 void gem_write(int fd, uint32_t handle, uint32_t offset,  const void *buf, uint32_t size);
 void gem_read(int fd, uint32_t handle, uint32_t offset, void *buf, uint32_t size);
-- 
1.9.1



More information about the Intel-gfx-trybot mailing list