i965/nir/vec4: Implement single-element "mov" operations
[mesa.git] / src / mesa / drivers / dri / i965 / brw_wm.h
index 556b5aee672c94b225e966cc32c58e8b9db92609..0a8a97b2f5e61b5062e70bcbe08fc4e1e5aaaff1 100644 (file)
@@ -1,6 +1,6 @@
 /*
  Copyright (C) Intel Corp.  2006.  All Rights Reserved.
- Intel funded Tungsten Graphics (http://www.tungstengraphics.com) to
+ Intel funded Tungsten Graphics to
  develop this 3D driver.
 
  Permission is hereby granted, free of charge, to any person obtaining
@@ -26,7 +26,7 @@
  **********************************************************************/
  /*
   * Authors:
-  *   Keith Whitwell <keith@tungstengraphics.com>
+  *   Keith Whitwell <keithw@vmware.com>
   */
 
 
 #define AA_SOMETIMES 1
 #define AA_ALWAYS    2
 
-struct brw_wm_prog_key {
-   uint8_t iz_lookup;
-   GLuint stats_wm:1;
-   GLuint flat_shade:1;
-   GLuint nr_color_regions:5;
-   GLuint replicate_alpha:1;
-   GLuint render_to_fbo:1;
-   GLuint clamp_fragment_color:1;
-   GLuint compute_pos_offset:1;
-   GLuint compute_sample_id:1;
-   GLuint line_aa:2;
-   GLuint high_quality_derivatives:1;
-
-   GLushort drawable_height;
-   GLbitfield64 input_slots_valid;
-   GLuint program_string_id:32;
-   GLenum alpha_test_func;          /* < For Gen4/5 MRT alpha test */
-   float alpha_test_ref;
-
-   struct brw_sampler_prog_key_data tex;
-};
-
-struct brw_wm_compile {
-   struct brw_wm_prog_key key;
-   struct brw_wm_prog_data prog_data;
-
-   uint8_t source_depth_reg;
-   uint8_t source_w_reg;
-   uint8_t aa_dest_stencil_reg;
-   uint8_t dest_depth_reg;
-   uint8_t sample_pos_reg;
-   uint8_t barycentric_coord_reg[BRW_WM_BARYCENTRIC_INTERP_MODE_COUNT];
-   uint8_t nr_payload_regs;
-   GLuint source_depth_to_render_target:1;
-   GLuint runtime_check_aads_emit:1;
-
-   GLuint last_scratch;
-};
+#ifdef __cplusplus
+extern "C" {
+#endif
 
 /**
  * Compile a fragment shader.
@@ -102,24 +67,31 @@ struct brw_wm_compile {
  * Returns the final assembly and the program's size.
  */
 const unsigned *brw_wm_fs_emit(struct brw_context *brw,
-                               struct brw_wm_compile *c,
+                               void *mem_ctx,
+                               const struct brw_wm_prog_key *key,
+                               struct brw_wm_prog_data *prog_data,
                                struct gl_fragment_program *fp,
                                struct gl_shader_program *prog,
                                unsigned *final_assembly_size);
 
 GLboolean brw_link_shader(struct gl_context *ctx, struct gl_shader_program *prog);
 struct gl_shader *brw_new_shader(struct gl_context *ctx, GLuint name, GLuint type);
-struct gl_shader_program *brw_new_shader_program(struct gl_context *ctx, GLuint name);
 
 bool brw_color_buffer_write_enabled(struct brw_context *brw);
-bool do_wm_prog(struct brw_context *brw,
-               struct gl_shader_program *prog,
-               struct brw_fragment_program *fp,
-               struct brw_wm_prog_key *key);
+bool brw_codegen_wm_prog(struct brw_context *brw,
+                         struct gl_shader_program *prog,
+                         struct brw_fragment_program *fp,
+                         struct brw_wm_prog_key *key);
 void brw_wm_debug_recompile(struct brw_context *brw,
                             struct gl_shader_program *prog,
                             const struct brw_wm_prog_key *key);
 bool brw_wm_prog_data_compare(const void *a, const void *b);
-void brw_wm_prog_data_free(const void *in_prog_data);
+
+void
+brw_upload_wm_prog(struct brw_context *brw);
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
 
 #endif