#define __NVFX_STATE_H__
#include "pipe/p_state.h"
+#include "pipe/p_video_state.h"
#include "tgsi/tgsi_scan.h"
#include "nouveau/nouveau_statebuf.h"
#include "util/u_dynarray.h"
};
struct nvfx_vertex_program {
- struct pipe_shader_state pipe;
unsigned long long id;
- struct draw_vertex_shader *draw;
-
- boolean translated;
-
- struct pipe_clip_state ucp;
-
struct nvfx_vertex_program_exec *insns;
unsigned nr_insns;
struct nvfx_vertex_program_data *consts;
uint32_t ir;
uint32_t or;
- uint32_t clip_ctrl;
+ int clip_nr;
struct util_dynarray branch_relocs;
struct util_dynarray const_relocs;
};
+#define NVFX_VP_FAILED ((struct nvfx_vertex_program*)-1)
+
+struct nvfx_pipe_vertex_program {
+ struct pipe_shader_state pipe;
+ struct tgsi_shader_info info;
+
+ unsigned draw_elements;
+ boolean draw_no_elements;
+ struct draw_vertex_shader *draw_vs;
+ struct nvfx_vertex_program* draw_vp;
+
+ struct nvfx_vertex_program* vp;
+};
+
struct nvfx_fragment_program_data {
unsigned offset;
unsigned index;
};
struct nvfx_fragment_program {
- struct pipe_shader_state pipe;
- struct tgsi_shader_info info;
-
- boolean translated;
unsigned samplers;
unsigned point_sprite_control;
unsigned or;
+ unsigned coord_conventions;
uint32_t *insn;
int insn_len;
struct nvfx_fragment_program_data *consts;
unsigned nr_consts;
+ /* the slot at num_slots is for the sprite coordinate, if any */
unsigned num_slots; /* how many input semantics? */
- unsigned char slot_to_generic[8]; /* semantics */
- unsigned char slot_to_fp_input[8]; /* current assignment of slots for each used semantic */
- struct util_dynarray slot_relocations[8];
+ unsigned char slot_to_generic[10]; /* semantics */
+ unsigned char slot_to_fp_input[11]; /* current assignment of slots for each used semantic */
+ struct util_dynarray slot_relocations[11];
/* This is reset to progs on any relocation update, and decreases every time we
* move to a new prog due to a constant update
struct nvfx_fragment_program_bo* fpbo;
};
+struct nvfx_pipe_fragment_program {
+ struct pipe_shader_state pipe;
+ struct tgsi_shader_info info;
+
+ struct nvfx_fragment_program* fps[2];
+};
#endif