Merge branch '7.8'
[mesa.git] / src / mesa / drivers / dri / r300 / compiler / radeon_code.h
index 75069e841e3ef84f86845bdb72ab3514e1de77d9..27274f07122d32b5985103d3ce387804e7ba4073 100644 (file)
@@ -59,7 +59,9 @@ enum {
        RC_STATE_SHADOW_AMBIENT = 0,
 
        RC_STATE_R300_WINDOW_DIMENSION,
-       RC_STATE_R300_TEXRECT_FACTOR
+       RC_STATE_R300_TEXRECT_FACTOR,
+       RC_STATE_R300_VIEWPORT_SCALE,
+       RC_STATE_R300_VIEWPORT_OFFSET
 };
 
 struct rc_constant {
@@ -105,6 +107,18 @@ typedef enum {
        RC_COMPARE_FUNC_ALWAYS
 } rc_compare_func;
 
+/**
+ * Coordinate wrapping modes.
+ *
+ * These are not quite the same as their GL counterparts yet.
+ */
+typedef enum {
+       RC_WRAP_NONE = 0,
+       RC_WRAP_REPEAT,
+       RC_WRAP_MIRRORED_REPEAT,
+       RC_WRAP_MIRRORED_CLAMP
+} rc_wrap_mode;
+
 /**
  * Stores state that influences the compilation of a fragment program.
  */
@@ -125,11 +139,28 @@ struct r300_fragment_program_external_state {
                 * this field specifies the compare function.
                 *
                 * Otherwise, this field is \ref RC_COMPARE_FUNC_NEVER (aka 0).
-                *
-                * Otherwise, this field is 0.
                 * \sa rc_compare_func
                 */
                unsigned texture_compare_func : 3;
+
+               /**
+                * If the sampler needs to fake NPOT, this field is set.
+                */
+               unsigned fake_npot : 1;
+
+               /**
+                * If the sampler will recieve non-normalized coords,
+                * this field is set.
+                */
+               unsigned non_normalized_coords : 1;
+
+               /**
+                * This field specifies wrapping modes for the sampler.
+                *
+                * If this field is \ref RC_WRAP_NONE (aka 0), no wrapping maths
+                * will be performed on the coordinates.
+                */
+               unsigned wrap_mode : 2;
        } unit[16];
 };
 
@@ -182,6 +213,8 @@ struct r500_fragment_program_code {
        int inst_end; /* Number of instructions - 1; also, last instruction to be executed */
 
        int max_temp_idx;
+
+       uint32_t us_fc_ctrl;
 };
 
 struct rX00_fragment_program_code {