vk/image: Stash more information in images and views
authorJason Ekstrand <jason.ekstrand@intel.com>
Thu, 14 May 2015 00:37:12 +0000 (17:37 -0700)
committerJason Ekstrand <jason.ekstrand@intel.com>
Thu, 14 May 2015 05:22:59 +0000 (22:22 -0700)
src/vulkan/image.c
src/vulkan/private.h

index 4dd96ceac3b9276585963f11759a326fa0f23490..c1504211cadaed5d7a27c8259b4b097ef1b48555 100644 (file)
@@ -244,6 +244,7 @@ VkResult VKAPI vkCreateImage(
    image->bo = NULL;
    image->offset = 0;
    image->type = pCreateInfo->imageType;
+   image->format = pCreateInfo->format;
    image->extent = pCreateInfo->extent;
 
    assert(image->extent.width > 0);
@@ -362,6 +363,9 @@ VkResult VKAPI vkCreateImageView(
 
    view->surface_state = create_surface_state(device, view->image, format);
 
+   /* TODO: Miplevels */
+   view->extent = view->image->extent;
+
    *pView = (VkImageView) view;
 
    return VK_SUCCESS;
@@ -374,7 +378,6 @@ VkResult VKAPI vkCreateColorAttachmentView(
 {
    struct anv_device *device = (struct anv_device *) _device;
    struct anv_color_attachment_view *view;
-   struct anv_image *image;
    const struct anv_format *format =
       anv_format_for_vk_format(pCreateInfo->format);
 
@@ -386,9 +389,11 @@ VkResult VKAPI vkCreateColorAttachmentView(
       return vk_error(VK_ERROR_OUT_OF_HOST_MEMORY);
 
    view->image = (struct anv_image *) pCreateInfo->image;
-   image = view->image;
 
-   view->surface_state = create_surface_state(device, image, format);
+   view->surface_state = create_surface_state(device, view->image, format);
+
+   /* TODO: Miplevels */
+   view->extent = view->image->extent;
 
    *pView = (VkColorAttachmentView) view;
 
index 09535a73b6457591ff53d469f20147785fadbea5..fec29306064b17d0c525be7c276b581db146576e 100644 (file)
@@ -610,6 +610,7 @@ anv_format_for_vk_format(VkFormat format);
 
 struct anv_image {
    VkImageType                                  type;
+   VkFormat                                     format;
    VkExtent3D                                   extent;
    uint32_t                                     tile_mode;
    VkDeviceSize                                 size;
@@ -630,11 +631,15 @@ struct anv_buffer_view {
 struct anv_color_attachment_view {
    struct anv_image *                           image;
    struct anv_state                             surface_state;
+
+   VkExtent3D                                   extent;
 };
 
 struct anv_image_view {
    struct anv_image *                           image;
    struct anv_state                             surface_state;
+
+   VkExtent3D                                   extent;
 };
 
 struct anv_sampler {