#ifndef H_ETNAVIV_TEXTURE
#define H_ETNAVIV_TEXTURE
-#include <etnaviv_drmif.h>
+#include "drm/etnaviv_drmif.h"
#include "pipe/p_context.h"
#include "pipe/p_state.h"
-#include "hw/state_3d.xml.h"
-
-struct etna_sampler_state {
- struct pipe_sampler_state base;
-
- /* sampler offset +4*sampler, interleave when committing state */
- uint32_t TE_SAMPLER_CONFIG0;
- uint32_t TE_SAMPLER_CONFIG1;
- uint32_t TE_SAMPLER_LOD_CONFIG;
- unsigned min_lod, max_lod;
-};
-
-static inline struct etna_sampler_state *
-etna_sampler_state(struct pipe_sampler_state *samp)
-{
- return (struct etna_sampler_state *)samp;
-}
-
-struct etna_sampler_view {
- struct pipe_sampler_view base;
-
- /* sampler offset +4*sampler, interleave when committing state */
- uint32_t TE_SAMPLER_CONFIG0;
- uint32_t TE_SAMPLER_CONFIG0_MASK;
- uint32_t TE_SAMPLER_CONFIG1;
- uint32_t TE_SAMPLER_SIZE;
- uint32_t TE_SAMPLER_LOG_SIZE;
- uint32_t TE_SAMPLER_ASTC0;
- struct etna_reloc TE_SAMPLER_LOD_ADDR[VIVS_TE_SAMPLER_LOD_ADDR__LEN];
- unsigned min_lod, max_lod; /* 5.5 fixp */
+struct etna_context;
+struct etna_sampler_ts {
+ unsigned enable:1;
+ unsigned mode:1;
uint32_t TS_SAMPLER_CONFIG;
struct etna_reloc TS_SAMPLER_STATUS_BASE;
uint32_t TS_SAMPLER_CLEAR_VALUE;
uint32_t TS_SAMPLER_CLEAR_VALUE2;
};
-static inline struct etna_sampler_view *
-etna_sampler_view(struct pipe_sampler_view *view)
-{
- return (struct etna_sampler_view *)view;
-}
-
+/* Initialize texture methods for context. */
void
etna_texture_init(struct pipe_context *pctx);
struct etna_resource *
etna_texture_handle_incompatible(struct pipe_context *pctx, struct pipe_resource *prsc);
+/* Create bit field that specifies which samplers are active and thus need to be
+ * programmed
+ * 32 bits is enough for 32 samplers. As far as I know this is the upper bound
+ * supported on any Vivante hw
+ * up to GC4000.
+ */
+uint32_t
+active_samplers_bits(struct etna_context *ctx);
+
+/* update TS / cache for a sampler if required */
+void
+etna_update_sampler_source(struct pipe_sampler_view *view, int num);
+
#endif