anv/formats: Add fields for block dimensions
authorNanley Chery <nanley.g.chery@intel.com>
Tue, 29 Sep 2015 00:42:39 +0000 (17:42 -0700)
committerNanley Chery <nanley.g.chery@intel.com>
Mon, 9 Nov 2015 23:41:41 +0000 (15:41 -0800)
A non-compressed texture is a 1x1x1 block. Compressed
textures could have values which vary in different
dimensions WxHxD.

Reviewed-by: Chad Versace <chad.versace@intel.com>
src/vulkan/anv_formats.c
src/vulkan/anv_private.h

index 5631bea10e3560b17774f150e339566ce17b9c1d..b588465e00ee19f850af5fe4d415dadea41639d6 100644 (file)
@@ -27,7 +27,7 @@
 #define UNSUPPORTED 0xffff
 
 #define fmt(__vk_fmt, __hw_fmt, ...) \
-   [__vk_fmt] = { .vk_format = __vk_fmt, .name = #__vk_fmt, .surface_format = __hw_fmt, __VA_ARGS__ }
+   [__vk_fmt] = { .vk_format = __vk_fmt, .name = #__vk_fmt, .surface_format = __hw_fmt, .bw = 1, .bh = 1, .bd = 1, __VA_ARGS__ }
 
 static const struct anv_format anv_formats[] = {
    fmt(VK_FORMAT_UNDEFINED,               RAW,                    .bs = 1,   .num_channels = 1),
index 03d033ff0c5d8cb405c88d5b89e316efd4cebf80..8a8fe8d04a4fdcb211767753c0b19227e09383ac 100644 (file)
@@ -1208,6 +1208,9 @@ struct anv_format {
    const char *name;
    uint16_t surface_format; /**< RENDER_SURFACE_STATE.SurfaceFormat */
    uint8_t bs; /**< Block size (in bytes) of anv_format::surface_format. */
+   uint8_t bw; /**< Block width of anv_format::surface_format. */
+   uint8_t bh; /**< Block height of anv_format::surface_format. */
+   uint8_t bd; /**< Block depth of anv_format::surface_format. */
    uint8_t num_channels;
    uint16_t depth_format; /**< 3DSTATE_DEPTH_BUFFER.SurfaceFormat */
    bool has_stencil;