diff options
Diffstat (limited to 'src/intel/vulkan/anv_private.h')
-rw-r--r-- | src/intel/vulkan/anv_private.h | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 0cc6550a402..a0cb35ccccb 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -1552,6 +1552,21 @@ anv_get_isl_format(const struct gen_device_info *devinfo, VkFormat vk_format, return anv_get_format(devinfo, vk_format, aspect, tiling).isl_format; } +static inline struct isl_swizzle +anv_swizzle_for_render(struct isl_swizzle swizzle) +{ + /* Sometimes the swizzle will have alpha map to one. We do this to fake + * RGB as RGBA for texturing + */ + assert(swizzle.a == ISL_CHANNEL_SELECT_ONE || + swizzle.a == ISL_CHANNEL_SELECT_ALPHA); + + /* But it doesn't matter what we render to that channel */ + swizzle.a = ISL_CHANNEL_SELECT_ALPHA; + + return swizzle; +} + void anv_pipeline_setup_l3_config(struct anv_pipeline *pipeline, bool needs_slm); |