#include "etnaviv_context.h"
#include "etnaviv_internal.h"
+#include "etnaviv_shader.h"
#include "pipe/p_compiler.h"
#include "pipe/p_shader_tokens.h"
/* unknown input property (XX_INPUT_COUNT, field UNK8) */
uint32_t input_count_unk8;
+
+ /* shader is larger than GPU instruction limit, thus needs icache */
+ bool needs_icache;
+
+ /* shader variants form a linked list */
+ struct etna_shader_variant *next;
+
+ /* replicated here to avoid passing extra ptrs everywhere */
+ struct etna_shader *shader;
+ struct etna_shader_key key;
+
+ struct etna_bo *bo; /* cached code memory bo handle (for icache) */
};
struct etna_varying {
/* each PS input is annotated with the VS output reg */
unsigned num_varyings;
struct etna_varying varyings[ETNA_NUM_INPUTS];
+ int pcoord_varying_comp_ofs;
};
-struct etna_shader_variant *
-etna_compile_shader(const struct etna_specs *specs, const struct tgsi_token *tokens);
+bool
+etna_compile_shader(struct etna_shader_variant *shader);
void
etna_dump_shader(const struct etna_shader_variant *shader);