X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fintel%2Fvulkan%2Fanv_private.h;h=38554166570144100d5cbd57f96cdf5e1e092665;hb=700bebb958e93f4d472c383de62ced9db8e64bec;hp=9319564d0ccbd5e8a3630efcdaef639cb1d2079d;hpb=608d17b80e617b0052b148083d169d97e8f81ab3;p=mesa.git diff --git a/src/intel/vulkan/anv_private.h b/src/intel/vulkan/anv_private.h index 9319564d0cc..38554166570 100644 --- a/src/intel/vulkan/anv_private.h +++ b/src/intel/vulkan/anv_private.h @@ -43,7 +43,7 @@ #include "common/gen_device_info.h" #include "blorp/blorp.h" -#include "brw_compiler.h" +#include "compiler/brw_compiler.h" #include "util/macros.h" #include "util/list.h" #include "util/u_vector.h" @@ -67,9 +67,9 @@ struct gen_l3_config; #include #include "anv_entrypoints.h" -#include "brw_context.h" #include "isl/isl.h" +#include "common/gen_debug.h" #include "wsi_common.h" /* Allowing different clear colors requires us to perform a depth resolve at @@ -230,6 +230,8 @@ VkResult __vk_errorf(VkResult error, const char *file, int line, const char *for void __anv_finishme(const char *file, int line, const char *format, ...) anv_printflike(3, 4); +void __anv_perf_warn(const char *file, int line, const char *format, ...) + anv_printflike(3, 4); void anv_loge(const char *format, ...) anv_printflike(1, 2); void anv_loge_v(const char *format, va_list va); @@ -245,6 +247,18 @@ void anv_loge_v(const char *format, va_list va); } \ } while (0) +/** + * Print a perf warning message. Set INTEL_DEBUG=perf to see these. + */ +#define anv_perf_warn(format, ...) \ + do { \ + static bool reported = false; \ + if (!reported && unlikely(INTEL_DEBUG & DEBUG_PERF)) { \ + __anv_perf_warn(__FILE__, __LINE__, format, ##__VA_ARGS__); \ + reported = true; \ + } \ + } while (0) + /* A non-fatal assert. Useful for debugging. */ #ifdef DEBUG #define anv_assert(x) ({ \ @@ -255,28 +269,6 @@ void anv_loge_v(const char *format, va_list va); #define anv_assert(x) #endif -/** - * If a block of code is annotated with anv_validate, then the block runs only - * in debug builds. - */ -#ifdef DEBUG -#define anv_validate if (1) -#else -#define anv_validate if (0) -#endif - -#define stub_return(v) \ - do { \ - anv_finishme("stub %s", __func__); \ - return (v); \ - } while (0) - -#define stub() \ - do { \ - anv_finishme("stub %s", __func__); \ - return; \ - } while (0) - /** * A dynamically growable, circular buffer. Elements are added at head and * removed from tail. head and tail are free-running uint32_t indices and we @@ -386,7 +378,7 @@ struct anv_block_pool { }; /* Block pools are backed by a fixed-size 2GB memfd */ -#define BLOCK_POOL_MEMFD_SIZE (1ull << 32) +#define BLOCK_POOL_MEMFD_SIZE (1ul << 31) /* The center of the block pool is also the middle of the memfd. This may * change in the future if we decide differently for some reason. @@ -1921,6 +1913,13 @@ struct anv_framebuffer { }; struct anv_subpass { + uint32_t attachment_count; + + /** + * A pointer to all attachment references used in this subpass. + * Only valid if ::attachment_count > 0. + */ + VkAttachmentReference * attachments; uint32_t input_count; VkAttachmentReference * input_attachments; uint32_t color_count; @@ -2002,6 +2001,21 @@ void anv_dump_finish(void); void anv_dump_add_framebuffer(struct anv_cmd_buffer *cmd_buffer, struct anv_framebuffer *fb); +static inline uint32_t +anv_get_subpass_id(const struct anv_cmd_state * const cmd_state) +{ + /* This function must be called from within a subpass. */ + assert(cmd_state->pass && cmd_state->subpass); + + const uint32_t subpass_id = cmd_state->subpass - cmd_state->pass->subpasses; + + /* The id of this subpass shouldn't exceed the number of subpasses in this + * render pass minus 1. + */ + assert(subpass_id < cmd_state->pass->subpass_count); + return subpass_id; +} + #define ANV_DEFINE_HANDLE_CASTS(__anv_type, __VkType) \ \ static inline struct __anv_type * \