Merge remote branch 'origin/master' into nv50-compiler
[mesa.git] / src / gallium / winsys / r600 / drm / radeon_priv.h
index 469a5dce012d8d3dc8552cbad8430734a450860c..84e552ba4d3b1c2b766a28c2f095e8bcc3b536d8 100644 (file)
@@ -30,26 +30,38 @@ struct radeon_ctx;
  * radeon functions
  */
 typedef int (*radeon_state_pm4_t)(struct radeon_state *state);
+struct radeon_register {
+       unsigned                        offset;
+       unsigned                        need_reloc;
+       unsigned                        bo_id;
+       char                            name[64];
+};
 
-struct radeon_type {
-       const u32                       *header_pm4;
-       const u32                       header_cpm4;
-       const u32                       *state_pm4;
-       const u32                       state_cpm4;
-       const u32                       flush_flags;
-       const u32                       dirty_flags;
+struct radeon_sub_type {
+       int                             shader_type;
+       const struct radeon_register    *regs;
+       unsigned                        nstates;
 };
 
-typedef int (*radeon_ctx_bo_flush_t)(struct radeon_ctx *ctx, struct radeon_bo *bo, u32 flags, u32 *placement);
+struct radeon_stype_info {
+       unsigned                        stype;
+       unsigned                        num;
+       unsigned                        stride;
+       radeon_state_pm4_t              pm4;
+       struct radeon_sub_type          reginfo[R600_SHADER_MAX];
+       unsigned                        base_id;
+       unsigned                        npm4;
+};
 
 struct radeon {
        int                             fd;
        int                             refcount;
        unsigned                        device;
        unsigned                        family;
-       unsigned                        nstate;
-       const struct radeon_type        *type;
-       radeon_ctx_bo_flush_t           bo_flush;
+       unsigned                        nstype;
+       unsigned                        nstate_per_shader;
+       unsigned                        *state_type_id;
+       struct radeon_stype_info        *stype;
 };
 
 extern struct radeon *radeon_new(int fd, unsigned device);
@@ -57,12 +69,6 @@ extern struct radeon *radeon_incref(struct radeon *radeon);
 extern struct radeon *radeon_decref(struct radeon *radeon);
 extern unsigned radeon_family_from_device(unsigned device);
 extern int radeon_is_family_compatible(unsigned family1, unsigned family2);
-extern int radeon_reg_id(struct radeon *radeon, unsigned offset, unsigned *typeid, unsigned *stateid, unsigned *id);
-extern unsigned radeon_type_from_id(struct radeon *radeon, unsigned id);
-
-int radeon_ctx_draw(struct radeon_ctx *ctx);
-int radeon_ctx_reloc(struct radeon_ctx *ctx, struct radeon_bo *bo,
-                       unsigned id, unsigned *placement);
 
 /*
  * r600/r700 context functions
@@ -79,6 +85,7 @@ extern int radeon_state_register_set(struct radeon_state *state, unsigned offset
 extern struct radeon_state *radeon_state_duplicate(struct radeon_state *state);
 extern int radeon_state_replace_always(struct radeon_state *ostate, struct radeon_state *nstate);
 extern int radeon_state_pm4_generic(struct radeon_state *state);
+extern int radeon_state_reloc(struct radeon_state *state, unsigned id, unsigned bo_id);
 
 /*
  * radeon draw functions