opengl - Why my 2d graphic application run faster on Inegrated graphics card? -
i working on 2d graphic application opengl(like qgis). when testing benchmarks, there weird performance difference between 2 graphic cards. made simple test , draw 1 million squares using vbo. there 4m vertices each 20 bytes, total vbo size 80 mb. , draw whole things 1 drawelements call. when measured render time in laptop has 2 graphic cards runs 43 ms on geforce , 1 ms on integrated intel card. expected faster on geforce. why so? should disable opengl options?
my system specification is: asus n53m integrated graphics card , geforce gt 610m
edit:
tested on system amd radeon hd 5450, 44 ms again. used single precision instead , reduced 30 ms. still integrated gpu more faster! not measuring issue, because can see lag when zoom in/out.
the run time behavior of different opengl implementations vastly differs found out in experiments regarding low-latency rendering techniques vr. in general reliable timing interval measure, gives consistent results inter-frame time between same step in drawing. i.e. measure time buffer swap buffer swap (if want measure raw drawing performance, disable v-sync), or between same glclear
calls.
everything else consistent within implementation, not between vendors (at time of testing had no amd gpu around, lack data on this). few notable corner cases discovered:
swapbuffers
- nvidia: returns after swap buffer has been presented. means: either waits v-sync or returns after buffers have been swapped
- intel/linux/x11: returns immediately. v-sync affects next opengl call that'd effects pixels in not-yet-presented buffer and not fit command queue. hence "clearing" viewport large quad, skybox or using depth-ping-pong method (found in old applications) gives inconsistent frame intervals. glclear reliably block until v-sync after swap
glfinish
- nvidia: finishes rendering, expected
- intel/linux/x11: drawing buffer, acts no-op, drawing front buffer acts finish followed copy auxiliary front buffer (weird); means can't make drawing process "visible".
i yet have test intel driver if bypassing x11 (using kms). note opengl specification leaves implementation how , when things, long outcome consistent , conforms specification. , observed behavior conformant.
Comments
Post a Comment