|
|
Descriptiongpu, cmaa: don't blend the rightmost and topmost edges.
texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height))
gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel,
which is an undefiend value. So DETECT_EDGES2 can mislead the right most
edge is dominant edge after comparing the undefined value and the right most
pixel.
This CL fixes parts of 3 WebGL conformance tests
https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multisample-corruption.html
https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fragcoord-multisampling-bug.html
https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premultiplyalpha-test.html
BUG=535198
TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders"
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel
Committed: https://crrev.com/6da3ecce0e3397264b9412efadef70ede93e8ba8
Cr-Commit-Position: refs/heads/master@{#402890}
Patch Set 1 #
Total comments: 3
Patch Set 2 : use notEqual for component wise comparison #Messages
Total messages: 21 (8 generated)
Description was changed from ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" ========== to ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ==========
Description was changed from ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. This CL fixes parts of 3 WebGL conformance tests https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multis... https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fra... https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premulti... BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ==========
dongseong.hwang@intel.com changed reviewers: + adrian.belgun@intel.com, piman@chromium.org
piman@ could you review? It's the 2nd CL of https://bugs.chromium.org/p/chromium/issues/detail?id=535198#c16
lgtm
https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... File gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc (right): https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc:1259: ivec2((screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)); Actually, going back from the next CL, I think I have the same comment here. "(screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)" is a scalar boolean, so notTopRight.x == notTopRight.y - is that what you want?
Thank you for reviewing. I explained the intention below. https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... File gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc (right): https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc:1259: ivec2((screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)); On 2016/06/28 21:09:38, piman wrote: > Actually, going back from the next CL, I think I have the same comment here. > "(screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)" is a scalar boolean, so > notTopRight.x == notTopRight.y - is that what you want? I explain this code is introduced to avoid "if statement" in https://codereview.chromium.org/2103893003/ The shader fetches data one pixel above the current pixel. If current pixel is (_, height - 1), the shader must avoid storing above pixel. The intuitive alternative of this code would be // in "if (bool(packedVals[(3) * 6 + (2)]))" case uvec4 dominant_edges = PruneNonDominantEdges(edges); // The rightmost edge of the texture is not edge. if (screenPosI.y == (textureSize(g_src0Texture4Uint, 0).y - 1) dominant_edges = uvec4(dominant_edges.x, 0, dominant_edges.zw); uint pe = PackEdge(dominant_edges); I want to avoid using "if statement", so replace "if" to multiplying. WDYT?
https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... File gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc (right): https://codereview.chromium.org/2110543002/diff/1/gpu/command_buffer/service/... gpu/command_buffer/service/gles2_cmd_apply_framebuffer_attachment_cmaa_intel.cc:1259: ivec2((screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)); On 2016/06/28 21:09:38, piman wrote: > Actually, going back from the next CL, I think I have the same comment here. > "(screenPosI + 1) != textureSize(g_src0Texture4Uint, 0)" is a scalar boolean, so > notTopRight.x == notTopRight.y - is that what you want? oh my bad. I actually want "notEqual((screenPosI + 1), textureSize(g_src0Texture4Uint, 0))". Previous bug code fixes the webgl conformance test because the texture size in tests is 2x2 or 1x1. I updated this CL to use notEqual for component wise comparison, instead of scalar boolean
lgtm
lgtm
lgtm
The CQ bit was checked by dongseong.hwang@intel.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by dongseong.hwang@intel.com
The CQ bit was checked by dongseong.hwang@intel.com
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Message was sent while issue was closed.
Description was changed from ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. This CL fixes parts of 3 WebGL conformance tests https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multis... https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fra... https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premulti... BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. This CL fixes parts of 3 WebGL conformance tests https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multis... https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fra... https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premulti... BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ==========
Message was sent while issue was closed.
Committed patchset #2 (id:20001)
Message was sent while issue was closed.
CQ bit was unchecked.
Message was sent while issue was closed.
Description was changed from ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. This CL fixes parts of 3 WebGL conformance tests https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multis... https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fra... https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premulti... BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel ========== to ========== gpu, cmaa: don't blend the rightmost and topmost edges. texelFetch() on out of range (i.e. outside of x = [0, width) or y = [0, height)) gives an undefined value. DETECT_EDGES2 pass fetches (width, _) or (_, height) texel, which is an undefiend value. So DETECT_EDGES2 can mislead the right most edge is dominant edge after comparing the undefined value and the right most pixel. This CL fixes parts of 3 WebGL conformance tests https://www.khronos.org/registry/webgl/sdk/tests/conformance/rendering/multis... https://www.khronos.org/registry/webgl/sdk/tests/conformance/glsl/bugs/gl-fra... https://www.khronos.org/registry/webgl/sdk/tests/conformance/context/premulti... BUG=535198 TEST=Run a WebGL app with Chrome started with "--enable-cmaa-shaders" CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_optional_gpu_tests_rel;tryserver.chromium.mac:mac_optional_gpu_tests_rel;tryserver.chromium.win:win_optional_gpu_tests_rel Committed: https://crrev.com/6da3ecce0e3397264b9412efadef70ede93e8ba8 Cr-Commit-Position: refs/heads/master@{#402890} ==========
Message was sent while issue was closed.
Patchset 2 (id:??) landed as https://crrev.com/6da3ecce0e3397264b9412efadef70ede93e8ba8 Cr-Commit-Position: refs/heads/master@{#402890} |