diff options
Diffstat (limited to 'src/intel/vulkan')
-rw-r--r-- | src/intel/vulkan/anv_meta.h | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_meta.h b/src/intel/vulkan/anv_meta.h index d33e9e6d8ba..f5dac12a04a 100644 --- a/src/intel/vulkan/anv_meta.h +++ b/src/intel/vulkan/anv_meta.h @@ -70,6 +70,54 @@ anv_meta_get_iview_layer(const struct anv_image *dest_image, const VkImageSubresourceLayers *dest_subresource, const VkOffset3D *dest_offset); +struct anv_meta_blit2d_surf { + struct anv_bo *bo; + enum isl_tiling tiling; + + /** Base offset to the start of the image */ + uint64_t base_offset; + + uint32_t offset_x; + uint32_t offset_y; + + /** The size of a unit in bytes. (Usually texel size) */ + uint8_t units; + + /** Stride between rows in bytes. */ + uint32_t stride; + + /** Possible vertical stride in rows. + * + * This is a hint to the blit engine that tells it that it can, if it + * wants, split the surface into v_stride tall chunks. The user makes + * the guarantee that no rectangles it passes in will every cross a + * v_stride boundary. A v_stride value of 0 indicates that the user + * cannot make such a guarantee. + */ + uint32_t v_stride; +}; + +struct anv_meta_blit2d_rect { + uint32_t src_x, src_y; + uint32_t dst_x, dst_y; + uint32_t width, height; +}; + +static void +anv_meta_begin_blit2d(struct anv_cmd_buffer *cmd_buffer, + struct anv_meta_saved_state *save); + +static void +anv_meta_blit2d(struct anv_cmd_buffer *cmd_buffer, + struct anv_meta_blit2d_surf *src, + struct anv_meta_blit2d_surf *dst, + unsigned num_rects, + struct anv_meta_blit2d_rect *rects); + +static void +anv_meta_end_blit2d(struct anv_cmd_buffer *cmd_buffer, + struct anv_meta_saved_state *save); + #ifdef __cplusplus } #endif |