OLD | NEW |
---|---|
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" | 5 #include "gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa _intel.h" |
6 | 6 |
7 #include "base/logging.h" | 7 #include "base/logging.h" |
8 #include "gpu/command_buffer/service/framebuffer_manager.h" | 8 #include "gpu/command_buffer/service/framebuffer_manager.h" |
9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" | 9 #include "gpu/command_buffer/service/gles2_cmd_decoder.h" |
10 #include "ui/gl/gl_context.h" | 10 #include "ui/gl/gl_context.h" |
(...skipping 1352 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1363 vec4(float(0x80u | pe) / 255.0, 0, 0, 0)); | 1363 vec4(float(0x80u | pe) / 255.0, 0, 0, 0)); |
1364 } | 1364 } |
1365 } | 1365 } |
1366 } | 1366 } |
1367 \n#endif\n // DETECT_EDGES2 | 1367 \n#endif\n // DETECT_EDGES2 |
1368 | 1368 |
1369 \n#ifdef COMBINE_EDGES\n | 1369 \n#ifdef COMBINE_EDGES\n |
1370 void CombineEdges() { | 1370 void CombineEdges() { |
1371 ivec3 screenPosIBase = ivec3(ivec2(gl_FragCoord.xy) * 2, 0); | 1371 ivec3 screenPosIBase = ivec3(ivec2(gl_FragCoord.xy) * 2, 0); |
1372 vec3 screenPosBase = vec3(screenPosIBase); | 1372 vec3 screenPosBase = vec3(screenPosIBase); |
1373 uvec2 notBottomLeft = uvec2(screenPosIBase.xy != ivec2(0, 0)); | |
piman
2016/06/28 21:08:09
"screenPosIBase.xy != ivec2(0, 0)" is a boolean sc
dshwang
2016/06/29 10:35:56
sorry for obfuscated code, because I want to avoid
dshwang
2016/06/29 13:54:36
I actually wanted component wise comparison; notEq
| |
1373 uint packedEdgesArray[3 * 3]; | 1374 uint packedEdgesArray[3 * 3]; |
1374 | 1375 |
1375 // use only if it has the 'prev frame' flag:[sample * 255.0 - 127.5] | 1376 // use only if it has the 'prev frame' flag:[sample * 255.0 - 127.5] |
1376 //-> if it has the last bit flag (128), it's going to stay above 0 | 1377 //-> if it has the last bit flag (128), it's going to stay above 0 |
1377 uvec4 sampA = uvec4( | 1378 uvec4 sampA = uvec4( |
1378 textureGatherOffset(g_src0TextureFlt, | 1379 textureGatherOffset(g_src0TextureFlt, |
1379 screenPosBase.xy * g_OneOverScreenSize, | 1380 screenPosBase.xy * g_OneOverScreenSize, |
1380 ivec2(1, 0)) * 255.0 - 127.5); | 1381 ivec2(1, 0)) * 255.0 - 127.5); |
1381 uvec4 sampB = uvec4( | 1382 uvec4 sampB = uvec4( |
1382 textureGatherOffset(g_src0TextureFlt, | 1383 textureGatherOffset(g_src0TextureFlt, |
1383 screenPosBase.xy * g_OneOverScreenSize, | 1384 screenPosBase.xy * g_OneOverScreenSize, |
1384 ivec2(0, 1)) * 255.0 - 127.5); | 1385 ivec2(0, 1)) * 255.0 - 127.5); |
1385 uint sampC = uint( | 1386 uint sampC = uint( |
1386 texelFetchOffset(g_src0TextureFlt, screenPosIBase.xy, 0, | 1387 texelFetchOffset(g_src0TextureFlt, screenPosIBase.xy, 0, |
1387 ivec2(1, 1)).r * 255.0 - 127.5); | 1388 ivec2(1, 1)).r * 255.0 - 127.5); |
1388 | 1389 |
1389 packedEdgesArray[(0) * 3 + (0)] = 0u; | 1390 packedEdgesArray[(0) * 3 + (0)] = 0u; |
1390 packedEdgesArray[(1) * 3 + (0)] = sampA.w; | 1391 // The bottom-most edge of the texture is not edge. |
1391 packedEdgesArray[(2) * 3 + (0)] = sampA.z; | 1392 // Note: texelFetch() on out of range gives an undefined value. |
1393 packedEdgesArray[(1) * 3 + (0)] = sampA.w * notBottomLeft.y; | |
1394 packedEdgesArray[(2) * 3 + (0)] = sampA.z * notBottomLeft.y; | |
1392 packedEdgesArray[(1) * 3 + (1)] = sampA.x; | 1395 packedEdgesArray[(1) * 3 + (1)] = sampA.x; |
1393 packedEdgesArray[(2) * 3 + (1)] = sampA.y; | 1396 packedEdgesArray[(2) * 3 + (1)] = sampA.y; |
1394 packedEdgesArray[(0) * 3 + (1)] = sampB.w; | 1397 // The left-most edge of the texture is not edge. |
1395 packedEdgesArray[(0) * 3 + (2)] = sampB.x; | 1398 packedEdgesArray[(0) * 3 + (1)] = sampB.w * notBottomLeft.x; |
1399 packedEdgesArray[(0) * 3 + (2)] = sampB.x * notBottomLeft.x; | |
1396 packedEdgesArray[(1) * 3 + (2)] = sampB.y; | 1400 packedEdgesArray[(1) * 3 + (2)] = sampB.y; |
1397 packedEdgesArray[(2) * 3 + (2)] = sampC; | 1401 packedEdgesArray[(2) * 3 + (2)] = sampC; |
1398 | 1402 |
1399 uvec4 pixelsC = uvec4(packedEdgesArray[(1 + 0) * 3 + (1 + 0)], | 1403 uvec4 pixelsC = uvec4(packedEdgesArray[(1 + 0) * 3 + (1 + 0)], |
1400 packedEdgesArray[(1 + 1) * 3 + (1 + 0)], | 1404 packedEdgesArray[(1 + 1) * 3 + (1 + 0)], |
1401 packedEdgesArray[(1 + 0) * 3 + (1 + 1)], | 1405 packedEdgesArray[(1 + 0) * 3 + (1 + 1)], |
1402 packedEdgesArray[(1 + 1) * 3 + (1 + 1)]); | 1406 packedEdgesArray[(1 + 1) * 3 + (1 + 1)]); |
1403 uvec4 pixelsL = uvec4(packedEdgesArray[(0 + 0) * 3 + (1 + 0)], | 1407 uvec4 pixelsL = uvec4(packedEdgesArray[(0 + 0) * 3 + (1 + 0)], |
1404 packedEdgesArray[(0 + 1) * 3 + (1 + 0)], | 1408 packedEdgesArray[(0 + 1) * 3 + (1 + 0)], |
1405 packedEdgesArray[(0 + 0) * 3 + (1 + 1)], | 1409 packedEdgesArray[(0 + 0) * 3 + (1 + 1)], |
(...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1835 \n#ifdef OUT_FBO\n | 1839 \n#ifdef OUT_FBO\n |
1836 outColor = pixel; | 1840 outColor = pixel; |
1837 \n#else\n | 1841 \n#else\n |
1838 imageStore(outTexture, screenPosI, pixel); | 1842 imageStore(outTexture, screenPosI, pixel); |
1839 \n#endif\n | 1843 \n#endif\n |
1840 } | 1844 } |
1841 ); | 1845 ); |
1842 /* clang-format on */ | 1846 /* clang-format on */ |
1843 | 1847 |
1844 } // namespace gpu | 1848 } // namespace gpu |
OLD | NEW |