/* * Copyright 2024 Alyssa Rosenzweig * SPDX-License-Identifier: MIT */ #pragma once #include #include #include "agx_pack.h" #include "shader_enums.h" struct nir_shader; struct nir_instr; /* Texture backend flags */ #define AGX_TEXTURE_FLAG_NO_CLAMP (1 << 0) /* Indicates that the sampler should be overriden to clamp to 0 instead of 1 */ #define AGX_TEXTURE_FLAG_CLAMP_TO_0 (1 << 1) /* Texel buffers lowered to (at most) 16384x16384 2D textures */ #define AGX_TEXTURE_BUFFER_WIDTH 16384 #define AGX_TEXTURE_BUFFER_MAX_HEIGHT 16384 #define AGX_TEXTURE_BUFFER_MAX_SIZE \ (AGX_TEXTURE_BUFFER_WIDTH * AGX_TEXTURE_BUFFER_MAX_HEIGHT) bool agx_nir_lower_texture_early(struct nir_shader *s, bool support_lod_bias); bool agx_nir_lower_texture(struct nir_shader *s); bool agx_nir_lower_multisampled_image_store(struct nir_shader *s); bool agx_nir_needs_texture_crawl(struct nir_instr *instr);