vk: Use anv_image_create() for creating dmabuf VkImage

We need to make sure we use the VkImage infrastructure for creating
dmabuf images.

Signed-off-by: Kristian Høgsberg Kristensen <kristian.h.kristensen@intel.com>
This commit is contained in:
Kristian Høgsberg Kristensen
2015-08-14 10:02:19 -07:00
parent 0deae66eb1
commit 6d09d0644b
4 changed files with 30 additions and 14 deletions
+4 -2
View File
@@ -181,8 +181,10 @@ anv_image_make_surface(const struct anv_image_create_info *create_info,
*/
assert(anv_is_aligned(qpitch, j));
const uint32_t stride = align_u32(mt_width * format_info->cpp,
tile_info->width);
uint32_t stride = align_u32(mt_width * format_info->cpp, tile_info->width);
if (create_info->stride > 0)
stride = create_info->stride;
const uint32_t size = stride * align_u32(mt_height, tile_info->height);
const uint32_t offset = align_u32(*inout_image_size,
tile_info->surface_alignment);
+24 -12
View File
@@ -39,6 +39,7 @@ VkResult anv_CreateDmaBufImageINTEL(
struct anv_device_memory *mem;
struct anv_image *image;
VkResult result;
VkImage image_h;
assert(pCreateInfo->sType == VK_STRUCTURE_TYPE_DMA_BUF_IMAGE_CREATE_INFO_INTEL);
@@ -65,19 +66,30 @@ VkResult anv_CreateDmaBufImageINTEL(
goto fail_mem;
}
*image = (struct anv_image) {
.bo = &mem->bo,
.offset = 0,
.type = VK_IMAGE_TYPE_2D,
.extent = pCreateInfo->extent,
.size = mem->bo.size,
.primary_surface = {
.offset = 0,
.stride = pCreateInfo->strideInBytes,
anv_image_create(_device,
&(struct anv_image_create_info) {
.force_tile_mode = true,
.tile_mode = XMAJOR,
},
};
.stride = pCreateInfo->strideInBytes,
.vk_info =
&(VkImageCreateInfo) {
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,
.imageType = VK_IMAGE_TYPE_2D,
.format = pCreateInfo->format,
.extent = pCreateInfo->extent,
.mipLevels = 1,
.arraySize = 1,
.samples = 1,
/* FIXME: Need a way to use X tiling to allow scanout */
.tiling = VK_IMAGE_TILING_OPTIMAL,
.usage = VK_IMAGE_USAGE_COLOR_ATTACHMENT_BIT,
.flags = 0,
}},
&image_h);
image = anv_image_from_handle(image_h);
image->bo = &mem->bo;
image->offset = 0;
assert(image->extent.width > 0);
assert(image->extent.height > 0);
+1
View File
@@ -996,6 +996,7 @@ struct anv_image_create_info {
const VkImageCreateInfo *vk_info;
bool force_tile_mode;
uint8_t tile_mode;
uint32_t stride;
};
VkResult anv_image_create(VkDevice _device,
+1
View File
@@ -121,6 +121,7 @@ VkResult anv_CreateSwapChainWSI(
&(struct anv_image_create_info) {
.force_tile_mode = true,
.tile_mode = XMAJOR,
.stride = 0,
.vk_info =
&(VkImageCreateInfo) {
.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO,