This is useful to allow GL to provide defined results for overlapping glBlitFramebuffer, which X11 in turn uses to accelerate uncomposited window movement without first blitting to a temporary. x11perf -copywinwin100 goes from 1850/sec to 4850/sec. v2: Default to the same behavior as before when the flags aren't passed. (suggested by Boris)
Showing the changes to include/uapi (1 of 4 files). Show all
Unified · Split
| @@ -155,6 +155,16 @@ struct drm_vc4_submit_cl { · 154 unmodified lines | |||
| 155 | __u32 pad:24; | 155 | __u32 pad:24; |
| 156 | 156 | ||
| 157 | #define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0) | 157 | #define VC4_SUBMIT_CL_USE_CLEAR_COLOR (1 << 0) |
| 158 | /* By default, the kernel gets to choose the order that the tiles are | ||
| 159 | * rendered in. If this is set, then the tiles will be rendered in a | ||
| 160 | * raster order, with the right-to-left vs left-to-right and | ||
| 161 | * top-to-bottom vs bottom-to-top dictated by | ||
| 162 | * VC4_SUBMIT_CL_RCL_ORDER_INCREASING_*. This allows overlapping | ||
| 163 | * blits to be implemented using the 3D engine. | ||
| 164 | */ | ||
| 165 | #define VC4_SUBMIT_CL_FIXED_RCL_ORDER (1 << 1) | ||
| 166 | #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_X (1 << 2) | ||
| 167 | #define VC4_SUBMIT_CL_RCL_ORDER_INCREASING_Y (1 << 3) | ||
| 158 | __u32 flags; | 168 | __u32 flags; |
| 159 | 169 | ||
| 160 | /* Returned value of the seqno of this render job (for the | 170 | /* Returned value of the seqno of this render job (for the |
| @@ -294,6 +304,7 @@ struct drm_vc4_get_hang_state { · 133 unmodified lines | |||
| 294 | #define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3 | 304 | #define DRM_VC4_PARAM_SUPPORTS_BRANCHES 3 |
| 295 | #define DRM_VC4_PARAM_SUPPORTS_ETC1 4 | 305 | #define DRM_VC4_PARAM_SUPPORTS_ETC1 4 |
| 296 | #define DRM_VC4_PARAM_SUPPORTS_THREADED_FS 5 | 306 | #define DRM_VC4_PARAM_SUPPORTS_THREADED_FS 5 |
| 307 | #define DRM_VC4_PARAM_SUPPORTS_FIXED_RCL_ORDER 6 | ||
| 297 | 308 | ||
| 298 | struct drm_vc4_get_param { | 309 | struct drm_vc4_get_param { |
| 299 | __u32 param; | 310 | __u32 param; |