libpciaccess has now official support for Windows/Cygwin


During my Google Summer of Code 2013, a part of my project was to reverse engineered GPU graphics counters on NVIDIA Tesla. However, these counters are only exposed on Windows through the NVIDIA NVPerfKit performance tools.

Usually the Nouveau community uses envytools, a collection of tools to help developers understand how NVIDIA GPUs work. Envytools depends on libpciaccess which is only available on POSIX platforms. That’s why I decided to port libpciaccess to Windows/Cygwin to be able to use these tools.

This port depends on WinIo which allows direct I/O port and physical memory access under Windows NT/2000/XP/2003/Vista/7 and 2008.

This port has been accepted in libpciaccess/master and merged today. It has only been tested on Windows Seven 32 bits, and has to be checked and fixed on 64 bits.

To use it, please follow the instructions found in README.cygwin.

This support helped me to understand how GPU graphics counters work on NVIDIA Tesla. I started writing a documentation of these counters here.

See you later!

10 thoughts on “libpciaccess has now official support for Windows/Cygwin

  1. Pingback: Libpciaccess es porteada a Windows para ayudar al desarrollo de Nouveau | Libuntu

  2. I am a greenhorn but, I think there is a typo mistake in your commit.
    File x86_pci.c, line 661 (unAMp instead of unMAp) :
    return pci_device_generic_unamp_range(dev, map);
    should be
    return pci_device_generic_unmap_range(dev, map);

  3. Pingback: Для Nouveau подготовлены средства для обратного инжиниринга видеокарт, поддерживаемых только в Windows | — Всероссийский портал о UN

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s