| Summary: | GLEAN's 2 perf cases fail | ||
|---|---|---|---|
| Product: | Mesa | Reporter: | Wei Wang <wei.z.wang> |
| Component: | Drivers/DRI/i915 | Assignee: | Default DRI bug account <dri-devel> |
| Status: | VERIFIED FIXED | QA Contact: | |
| Severity: | normal | ||
| Priority: | medium | CC: | haihao.xiang, keithw, shuang.he |
| Version: | git | ||
| Hardware: | x86 (IA32) | ||
| OS: | Linux (All) | ||
| Whiteboard: | |||
| i915 platform: | i915 features: | ||
| Attachments: | fix two vbo_split related errors | ||
|
Description
Wei Wang
2007-02-12 21:56:14 UTC
log of coloredTexPerf2
======================
coloredTexPerf2: FAIL rgba8, db, z24, s8, win+pmap, id 37
DrawElements triangle strip rendering is missing
some triangles.
DrawElements triangle strip image differs from
the reference image.
Locked DrawElements triangle strip rendering is missing
some triangles.
Locked DrawElements triangle strip image differs from
the reference image.
Immediate-mode independent triangle rate = 872138 tri/sec.
Range of valid measurements = [871648, 872396]
Image sanity check passed
Image consistency check passed
Display-listed independent triangle rate = 1.02221e+06 tri/sec.
Range of valid measurements = [1.02108e+06, 1.0229e+06]
Image sanity check passed
Image consistency check passed
DrawArrays independent triangle rate = 979595 tri/sec.
Range of valid measurements = [979189, 980186]
Image sanity check passed
Image consistency check passed
Locked DrawArrays independent triangle rate = 1.19108e+06 tri/sec.
Range of valid measurements = [1.1898e+06, 1.19221e+06]
Image sanity check passed
Image consistency check passed
DrawElements independent triangle rate = 845006 tri/sec.
Range of valid measurements = [844646, 845387]
Image sanity check passed
Image consistency check passed
Locked DrawElements independent triangle rate = 844693 tri/sec.
Range of valid measurements = [844654, 844720]
Image sanity check passed
Image consistency check passed
Immediate-mode triangle strip rate = 2.59771e+06 tri/sec.
Range of valid measurements = [2.59714e+06, 2.59832e+06]
Image sanity check passed
Image consistency check passed
Display-listed triangle strip rate = 3.7305e+06 tri/sec.
Range of valid measurements = [3.72961e+06, 3.73211e+06]
Image sanity check passed
Image consistency check passed
DrawArrays triangle strip rate = 3.55168e+06 tri/sec.
Range of valid measurements = [3.55011e+06, 3.55252e+06]
Image sanity check passed
Image consistency check passed
Locked DrawArrays triangle strip rate = 3.55509e+06 tri/sec.
Range of valid measurements = [3.55421e+06, 3.55555e+06]
Image sanity check passed
Image consistency check passed
DrawElements triangle strip rate = 1.39508e+06 tri/sec.
Range of valid measurements = [1.39432e+06, 1.39554e+06]
Image sanity check failed
Image consistency check failed
Locked DrawElements triangle strip rate = 1.39716e+06 tri/sec.
Range of valid measurements = [1.39671e+06, 1.39757e+06]
Image sanity check failed
Image consistency check failed
log of coloredLitPerf2 (collected form 915gv)
======================
coloredLitPerf2: FAIL rgba8, db, z24, s8, win+pmap, id 37
DrawElements triangle strip rendering is missing
some triangles.
DrawElements triangle strip image differs from
the reference image.
Locked DrawElements triangle strip rendering is missing
some triangles.
Locked DrawElements triangle strip image differs from
the reference image.
Immediate-mode independent triangle rate = 490311 tri/sec.
Range of valid measurements = [489624, 491541]
Image sanity check passed
Image consistency check passed
Display-listed independent triangle rate = 616814 tri/sec.
Range of valid measurements = [616616, 617050]
Image sanity check passed
Image consistency check passed
DrawArrays independent triangle rate = 609600 tri/sec.
Range of valid measurements = [609438, 609736]
Image sanity check passed
Image consistency check passed
Locked DrawArrays independent triangle rate = 609618 tri/sec.
Range of valid measurements = [609195, 609992]
Image sanity check passed
Image consistency check passed
DrawElements independent triangle rate = 495801 tri/sec.
Range of valid measurements = [495645, 496108]
Image sanity check passed
Image consistency check passed
Locked DrawElements independent triangle rate = 496126 tri/sec.
Range of valid measurements = [495917, 496243]
Image sanity check passed
Image consistency check passed
Immediate-mode triangle strip rate = 1.33137e+06 tri/sec.
Range of valid measurements = [1.3294e+06, 1.33444e+06]
Image sanity check passed
Image consistency check passed
Display-listed triangle strip rate = 1.69261e+06 tri/sec.
Range of valid measurements = [1.69105e+06, 1.69493e+06]
Image sanity check passed
Image consistency check passed
DrawArrays triangle strip rate = 1.63691e+06 tri/sec.
Range of valid measurements = [1.63664e+06, 1.63727e+06]
Image sanity check passed
Image consistency check passed
Locked DrawArrays triangle strip rate = 1.6424e+06 tri/sec.
Range of valid measurements = [1.63698e+06, 1.65298e+06]
Image sanity check passed
Image consistency check passed
DrawElements triangle strip rate = 1.16057e+06 tri/sec.
Range of valid measurements = [1.16014e+06, 1.16096e+06]
Image sanity check failed
Image consistency check failed
Locked DrawElements triangle strip rate = 1.16132e+06 tri/sec.
Range of valid measurements = [1.16064e+06, 1.16187e+06]
Image sanity check failed
Image consistency check failed
this bug also happens on 64bit env (915 and 945). This regression seems to be caused by commit b59657ad965f9471574e914b861bb1d2a17d772e (vbo-0.2 merge). Created attachment 10980 [details] [review] fix two vbo_split related errors This patch fix two vbo_split related errors. 1. assume all arrays need to be normalized is incorrect. Some client arrays(such as vertex array) can not be normalized. 2. GL_TRIANGLE_STRIP is a special case when spliting for example: the vertices are v0, v1, v2, v3, v4, v5, v6 ... so triangles should be(v0, v1, v2) (v2, v1, v3) (v2, v3, v4), (v4, v3, v5)... if the vertices was splited between v4 and v5, part 2 would be (v3, v4), v5, v6... so the first triangle of part 2 is (v3, v4, v5), note the clock order differ from (v4, v3, v5). It is severe if GL_CULL_FACE is enabled. This patch ensure part1 and part2 have the same clock order.
> 2. GL_TRIANGLE_STRIP is a special case when spliting
> for example:
> the vertices are v0, v1, v2, v3, v4, v5, v6 ...
> so triangles should be(v0, v1, v2) (v2, v1, v3) (v2, v3, v4), (v4, v3, v5)...
> if the vertices was splited between v4 and v5, part 2 would be (v3, v4), v5,
> v6... so the first triangle of part 2 is (v3, v4, v5), note the clock order
> differ from (v4, v3, v5). It is severe if GL_CULL_FACE is enabled.
> This patch ensure part1 and part2 have the same clock order.
Looks good, thanks for catching this.
Your patch includes slightly more logic than I think is necessary, would something like the following work as well?
if (mode == GL_TRIANGLE_STRIP &&
(copy->dstelt_nr & 1))
return GL_FALSE;
It is more clear and works well fixed mesa commit: d05b72154319041dad38f24696638396753e0da3 verified on 915gm(32bit), 945gm(32bit), 915gv(64bit) Mass version move, cvs -> git |
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.