Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(207)

Unified Diff: gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc

Issue 2106933002: gpu, cmaa: bottom to top is always y-direction. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
diff --git a/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
index a10eb1174f8dfa34c6dceb0be6cabefc858c6e3c..c71fd744f380244fe7597f43c0b6174fd616d788 100644
--- a/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
+++ b/gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc
@@ -805,17 +805,17 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s1_[] =
// how .rgba channels from the edge texture maps to pixel edges:
//
- // A - 0x08
+ // A - 0x02
// |¯¯¯¯¯¯¯¯¯|
// | |
// 0x04 - B | pixel | R - 0x01
// | |
// |_________|
- // G - 0x02
+ // G - 0x08
//
- // (A - there's an edge between us and a pixel above us)
+ // (A - there's an edge between us and a pixel at the bottom)
// (R - there's an edge between us and a pixel to the right)
- // (G - there's an edge between us and a pixel at the bottom)
+ // (G - there's an edge between us and a pixel above us)
// (B - there's an edge between us and a pixel to the left)
// Expecting values of 1 and 0 only!
@@ -916,24 +916,28 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s1_[] =
uint maskRight = uint(0);
uint bitsContinueRight = uint(0);
{
- // Horizontal (vertical is the same, just rotated 90º
- // counter-clockwise)
+ // Horizontal (vertical is the same, just rotated 90º counter-clockwise)
// Inverted Z case: // Normal Z case:
// __ // __
// X| // X|
// -- // --
//
+ // Vertical
+ // Inverted Z case: // Normal Z case:
+ // | // |
+ // -- // --
+ // X| // |X
uint maskTraceLeft = uint(0);
uint maskTraceRight = uint(0);
uint maskStopLeft = uint(0);
uint maskStopRight = uint(0);
if (horizontal) {
if (invertedZShape) {
- maskTraceLeft = 0x02u; // tracing bottom edge
- maskTraceRight = 0x08u; // tracing top edge
+ maskTraceLeft = 0x08u; // tracing bottom edge
+ maskTraceRight = 0x02u; // tracing top edge
} else {
- maskTraceLeft = 0x08u; // tracing top edge
- maskTraceRight = 0x02u; // tracing bottom edge
+ maskTraceLeft = 0x02u; // tracing top edge
+ maskTraceRight = 0x08u; // tracing bottom edge
}
maskStopLeft = 0x01u; // stop on right edge
maskStopRight = 0x04u; // stop on left edge
@@ -945,8 +949,8 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s1_[] =
maskTraceLeft = 0x04u; // tracing left edge
maskTraceRight = 0x01u; // tracing right edge
}
- maskStopLeft = 0x08u; // stop on top edge
- maskStopRight = 0x02u; // stop on bottom edge
+ maskStopLeft = 0x02u; // stop on top edge
+ maskStopRight = 0x08u; // stop on bottom edge
}
maskLeft = maskTraceLeft | maskStopLeft;
@@ -990,8 +994,8 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s1_[] =
int lineLengthLeft = 0;
int lineLengthRight = 0;
- ivec2 stepRight = (horizontal) ? (ivec2(1, 0)) : (ivec2(0, -1));
- vec2 blendDir = (horizontal) ? (vec2(0, -1)) : (vec2(-1, 0));
+ ivec2 stepRight = (horizontal) ? (ivec2(1, 0)) : (ivec2(0, 1));
+ vec2 blendDir = (horizontal) ? (vec2(0, -1)) : (vec2(1, 0));
FindLineLength(lineLengthLeft, lineLengthRight, screenPos,
horizontal, invertedZShape, stepRight);
@@ -1021,7 +1025,7 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s1_[] =
totalLength;
m = saturate(m);
float k = m - ((i > 0) ? 1.0 : 0.0);
- k = (invertedZShape) ? (-k) : (k);
+ k = (invertedZShape) ? (k) : (-k);
vec4 color = textureLod(g_screenTexture,
(pixelPosFlt + blendDir * k) * pixelSize,
@@ -1482,9 +1486,9 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
continue;
float fromRight = edgesFlt.r;
- float fromBelow = edgesFlt.g;
+ float fromAbove = edgesFlt.g;
float fromLeft = edgesFlt.b;
- float fromAbove = edgesFlt.a;
+ float fromBelow = edgesFlt.a;
vec4 xFroms = vec4(fromBelow, fromAbove, fromRight, fromLeft);
@@ -1567,7 +1571,7 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
}
if (fromAboveWeight > 0.0) {
vec3 pixelT = texelFetchOffset(g_screenTexture, screenPosI.xy, 0,
- ivec2(0, -1)).rgb;
+ ivec2(0, 1)).rgb;
color.rgb += fromAboveWeight * pixelT;
}
if (fromRightWeight > 0.0) {
@@ -1577,7 +1581,7 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
}
if (fromBelowWeight > 0.0) {
vec3 pixelB = texelFetchOffset(g_screenTexture, screenPosI.xy, 0,
- ivec2(0, 1)).rgb;
+ ivec2(0, -1)).rgb;
color.rgb += fromBelowWeight * pixelB;
}
@@ -1598,21 +1602,21 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
if (numberOfEdges == 2.0) {
uint packedEdgesL = packedEdgesArray[(0 + _x) * 4 + (1 + _y)];
- uint packedEdgesT = packedEdgesArray[(1 + _x) * 4 + (0 + _y)];
+ uint packedEdgesB = packedEdgesArray[(1 + _x) * 4 + (0 + _y)];
uint packedEdgesR = packedEdgesArray[(2 + _x) * 4 + (1 + _y)];
- uint packedEdgesB = packedEdgesArray[(1 + _x) * 4 + (2 + _y)];
+ uint packedEdgesT = packedEdgesArray[(1 + _x) * 4 + (2 + _y)];
bool isHorizontalA = ((packedEdgesC) == (0x01u | 0x02u)) &&
- ((packedEdgesR & (0x01u | 0x08u)) == (0x08u));
+ ((packedEdgesR & 0x08u) == 0x08u);
bool isHorizontalB = ((packedEdgesC) == (0x01u | 0x08u)) &&
- ((packedEdgesR & (0x01u | 0x02u)) == (0x02u));
+ ((packedEdgesR & 0x02u) == 0x02u);
bool isHCandidate = isHorizontalA || isHorizontalB;
- bool isVerticalA = ((packedEdgesC) == (0x08u | 0x01u)) &&
- ((packedEdgesT & (0x08u | 0x04u)) == (0x04u));
- bool isVerticalB = ((packedEdgesC) == (0x08u | 0x04u)) &&
- ((packedEdgesT & (0x08u | 0x01u)) == (0x01u));
+ bool isVerticalA = ((packedEdgesC) == (0x02u | 0x04u)) &&
+ ((packedEdgesT & 0x01u) == 0x01u);
+ bool isVerticalB = ((packedEdgesC) == (0x01u | 0x02u)) &&
+ ((packedEdgesT & 0x04u) == 0x04u);
bool isVCandidate = isVerticalA || isVerticalB;
bool isCandidate = isHCandidate || isVCandidate;
@@ -1639,7 +1643,7 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
} else {
packedEdgesM1P0 = packedEdgesB;
packedEdgesP1P0 = packedEdgesT;
- offsetC = ivec2(0, -2);
+ offsetC = ivec2(0, 2);
}
uvec4 edgesM1P0 = UnpackEdge(packedEdgesM1P0);
@@ -1661,17 +1665,12 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
arg4 = true;
} else {
// Reuse the same code for vertical (used for horizontal above)
- // but rotate input data 90º counter-clockwise, so that:
- // left becomes bottom
- // top becomes left
- // right becomes top
- // bottom becomes right
-
- // we also have to rotate edges, thus .argb
- arg0 = uvec4(edges.argb);
- arg1 = edgesM1P0.argb;
- arg2 = edgesP1P0.argb;
- arg3 = edgesP2P0.argb;
+ // but rotate input data 90º counter-clockwise. See FindLineLength()
+ // e.g. arg0.r (new top) must be mapped to edges.g (old top)
+ arg0 = uvec4(edges.gbar);
+ arg1 = edgesM1P0.gbar;
+ arg2 = edgesP1P0.gbar;
+ arg3 = edgesP2P0.gbar;
arg4 = false;
}
@@ -1682,10 +1681,11 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
uvec4 _edgesP1P0 = arg2;
uvec4 _edgesP2P0 = arg3;
bool horizontal = arg4;
- // Inverted Z case:
- // __
+
+ // Normal Z case:
+ // __
// X|
- // ¯¯
+ // ¯¯
bool isInvertedZ = false;
bool isNormalZ = false;
{
@@ -1704,14 +1704,14 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
// and at least one of these need to be there
\n#endif\n
if (isZShape > 0u) {
- isInvertedZ = true;
+ isNormalZ = true;
}
}
- // Normal Z case:
- // __
+ // Inverted Z case:
+ // __
// X|
- // ¯¯
+ // ¯¯
{
\n#ifndef SETTINGS_ALLOW_SHORT_Zs\n
uint isZShape = _edges.r * _edges.a * _edgesM1P0.a *
@@ -1728,7 +1728,7 @@ const char ApplyFramebufferAttachmentCMAAINTELResourceManager::cmaa_frag_s2_[] =
\n#endif\n
if (isZShape > 0u) {
- isNormalZ = true;
+ isInvertedZ = true;
}
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698