[Mesa-dev] unpack functions showing up highly in profiles
Matt Turner
mattst88 at gmail.com
Sun Mar 18 09:47:35 PDT 2012
On Sun, Mar 18, 2012 at 10:13 AM, Brian Paul <brian.e.paul at gmail.com> wrote:
> On Sat, Mar 17, 2012 at 7:55 PM, Matt Turner <mattst88 at gmail.com> wrote:
>> Hey
>>
>> On my i965/SNB system I profiled some games in WINE and saw that some
>> unpack_* functions in src/mesa/main/format_unpack.c show up very
>> highly.
>>
>> In Day of Defeat: Source and Counter Strike: Source, the
>> _mesa_unpack_uint_z_row function was 10~30%.
>>
>> In Starcraft II, the unpack_ARGB8888 function was 66%!
>>
>> I imagine we could optimize them by checking the value of 'n' and
>> unrolling the loops if it's large enough, but I suspect the thing to
>> do is figure out why they're being called so much to begin with and
>> fix that. Any ideas?
>
> Yes, let's try to find out why/where this function is getting called
> from. How about attaching a debugger to the process and setting a
> breakpoint on those functions, then looking at the call stack?
I pasted the functions wrong. SC2 spends an enormous amount of time in
unpack_uint_z_X8_Z24 and the HL2 games in unpack_ARGB8888.
SC2's call chain for unpack_uint_z_X8_Z24 is
unpack_uint_z_X8_Z24
- _mesa_unpack_uint_z_row
- _mesa_readpixels
- intelReadPixels
- copy_tex_sub_image.isra.3
- intelCopyTexSubImage2D
- copyteximage
- shared_dispatch_stub_324
- surface_load_ds_location
- drawPrimitive
- wined3d_device_draw_indexed_primitive
- IDirect3DDevice9Impl_DrawIndexedPrimitive
- ??
Matt
More information about the mesa-dev
mailing list