Summary: | Corruption with topogun trace | ||
---|---|---|---|
Product: | Mesa | Reporter: | Jose Fonseca <jfonseca> |
Component: | Drivers/DRI/i965 | Assignee: | Eric Anholt <eric> |
Status: | CLOSED FIXED | QA Contact: | |
Severity: | normal | ||
Priority: | high | CC: | cworth |
Version: | git | Keywords: | regression |
Hardware: | x86-64 (AMD64) | ||
OS: | All | ||
Whiteboard: | |||
i915 platform: | i915 features: |
Description
Jose Fonseca
2011-06-04 16:47:39 UTC
I admit I don't have the first clue how to replay that trace. Can you give me some pointers? (In reply to comment #1) > I admit I don't have the first clue how to replay that trace. Can you give me > some pointers? Sure. Please do: git clone https://github.com/apitrace/apitrace.git cd apitrace cmake . make wget http://people.freedesktop.org/~jrfonseca/traces/topogun-1.06-orc-84k.trace ./glretrace topogun-1.06-orc-84k.trace This should reproduce the issue -- the humanoid's face is mostly dark with some bogus coloring instead of shaded grey. I can get a screenshot when I get home. You can find some more background info about apitrace's tools on the README. In particular there's a GUI which might be useful for you to pinpoint the problem. Thanks, I have the test case running now. The problem is first visible at draw call no 4763. The last correct draw call is 4721. This is what happens in between: 4722 glLightfv(light = GL_LIGHT0, pname = GL_AMBIENT, params = {0, 0, 0, 1}) 4723 glLightfv(light = GL_LIGHT0, pname = GL_DIFFUSE, params = {0.392157, 0.392157, 0.392157, 1}) 4724 glMaterialfv(face = GL_BACK, pname = GL_DIFFUSE, params = {0.1, 0.1, 0.1, 1}) 4725 glMaterialfv(face = GL_FRONT, pname = GL_DIFFUSE, params = {0.392157, 0.392157, 0.392157, 1}) 4726 glMaterialfv(face = GL_FRONT, pname = GL_AMBIENT, params = {0, 0, 0, 1}) 4727 glMaterialf(face = GL_FRONT, pname = GL_SHININESS, param = 83.2) 4728 glMaterialfv(face = GL_FRONT, pname = GL_SPECULAR, params = {0.0980392, 0.0980392, 0.0980392, 1}) 4729 glMatrixMode(mode = GL_PROJECTION) 4730 glLoadIdentity() 4731 glMultMatrixd(m = {4.9588, 0, 0, 0, 0, 7.59575, 0, 0, 0, 0, -1.0002, -1, 0, 0, -0.020002, 0}) 4732 glMatrixMode(mode = GL_MODELVIEW) 4733 glPushMatrix() 4734 glLoadIdentity() 4735 glEnable(cap = GL_LIGHT0) 4736 glEnable(cap = GL_LIGHTING) 4737 glTranslatef(x = 0, y = 0, z = -6.23841) 4738 glTranslatef(x = -0, y = -0, z = 0) 4739 glRotated(angle = 15, x = 1, y = 0, z = 0) 4740 glRotated(angle = -45, x = 0, y = 1, z = 0) 4741 glTranslatef(x = -0, y = -0, z = -0) 4742 glDisable(cap = GL_POLYGON_SMOOTH) 4743 glHint(target = GL_POLYGON_SMOOTH_HINT, mode = GL_FASTEST) 4744 glDisable(cap = GL_POINT_SMOOTH) 4745 glDisable(cap = GL_LINE_SMOOTH) 4746 glHint(target = GL_POINT_SMOOTH_HINT, mode = GL_FASTEST) 4747 glHint(target = GL_LINE_SMOOTH_HINT, mode = GL_FASTEST) 4748 glShadeModel(mode = GL_SMOOTH) 4749 glDisable(cap = GL_BLEND) 4750 glUseProgramObjectARB(programObj = 6) 4751 glGetUniformLocationARB(programObj = 6, name = "usetex") = 1 4752 glUniform1iARB(location = 1, v0 = 0) 4753 glEnableClientState(array = GL_VERTEX_ARRAY) 4754 glEnableClientState(array = GL_NORMAL_ARRAY) 4755 glLightfv(light = GL_LIGHT0, pname = GL_DIFFUSE, params = {0.823529, 0.823529, 0.823529, 1}) 4756 glMaterialfv(face = GL_FRONT, pname = GL_DIFFUSE, params = {0.823529, 0.823529, 0.823529, 1}) 4757 glBindBufferARB(target = GL_ELEMENT_ARRAY_BUFFER, buffer = 5) 4758 glBindBufferARB(target = GL_ARRAY_BUFFER, buffer = 1) 4759 glVertexPointer(size = 3, type = GL_FLOAT, stride = 0, pointer = NULL) 4760 glBindBufferARB(target = GL_ARRAY_BUFFER, buffer = 2) 4761 glNormalPointer(type = GL_FLOAT, stride = 0, pointer = NULL) 4762 glColor3f(red = 1, green = 1, blue = 1) 4763 glDrawElements(mode = GL_TRIANGLES, count = 11904, type = GL_UNSIGNED_SHORT, indices = NULL) I wonder if the problem is the mixture of a constant vertex attribute (in call 4762) with VBOs. Perhaps your change is not properly tracking the implicit vertex buffer normally created for constant vertex attributes. If so then it might be possible to devise a simpler test case. The implicit vbo for the vertex array, should be wrapped up in a DYNAMIC_DRAW and so be treated like any other. Thanks for your insights. I'm still trying to isolate upon which path it goes wrong. Got the fix, posting to the list in a bit. I've confirmed this is now fixed with the tip of master (1ad06c7a2573d2e3a946c8340ce2530c076c5f0b) Thanks. |
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.