[Mesa-dev] [PATCH 08/11] swr: [rasterizer core] centroid correction
Tim Rowley
timothy.o.rowley at intel.com
Mon Jul 18 17:10:17 UTC 2016
---
.../drivers/swr/rasterizer/core/backend.cpp | 26 ++++++++++++++--------
1 file changed, 17 insertions(+), 9 deletions(-)
diff --git a/src/gallium/drivers/swr/rasterizer/core/backend.cpp b/src/gallium/drivers/swr/rasterizer/core/backend.cpp
index b492810..5d83baf 100644
--- a/src/gallium/drivers/swr/rasterizer/core/backend.cpp
+++ b/src/gallium/drivers/swr/rasterizer/core/backend.cpp
@@ -513,15 +513,12 @@ void BackendSingleSample(DRAW_CONTEXT *pDC, uint32_t workerId, uint32_t x, uint3
RDTSC_START(BEBarycentric);
CalcPixelBarycentrics(coeffs, psContext);
- if(T::bCentroidPos)
- {
- // for 1x case, centroid is pixel center
- psContext.vX.centroid = psContext.vX.center;
- psContext.vY.centroid = psContext.vY.center;
- psContext.vI.centroid = psContext.vI.center;
- psContext.vJ.centroid = psContext.vJ.center;
- psContext.vOneOverW.centroid = psContext.vOneOverW.center;
- }
+ // for 1x case, centroid is pixel center
+ psContext.vX.centroid = psContext.vX.center;
+ psContext.vY.centroid = psContext.vY.center;
+ psContext.vI.centroid = psContext.vI.center;
+ psContext.vJ.centroid = psContext.vJ.center;
+ psContext.vOneOverW.centroid = psContext.vOneOverW.center;
// interpolate and quantize z
psContext.vZ = vplaneps(coeffs.vZa, coeffs.vZb, coeffs.vZc, psContext.vI.center, psContext.vJ.center);
@@ -715,6 +712,11 @@ void BackendSampleRate(DRAW_CONTEXT *pDC, uint32_t workerId, uint32_t x, uint32_
CalcCentroidBarycentrics(coeffs, psContext, psContext.vX.UL, psContext.vY.UL);
RDTSC_STOP(BEBarycentric, 0, 0);
}
+ else
+ {
+ psContext.vX.centroid = psContext.vX.sample;
+ psContext.vY.centroid = psContext.vY.sample;
+ }
for(uint32_t sample = 0; sample < T::MultisampleT::numSamples; sample++)
{
@@ -925,9 +927,15 @@ void BackendPixelRate(DRAW_CONTEXT *pDC, uint32_t workerId, uint32_t x, uint32_t
psContext.vX.centroid = _simd_add_ps(psContext.vX.UL, _simd_set1_ps(0.5f));
psContext.vY.centroid = _simd_add_ps(psContext.vY.UL, _simd_set1_ps(0.5f));
}
+
CalcCentroidBarycentrics(coeffs, psContext, psContext.vX.UL, psContext.vY.UL);
RDTSC_STOP(BEBarycentric, 0, 0);
}
+ else
+ {
+ psContext.vX.centroid = _simd_add_ps(psContext.vX.UL, _simd_set1_ps(0.5f));
+ psContext.vY.centroid = _simd_add_ps(psContext.vY.UL, _simd_set1_ps(0.5f));
+ }
if(T::bForcedSampleCount)
{
--
1.9.1
More information about the mesa-dev
mailing list