i965: Fix texture border color on Broadwell.
authorKenneth Graunke <kenneth@whitecape.org>
Tue, 22 Jan 2013 20:20:31 +0000 (12:20 -0800)
committerKenneth Graunke <kenneth@whitecape.org>
Mon, 2 Dec 2013 21:25:52 +0000 (13:25 -0800)
The Gen7 sampler state code still works.  Increasing the alignment to
64 bytes makes bit 5 zero, which is good because it's now reserved.

Since we don't use the new filter bits, we can leave those as zero too,
which means we don't need to update the code to update the pointer.
(We probably should anyway, for clarity, but alas, another day.)

Signed-off-by: Kenneth Graunke <kenneth@whitecape.org>
Reviewed-by: Eric Anholt <eric@anholt.net>
src/mesa/drivers/dri/i965/brw_wm_sampler_state.c

index ab83419114aa1cff33c414400d2ebb9219e25f09..bacc769ffb00ff42d7a4b266d35d4abf7d0b884f 100644 (file)
@@ -143,7 +143,17 @@ upload_default_color(struct brw_context *brw,
    if (firstImage->_BaseFormat == GL_RGB)
       color[3] = 1.0;
 
-   if (brw->gen == 5 || brw->gen == 6) {
+   if (brw->gen >= 8) {
+      /* On Broadwell, the border color is represented as four 32-bit floats,
+       * integers, or unsigned values, interpreted according to the surface
+       * format.  This matches the sampler->BorderColor union exactly.  Since
+       * we use floats both here and in the above reswizzling code, we preserve
+       * the original bit pattern.  So we actually handle all three formats.
+       */
+      float *sdc = brw_state_batch(brw, AUB_TRACE_SAMPLER_DEFAULT_COLOR,
+                                   4 * 4, 64, sdc_offset);
+      COPY_4FV(sdc, color);
+   } else if (brw->gen == 5 || brw->gen == 6) {
       struct gen5_sampler_default_color *sdc;
 
       sdc = brw_state_batch(brw, AUB_TRACE_SAMPLER_DEFAULT_COLOR,