X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Ffreedreno%2Fir3%2Fir3_shader.h;h=e5410bf88b292da228ef8c2a0f62207a95b14d21;hb=c7811f56c205b113dd820034a99ff3aaa20af636;hp=89442cec1286c402309c44a1a198266b653456b5;hpb=82104c19f304a0e953172ad61d149640f0512fa0;p=mesa.git diff --git a/src/gallium/drivers/freedreno/ir3/ir3_shader.h b/src/gallium/drivers/freedreno/ir3/ir3_shader.h index 89442cec128..e5410bf88b2 100644 --- a/src/gallium/drivers/freedreno/ir3/ir3_shader.h +++ b/src/gallium/drivers/freedreno/ir3/ir3_shader.h @@ -69,14 +69,10 @@ struct ir3_shader_key { */ unsigned color_two_side : 1; unsigned half_precision : 1; - /* For rendering to alpha, we need a bit of special handling - * since the hw always takes gl_FragColor starting from x - * component, rather than figuring out to take the w component. - * We could be more clever and generate variants for other - * render target formats (ie. luminance formats are xxx1), but - * let's start with this and see how it goes: + /* used when shader needs to handle flat varyings (a4xx), + * for TGSI_INTERPOLATE_COLOR: */ - unsigned alpha : 1; + unsigned rasterflat : 1; }; uint32_t global; }; @@ -137,7 +133,7 @@ struct ir3_shader_variant { * to bary.f instructions */ uint8_t pos_regid; - bool frag_coord, frag_face; + bool frag_coord, frag_face, color0_mrt; /* varyings/outputs: */ unsigned outputs_count; @@ -182,6 +178,7 @@ struct ir3_shader_variant { * (not regid, because TGSI thinks in terms of vec4 registers, * not scalar registers) */ + unsigned first_driver_param; unsigned first_immediate; unsigned immediates_count; struct { @@ -210,11 +207,12 @@ struct ir3_shader { uint32_t vpsrepl[8]; }; +void * ir3_shader_assemble(struct ir3_shader_variant *v, uint32_t gpu_id); struct ir3_shader * ir3_shader_create(struct pipe_context *pctx, const struct tgsi_token *tokens, enum shader_t type); void ir3_shader_destroy(struct ir3_shader *shader); - +uint32_t ir3_shader_gpuid(struct ir3_shader *shader); struct ir3_shader_variant * ir3_shader_variant(struct ir3_shader *shader, struct ir3_shader_key key);