Comments (11)
I wasn't intending to raise it as an apitrace issue (yet), just saying why I may not get to the issue in this ticket immediately.
from apitrace.
Could you please provide me:
- list of any apitrace warnings when tracing, as there might be a smoking gun;
- the trace, as I usually can infer what's going on.
from apitrace.
full trace log: https://mega.nz/file/0UMSxILZ#vkPbM6UizbupEYJPVWvk3pmY3owr8CaxRWAOb2o-mUE
trace: https://mega.nz/file/cQ0CWIqY#qxPxInIDH01fYdc5nofP4dqgDH0k3bNYuOhNDGQtwRc
from apitrace.
Thanks. For me, the window is not completely blank:
So it looks like the window size was overestimated, in height, somehow.
from apitrace.
🤦
My monitor isn't big enough to see.
from apitrace.
I see what's going on.
The application is using a 691 x 2289 FBO, but it's setting the viewport before it binds the FBO:
...
6053 glBindFramebufferEXT(target = GL_FRAMEBUFFER, framebuffer = 0)
36054 glPushAttrib(mask = GL_VIEWPORT_BIT)
36055 glViewport(x = 0, y = 0, width = 691, height = 2289)
36056 glMatrixMode(mode = GL_PROJECTION)
36057 glPushMatrix()
36058 glLoadIdentity()
36059 glMatrixMode(mode = GL_MODELVIEW)
36060 glPushMatrix()
36061 glLoadIdentity()
36062 glGetIntegerv(pname = GL_DRAW_FRAMEBUFFER_BINDING, params = &0)
36063 glBindFramebufferEXT(target = GL_FRAMEBUFFER, framebuffer = 4)
36064 glClearColor(red = 0, green = 0, blue = 0, alpha = 1)
...
From what I've gathered this is a valid usage, ie, viewport is a global state, not FBO state. However it confuses glretrace into thinking that the window should be larger.
In short, it's a glretrace bug, annoying yet mostly harmless, and it's unclear what's the most effective way to fix it...
from apitrace.
Do you have idea about any hacky approach to create reasonable trace? The BAR is pretty complex game and would be great for the Mesa3D CI testing.
from apitrace.
@jrfonseca any ideas on a resolution here?
from apitrace.
Sorry, there's no easy solution from Apitrace's side.
The fundamental issue is that window size is not explicit in GLX/WGL APIs, instead size is only explicit on X11/GDI APIs which Apitrace does not intercept. So this means that if we want to explicitly record the window size we'd need Apitrace to:
- extract the window size while tracing (easy, there is/was code do to this)
- emit a fake made up call (e.g,
glXSetWindowSizeApitrace()/wglSetWindowSizeApitrace()
) first time drawable is bound, or whenever the drawable size changes - handle those fake calls in glretrace to resize the window acordingly, instead of infering size from
glViewport
.
I'd happily accept patches along these lines.
That said, if all you want is to add BAR to a CI database, then my suggestion is to ignore this issue, and record the reference screenshots as they are (with blank portion, as seen in #874 (comment)) -- it should still work just fine.
If the blank area is annoying when eyeballing rendering, then we could add an option to glretrace to clamp/restrict maximum window size.
from apitrace.
This ticket and my interest here are both unrelated to CI.
If you want to give me some breadcrumbs towards your proposed solution I don't mind giving it a shot. I've recently tried getting a new trace from this game, but somehow replay is crashing in the first glMultiDrawElementsIndirect
when accessing the indirect buffer, so I'll probably be sidetracked onto figuring that out for a bit.
from apitrace.
but somehow replay is crashing in the first
glMultiDrawElementsIndirect
when accessing the indirect buffer
It's probably better to track this in a separate issue report, but looking at that function, I suspect there's work to do to handle the indirect
parameter correctly, namely it's an offset disguised as a pointer when GL_DRAW_INDIRECT_BUFFER
is bound, but it's a user memory pointer when not. In short, we need to handle indirect
parameter in a similar fashion to indices
. See GLindexBuffer
in
Lines 305 to 315 in 223c85d
Not saying this is definitely what's causing the issue, but it's likely.
from apitrace.
Related Issues (20)
- eglretrace crashes on rayman2_gl trace
- Can Apitrace support retrace through EGL on Windows HOT 2
- loop option doesn't work for specific trace HOT 1
- retrace --loop crashes when VAO is created in setup frame and deleted in loop frame HOT 1
- Tellusim Upscaler (Star Wars) 20230513 trace doesn't work properly
- Failed to capture trace of wgf11filter HOT 1
- Build system complains about uncloned submodules for bundled dependencies even when using dependencies from system HOT 4
- Bug recording instanced draw calls with user arrays HOT 18
- [enhancement] replace zlib HOT 1
- Feature Request: Attach apitrace to Already Running Processes HOT 4
- During tracing gl-500-texture-cube-arb.exe, missing cube map HOT 2
- Wolfenstein: The Old Blood tracing broken due to abuse of GL_MAP_PERSISTENT_BIT mappings HOT 19
- trimming broken for some traces HOT 7
- capture/replay broken for indirect draws HOT 15
- Commit cff22f0 Introduces Segfault HOT 3
- eglQueryDevicesEXT egl spec definition wrong HOT 1
- undefined symbol: __libc_dlopen_mode, version GLIBC_PRIVATE HOT 5
- [OpenGL] Replay issue with glUniformHandleui64ARB HOT 2
- Possibility for a new stable release?
- [Master and Fedora40 Repo] Fails to write a .trace file. HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apitrace.