X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;ds=sidebyside;f=src%2Fgallium%2Fdrivers%2Fetnaviv%2Fetnaviv_compiler.h;h=48b1b21875056b6ddd6a5ad64fb74debdfbca542;hb=e4ca1d64565b4d665bcaf5d08922bfbe1d920e7a;hp=2a3b4f4f4ee15f1cc3797d74766a51cefefc4d60;hpb=59b459ac17aedb971175d02c10b059216dec6e95;p=mesa.git diff --git a/src/gallium/drivers/etnaviv/etnaviv_compiler.h b/src/gallium/drivers/etnaviv/etnaviv_compiler.h index 2a3b4f4f4ee..48b1b218750 100644 --- a/src/gallium/drivers/etnaviv/etnaviv_compiler.h +++ b/src/gallium/drivers/etnaviv/etnaviv_compiler.h @@ -29,6 +29,7 @@ #include "etnaviv_context.h" #include "etnaviv_internal.h" +#include "etnaviv_shader.h" #include "pipe/p_compiler.h" #include "pipe/p_shader_tokens.h" @@ -92,6 +93,18 @@ struct etna_shader_variant { /* 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 { @@ -105,10 +118,11 @@ struct etna_shader_link_info { /* 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);