X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fgallium%2Fdrivers%2Fr300%2Fr300_vs.h;h=56bcc3b70b8e6f69982a182ef0eb201c5a01dd42;hb=3da70606b3af1e907d56666d199957b6da0c73fe;hp=2a4ce315e3213c06f85244d9ddffd8e381e95538;hpb=eeb7e04da64fdae3a40b1afdcde71dcded2481f3;p=mesa.git diff --git a/src/gallium/drivers/r300/r300_vs.h b/src/gallium/drivers/r300/r300_vs.h index 2a4ce315e32..56bcc3b70b8 100644 --- a/src/gallium/drivers/r300/r300_vs.h +++ b/src/gallium/drivers/r300/r300_vs.h @@ -1,5 +1,6 @@ /* * Copyright 2009 Corbin Simpson + * Copyright 2009 Marek Olšák * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), @@ -25,30 +26,48 @@ #include "pipe/p_state.h" #include "tgsi/tgsi_scan.h" - #include "radeon_code.h" +#include "r300_context.h" +#include "r300_shader_semantics.h" + struct r300_context; struct r300_vertex_shader { /* Parent class */ struct pipe_shader_state state; + struct tgsi_shader_info info; + struct r300_shader_semantics outputs; + struct r300_vap_output_state vap_out; + + /* Whether the shader was replaced by a dummy one due to a shader + * compilation failure. */ + boolean dummy; + + /* Numbers of constants for each type. */ + unsigned externals_count; + unsigned immediates_count; - /* Fallback shader, because Draw has issues */ - struct draw_vertex_shader* draw; + /* Stream locations for SWTCL or if TCL is bypassed. */ + int stream_loc_notcl[16]; - /* Has this shader been translated yet? */ - boolean translated; + /* Output stream location for WPOS. */ + int wpos_tex_output; + /* HWTCL-specific. */ /* Machine code (if translated) */ struct r300_vertex_program_code code; -}; - -extern struct r300_vertex_program_code r300_passthrough_vertex_shader; + /* SWTCL-specific. */ + void *draw_vs; +}; void r300_translate_vertex_shader(struct r300_context* r300, - struct r300_vertex_shader* vs); + struct r300_vertex_shader* vs, + const struct tgsi_token *tokens); + +/* Return TRUE if VAP (hwfmt) needs to be re-emitted. */ +boolean r300_vertex_shader_setup_wpos(struct r300_context* r300); #endif /* R300_VS_H */