i965/nir/vec4: Implement single-element "mov" operations
[mesa.git] / src / mesa / drivers / dri / i965 / brw_program.h
index 5328e3cbd074470ecfabb05b684a285f7eac8b96..eaa7e4e9a79870ff9722aec773b10b9661c04463 100644 (file)
  *  @{
  */
 
+enum PACKED gen6_gather_sampler_wa {
+   WA_SIGN = 1,      /* whether we need to sign extend */
+   WA_8BIT = 2,      /* if we have an 8bit format needing wa */
+   WA_16BIT = 4,     /* if we have a 16bit format needing wa */
+};
+
 /**
  * Sampler information needed by VS, WM, and GS program cache keys.
  */
@@ -68,40 +74,40 @@ struct brw_sampler_prog_key_data {
    /**
     * For Sandybridge, which shader w/a we need for gather quirks.
     */
-   uint8_t gen6_gather_wa[MAX_SAMPLERS];
+   enum gen6_gather_sampler_wa gen6_gather_wa[MAX_SAMPLERS];
 };
 
 
-struct brw_vec4_prog_key {
-   GLuint program_string_id;
+struct brw_vue_prog_key {
+   unsigned program_string_id;
 
    /**
     * True if at least one clip flag is enabled, regardless of whether the
     * shader uses clip planes or gl_ClipDistance.
     */
-   GLuint userclip_active:1;
+   bool userclip_active:1;
 
    /**
     * How many user clipping planes are being uploaded to the vertex shader as
     * push constants.
     */
-   GLuint nr_userclip_plane_consts:4;
-
-   GLuint clamp_vertex_color:1;
+   unsigned nr_userclip_plane_consts:4;
 
    struct brw_sampler_prog_key_data tex;
 };
 
 /** The program key for Vertex Shaders. */
 struct brw_vs_prog_key {
-   struct brw_vec4_prog_key base;
+   struct brw_vue_prog_key base;
 
    /*
     * Per-attribute workaround flags
     */
    uint8_t gl_attrib_wa_flags[VERT_ATTRIB_MAX];
 
-   GLuint copy_edgeflag:1;
+   bool copy_edgeflag:1;
+
+   bool clamp_vertex_color:1;
 
    /**
     * For pre-Gen6 hardware, a bitfield indicating which texture coordinates
@@ -111,36 +117,36 @@ struct brw_vs_prog_key {
     * these texture coordinates will need to be unconditionally included in
     * the VUE, even if they aren't written by the vertex shader.
     */
-   GLuint point_coord_replace:8;
+   uint8_t point_coord_replace;
 };
 
 /** The program key for Geometry Shaders. */
 struct brw_gs_prog_key
 {
-   struct brw_vec4_prog_key base;
+   struct brw_vue_prog_key base;
 
-   GLbitfield64 input_varyings;
+   uint64_t input_varyings;
 };
 
 /** The program key for Fragment/Pixel Shaders. */
 struct brw_wm_prog_key {
    uint8_t iz_lookup;
-   GLuint stats_wm:1;
-   GLuint flat_shade:1;
-   GLuint persample_shading:1;
-   GLuint persample_2x: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;
+   bool stats_wm:1;
+   bool flat_shade:1;
+   bool persample_shading:1;
+   bool persample_2x:1;
+   unsigned nr_color_regions:5;
+   bool replicate_alpha:1;
+   bool render_to_fbo:1;
+   bool clamp_fragment_color:1;
+   bool compute_pos_offset:1;
+   bool compute_sample_id:1;
+   unsigned line_aa:2;
+   bool high_quality_derivatives:1;
+
+   uint16_t drawable_height;
+   uint64_t input_slots_valid;
+   unsigned program_string_id;
    GLenum alpha_test_func;          /* < For Gen4/5 MRT alpha test */
    float alpha_test_ref;
 
@@ -149,12 +155,6 @@ struct brw_wm_prog_key {
 
 /** @} */
 
-enum gen6_gather_sampler_wa {
-   WA_SIGN = 1,      /* whether we need to sign extend */
-   WA_8BIT = 2,      /* if we have an 8bit format needing wa */
-   WA_16BIT = 4,     /* if we have a 16bit format needing wa */
-};
-
 #ifdef __cplusplus
 extern "C" {
 #endif