X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fisl%2Fisl_priv.h;h=710c5222ba18883fb934ccba0cafb9782d8af94b;hb=88c046a6d3228cc3a667cba96e4fa57c341ab162;hp=7b222594fd4c0f9ee5efac543b41531a7cfc2fb5;hpb=76fa7b16f474253356d3bf59adc91769dc51f184;p=mesa.git diff --git a/src/intel/isl/isl_priv.h b/src/intel/isl/isl_priv.h index 7b222594fd4..710c5222ba1 100644 --- a/src/intel/isl/isl_priv.h +++ b/src/intel/isl/isl_priv.h @@ -21,17 +21,26 @@ * IN THE SOFTWARE. */ -#pragma once +#ifndef ISL_PRIV_H +#define ISL_PRIV_H #include +#include +#include -#include "brw_device_info.h" +#include "dev/gen_device_info.h" #include "util/macros.h" #include "isl.h" #define isl_finishme(format, ...) \ - __isl_finishme(__FILE__, __LINE__, format, ##__VA_ARGS__) + do { \ + static bool reported = false; \ + if (!reported) { \ + __isl_finishme(__FILE__, __LINE__, format, ##__VA_ARGS__); \ + reported = true; \ + } \ + } while (0) void PRINTFLIKE(3, 4) UNUSED __isl_finishme(const char *file, int line, const char *fmt, ...); @@ -39,10 +48,7 @@ __isl_finishme(const char *file, int line, const char *fmt, ...); #define MIN(a, b) ((a) < (b) ? (a) : (b)) #define MAX(a, b) ((a) > (b) ? (a) : (b)) -static inline uint32_t -ffs(uint32_t n) { - return __builtin_ffs(n); -} +typedef void *(*isl_mem_copy_fn)(void *dest, const void *src, size_t n); static inline bool isl_is_pow2(uintmax_t n) @@ -77,6 +83,13 @@ isl_align_npot(uintmax_t n, uintmax_t a) return ((n + a - 1) / a) * a; } +static inline uintmax_t +isl_assert_div(uintmax_t n, uintmax_t a) +{ + assert(n % a == 0); + return n / a; +} + /** * Alignment must be a power of 2. */ @@ -102,6 +115,15 @@ isl_log2u(uint32_t n) return 31 - __builtin_clz(n); } +static inline uint32_t +isl_round_up_to_power_of_two(uint32_t value) +{ + if (value <= 1) + return value; + + return 1 << (32 - __builtin_clz(value - 1)); +} + static inline uint32_t isl_minify(uint32_t n, uint32_t levels) { @@ -140,31 +162,79 @@ isl_extent3d_el_to_sa(enum isl_format fmt, struct isl_extent3d extent_el) } void -isl_gen7_surf_fill_state_s(const struct isl_device *dev, void *state, - const struct isl_surf_fill_state_info *restrict info); - -void -isl_gen75_surf_fill_state_s(const struct isl_device *dev, void *state, - const struct isl_surf_fill_state_info *restrict info); -void -isl_gen8_surf_fill_state_s(const struct isl_device *dev, void *state, - const struct isl_surf_fill_state_info *restrict info); -void -isl_gen9_surf_fill_state_s(const struct isl_device *dev, void *state, - const struct isl_surf_fill_state_info *restrict info); - -void -isl_gen7_buffer_fill_state_s(void *state, - const struct isl_buffer_fill_state_info *restrict info); +_isl_memcpy_linear_to_tiled(uint32_t xt1, uint32_t xt2, + uint32_t yt1, uint32_t yt2, + char *dst, const char *src, + uint32_t dst_pitch, int32_t src_pitch, + bool has_swizzling, + enum isl_tiling tiling, + isl_memcpy_type copy_type); void -isl_gen75_buffer_fill_state_s(void *state, - const struct isl_buffer_fill_state_info *restrict info); +_isl_memcpy_tiled_to_linear(uint32_t xt1, uint32_t xt2, + uint32_t yt1, uint32_t yt2, + char *dst, const char *src, + int32_t dst_pitch, uint32_t src_pitch, + bool has_swizzling, + enum isl_tiling tiling, + isl_memcpy_type copy_type); void -isl_gen8_buffer_fill_state_s(void *state, - const struct isl_buffer_fill_state_info *restrict info); +_isl_memcpy_linear_to_tiled_sse41(uint32_t xt1, uint32_t xt2, + uint32_t yt1, uint32_t yt2, + char *dst, const char *src, + uint32_t dst_pitch, int32_t src_pitch, + bool has_swizzling, + enum isl_tiling tiling, + isl_memcpy_type copy_type); void -isl_gen9_buffer_fill_state_s(void *state, - const struct isl_buffer_fill_state_info *restrict info); +_isl_memcpy_tiled_to_linear_sse41(uint32_t xt1, uint32_t xt2, + uint32_t yt1, uint32_t yt2, + char *dst, const char *src, + int32_t dst_pitch, uint32_t src_pitch, + bool has_swizzling, + enum isl_tiling tiling, + isl_memcpy_type copy_type); + +/* This is useful for adding the isl_prefix to genX functions */ +#define __PASTE2(x, y) x ## y +#define __PASTE(x, y) __PASTE2(x, y) +#define isl_genX(x) __PASTE(isl_, genX(x)) + +#ifdef genX +# include "isl_genX_priv.h" +#else +# define genX(x) gen4_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen5_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen6_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen7_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen75_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen8_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen9_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen10_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen11_##x +# include "isl_genX_priv.h" +# undef genX +# define genX(x) gen12_##x +# include "isl_genX_priv.h" +# undef genX +#endif + +#endif /* ISL_PRIV_H */