Opened 12 years ago
Closed 12 years ago
#1033 closed defect (fixed)
Profiler-related GL errors
Reported by: | historic_bruno | Owned by: | |
---|---|---|---|
Priority: | Should Have | Milestone: | Alpha 8 |
Component: | Core engine | Keywords: | |
Cc: | Philip Taylor | Patch: |
Description
Here is the first error and the associated call stack from gDEBugger:
Breaked-on: glGetQueryiv(GL_CURRENT_TIME_NV , GL_QUERY_COUNTER_BITS , 0x0020E718) Error-Code: GL_INVALID_ENUM Error-Description: An unacceptable value is specified for an enumerated argument. The offending command is ignored, and has no other side effect than to set the error flag.
ReportGLLimits - hwdetect.cpp, line 493 RunHardwareDetection - hwdetect.cpp, line 197 InitGraphics - gamesetup.cpp, line 892 RunGameOrAtlas - main.cpp, line 494 main - main.cpp, line 516 wmain - wseh.cpp, line 380 __tmainCRTStartup - crtexe.c, line 552 CallStartupWithinTryBlock - wseh.cpp, line 396 BaseThreadInitThunk - kernel32.dll RtlInitializeExceptionChain - ntdll.dll
That error occurs during startup and is not reported. The next occurs when enabling the profiler (F11) and is reported:
Breaked-on: glGenQueries(8 , 0x05A8B798) Error-Code: GL_INVALID_OPERATION Error-Description: The specified operation is not allowed in the current state. The offending function is ignored, having no side effect other than to set the error flag.
CProfiler2GPU_ARB_timer_query::RecordRegion - profiler2gpu.cpp, line 198 CProfiler2GPU::RegionLeave - profiler2gpu.cpp, line 835 CProfileViewer::RenderProfile - profileviewer.cpp, line 292 Render - gamesetup.cpp, line 273 Frame - main.cpp, line 385 RunGameOrAtlas - main.cpp, line 497 main - main.cpp, line 516 wmain - wseh.cpp, line 380 __tmainCRTStartup - crtexe.c, line 552 CallStartupWithinTryBlock - wseh.cpp, line 396 BaseThreadInitThunk - kernel32.dll RtlInitializeExceptionChain - ntdll.dll
Attachments (1)
Change History (5)
by , 12 years ago
Attachment: | system_info.txt added |
---|
comment:1 by , 12 years ago
follow-up: 3 comment:2 by , 12 years ago
Reportedly the second error occurs when both ARB and EXT profilers are enabled, but not if only the ARB one is.
I didn't realise yesterday that the glGenQueries
doesn't actually depend on the query type, so maybe the problem is just when glGenQueries
is called while any query is active. The ARB profiler doesn't do begin/end queries which is why it works by itself. Do you get the errors when the ARB is disabled and EXT is enabled?
comment:3 by , 12 years ago
Replying to Philip:
Do you get the errors when the ARB is disabled and EXT is enabled?
Unfortunately, yes. Also with the latest drivers (11.11) it's not just errors but an actual crash.
comment:4 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
The first error is harmless - current AMD drivers don't support
glGetQueryiv(GL_TIMESTAMP, GL_QUERY_COUNTER_BITS)
, which I'm pretty sure is a bug given theGL_ARB_timer_query
spec. (I've seen comments in other people's code about this problem, so it's not just us). The code is properly detecting and handling that error.The second error is bad. Maybe it's trying to generate more queries than the hardware supports, or something. Could you add some counter into
CProfiler2GPU_timer_query::NewQuery
to record how many new queries it generates since the start of the program, and then see what value it has when the error is triggered?