diff --git a/drv_helpers.c b/drv_helpers.c index 7d0cebe..f4df4df 100644 --- a/drv_helpers.c +++ b/drv_helpers.c @@ -353,6 +353,9 @@ int drv_dumb_bo_create_ex(struct bo *bo, uint32_t width, uint32_t height, uint32 DIV_ROUND_UP(aligned_width * layout_from_format(format)->bytes_per_pixel[0], 4); create_dumb.bpp = 32; } else { + /* Align for llvmpipe 64-byte tile size for dumb_driver */ + aligned_width = ALIGN(aligned_width, MESA_LLVMPIPE_TILE_SIZE); + aligned_height = ALIGN(aligned_height, MESA_LLVMPIPE_TILE_SIZE); create_dumb.bpp = layout_from_format(format)->bytes_per_pixel[0] * 8; } create_dumb.width = aligned_width; diff --git a/drv_priv.h b/drv_priv.h index 9fa84a5..d674876 100644 --- a/drv_priv.h +++ b/drv_priv.h @@ -125,6 +125,12 @@ struct backend { #endif #define LINEAR_METADATA (struct format_metadata) { 1, 0, DRM_FORMAT_MOD_LINEAR } + +#define MESA_LLVMPIPE_MAX_TEXTURE_2D_LEVELS 15 +#define MESA_LLVMPIPE_MAX_TEXTURE_2D_SIZE (1 << (MESA_LLVMPIPE_MAX_TEXTURE_2D_LEVELS - 1)) +#define MESA_LLVMPIPE_TILE_ORDER 6 +#define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER) + // clang-format on #endif diff --git a/virtgpu_virgl.c b/virtgpu_virgl.c index 93577f0..8c9e938 100644 --- a/virtgpu_virgl.c +++ b/virtgpu_virgl.c @@ -22,11 +22,6 @@ #define PIPE_TEXTURE_2D 2 -#define MESA_LLVMPIPE_MAX_TEXTURE_2D_LEVELS 15 -#define MESA_LLVMPIPE_MAX_TEXTURE_2D_SIZE (1 << (MESA_LLVMPIPE_MAX_TEXTURE_2D_LEVELS - 1)) -#define MESA_LLVMPIPE_TILE_ORDER 6 -#define MESA_LLVMPIPE_TILE_SIZE (1 << MESA_LLVMPIPE_TILE_ORDER) - // This comes from a combination of SwiftShader's VkPhysicalDeviceLimits::maxFramebufferWidth and // VkPhysicalDeviceLimits::maxImageDimension2D (see https://crrev.com/c/1917130). #define ANGLE_ON_SWIFTSHADER_MAX_TEXTURE_2D_SIZE 8192