.format = format,
.base_level = level,
.levels = 1,
- .channel_select = {
- ISL_CHANNEL_SELECT_RED,
- ISL_CHANNEL_SELECT_GREEN,
- ISL_CHANNEL_SELECT_BLUE,
- ISL_CHANNEL_SELECT_ALPHA,
- },
+ .swizzle = ISL_SWIZZLE_IDENTITY,
};
info->view.array_len = MAX2(info->surf.logical_level0_px.depth,
brw_blorp_get_blit_kernel(batch->blorp, ¶ms, &wm_prog_key);
- for (unsigned i = 0; i < 4; i++) {
- params.src.view.channel_select[i] =
- swizzle_to_scs(GET_SWZ(src_swizzle, i));
- }
+ params.src.view.swizzle = (struct isl_swizzle) {
+ .r = swizzle_to_scs(GET_SWZ(src_swizzle, 0)),
+ .g = swizzle_to_scs(GET_SWZ(src_swizzle, 1)),
+ .b = swizzle_to_scs(GET_SWZ(src_swizzle, 2)),
+ .a = swizzle_to_scs(GET_SWZ(src_swizzle, 3)),
+ };
batch->blorp->exec(batch, ¶ms);
}
isl_surf_usage_flags_t usage;
};
+struct isl_swizzle {
+ enum isl_channel_select r:4;
+ enum isl_channel_select g:4;
+ enum isl_channel_select b:4;
+ enum isl_channel_select a:4;
+};
+
+#define ISL_SWIZZLE(R, G, B, A) ((struct isl_swizzle) { \
+ .r = ISL_CHANNEL_SELECT_##R, \
+ .g = ISL_CHANNEL_SELECT_##G, \
+ .b = ISL_CHANNEL_SELECT_##B, \
+ .a = ISL_CHANNEL_SELECT_##A, \
+ })
+
+#define ISL_SWIZZLE_IDENTITY ISL_SWIZZLE(RED, GREEN, BLUE, ALPHA)
+
struct isl_view {
/**
* Indicates the usage of the particular view
uint32_t base_array_layer;
uint32_t array_len;
- enum isl_channel_select channel_select[4];
+ struct isl_swizzle swizzle;
};
union isl_color_value {
#endif
#if (GEN_GEN >= 8 || GEN_IS_HASWELL)
- s.ShaderChannelSelectRed = info->view->channel_select[0];
- s.ShaderChannelSelectGreen = info->view->channel_select[1];
- s.ShaderChannelSelectBlue = info->view->channel_select[2];
- s.ShaderChannelSelectAlpha = info->view->channel_select[3];
+ s.ShaderChannelSelectRed = info->view->swizzle.r;
+ s.ShaderChannelSelectGreen = info->view->swizzle.g;
+ s.ShaderChannelSelectBlue = info->view->swizzle.b;
+ s.ShaderChannelSelectAlpha = info->view->swizzle.a;
#endif
s.SurfaceBaseAddress = info->address;
#include "anv_private.h"
#include "vk_format_info.h"
-#define ISL_SWIZZLE(r, g, b, a) { \
- ISL_CHANNEL_SELECT_##r, \
- ISL_CHANNEL_SELECT_##g, \
- ISL_CHANNEL_SELECT_##b, \
- ISL_CHANNEL_SELECT_##a, \
-}
-
#define RGBA ISL_SWIZZLE(RED, GREEN, BLUE, ALPHA)
#define BGRA ISL_SWIZZLE(BLUE, GREEN, RED, ALPHA)
#define RGB1 ISL_SWIZZLE(RED, GREEN, BLUE, ONE)
format.isl_format = rgbx;
} else {
format.isl_format = isl_format_rgb_to_rgba(format.isl_format);
- format.swizzle = (struct anv_format_swizzle) RGB1;
+ format.swizzle = RGB1;
}
}
static enum isl_channel_select
remap_swizzle(VkComponentSwizzle swizzle, VkComponentSwizzle component,
- struct anv_format_swizzle format_swizzle)
+ struct isl_swizzle format_swizzle)
{
if (swizzle == VK_COMPONENT_SWIZZLE_IDENTITY)
swizzle = component;
.levels = anv_get_levelCount(image, range),
.base_array_layer = range->baseArrayLayer,
.array_len = anv_get_layerCount(image, range),
- .channel_select = {
- remap_swizzle(pCreateInfo->components.r,
- VK_COMPONENT_SWIZZLE_R, format.swizzle),
- remap_swizzle(pCreateInfo->components.g,
- VK_COMPONENT_SWIZZLE_G, format.swizzle),
- remap_swizzle(pCreateInfo->components.b,
- VK_COMPONENT_SWIZZLE_B, format.swizzle),
- remap_swizzle(pCreateInfo->components.a,
- VK_COMPONENT_SWIZZLE_A, format.swizzle),
+ .swizzle = {
+ .r = remap_swizzle(pCreateInfo->components.r,
+ VK_COMPONENT_SWIZZLE_R, format.swizzle),
+ .g = remap_swizzle(pCreateInfo->components.g,
+ VK_COMPONENT_SWIZZLE_G, format.swizzle),
+ .b = remap_swizzle(pCreateInfo->components.b,
+ VK_COMPONENT_SWIZZLE_B, format.swizzle),
+ .a = remap_swizzle(pCreateInfo->components.a,
+ VK_COMPONENT_SWIZZLE_A, format.swizzle),
},
};
const VkAllocationCallbacks *alloc,
VkPipeline *pPipeline);
-struct anv_format_swizzle {
- enum isl_channel_select r:4;
- enum isl_channel_select g:4;
- enum isl_channel_select b:4;
- enum isl_channel_select a:4;
-};
-
struct anv_format {
enum isl_format isl_format:16;
- struct anv_format_swizzle swizzle;
+ struct isl_swizzle swizzle;
};
struct anv_format
.levels = 1,
.base_array_layer = irb->mt_layer / layer_multiplier,
.array_len = MAX2(irb->layer_count, 1),
- .channel_select = {
- ISL_CHANNEL_SELECT_RED,
- ISL_CHANNEL_SELECT_GREEN,
- ISL_CHANNEL_SELECT_BLUE,
- ISL_CHANNEL_SELECT_ALPHA,
- },
+ .swizzle = ISL_SWIZZLE_IDENTITY,
.usage = ISL_SURF_USAGE_RENDER_TARGET_BIT,
};
.levels = intel_obj->_MaxLevel - obj->BaseLevel + 1,
.base_array_layer = obj->MinLayer,
.array_len = view_num_layers,
- .channel_select = {
- swizzle_to_scs(GET_SWZ(swizzle, 0), need_green_to_blue),
- swizzle_to_scs(GET_SWZ(swizzle, 1), need_green_to_blue),
- swizzle_to_scs(GET_SWZ(swizzle, 2), need_green_to_blue),
- swizzle_to_scs(GET_SWZ(swizzle, 3), need_green_to_blue),
+ .swizzle = {
+ .r = swizzle_to_scs(GET_SWZ(swizzle, 0), need_green_to_blue),
+ .g = swizzle_to_scs(GET_SWZ(swizzle, 1), need_green_to_blue),
+ .b = swizzle_to_scs(GET_SWZ(swizzle, 2), need_green_to_blue),
+ .a = swizzle_to_scs(GET_SWZ(swizzle, 3), need_green_to_blue),
},
.usage = ISL_SURF_USAGE_TEXTURE_BIT,
};
.levels = 1,
.base_array_layer = irb->mt_layer / mt_layer_unit,
.array_len = irb->layer_count,
- .channel_select = {
- ISL_CHANNEL_SELECT_RED,
- ISL_CHANNEL_SELECT_GREEN,
- ISL_CHANNEL_SELECT_BLUE,
- ISL_CHANNEL_SELECT_ALPHA,
- },
+ .swizzle = ISL_SWIZZLE_IDENTITY,
.usage = ISL_SURF_USAGE_TEXTURE_BIT,
};
.levels = 1,
.base_array_layer = obj->MinLayer + u->_Layer,
.array_len = num_layers,
- .channel_select = {
- ISL_CHANNEL_SELECT_RED,
- ISL_CHANNEL_SELECT_GREEN,
- ISL_CHANNEL_SELECT_BLUE,
- ISL_CHANNEL_SELECT_ALPHA,
- },
+ .swizzle = ISL_SWIZZLE_IDENTITY,
.usage = ISL_SURF_USAGE_STORAGE_BIT,
};