Bagaimana saya bisa tahu berapa banyak memori kartu video yang saya gunakan?


15

Saya ingin secara terprogram menentukan pada saat runtime berapa banyak memori kartu video yang digunakan oleh program saya. Secara khusus saya bertanya-tanya tentang bagaimana melakukannya pada mesin Windows menggunakan OpenGL, tetapi saya tertarik dengan cara untuk melakukannya pada platform lain juga.

Saya tahu ada utilitas di luar sana yang akan menunjukkan kepada saya penggunaan memori saat program saya berjalan, tetapi saya ingin dapat menanyakan informasi itu dari kode saya.


PS Saya sudah menjawab pertanyaan Anda, tetapi ini akan lebih cocok untuk stackoverflow.com karena itu hanya pertanyaan pemrograman umum. Jika jawaban saya tidak cukup menyeluruh, Anda dapat memposting ulang di sana dan melihat respons apa yang mereka berikan.
Ricket

Saya juga berada di stackoverflow, tetapi saya masih mempelajari campuran pertanyaan apa yang valid untuk di sini.
Hitesh

3
Pertanyaan ini tampaknya baik-baik saja di sini. Lagipula, dia mungkin mendapatkan yang dia butuhkan. Lihat ini: meta.gamedev.stackexchange.com/questions/3/…
Tetrad

Jawaban:


14

Anda dapat menemukan memori video kartu Nvidia menggunakan ekstensi NVX_gpu_memory_info , atau kartu ATI menggunakan ATI_meminfo . Ini adalah potongan kode yang saya temukan yang mungkin bisa membantu Anda memulai.


Namun, Paul Nettle di flipcode bertanya-tanya mengapa orang ingin menemukan memori video yang tersedia, dengan mengatakan :

Alasannya sulit (dan terkadang tidak mungkin) untuk menentukan jumlah memori video sangat mirip dengan alasan mengapa OpenGL tidak akan membiarkan Anda mengunci buffer bingkai dan mengaksesnya secara langsung.

Dan selanjutnya menjelaskan, pada dasarnya, bahwa "jumlah memori video" mungkin tidak berarti apa-apa . Saya setuju dengannya tentang alasan bahwa, misalnya, jumlah memori "bebas" di mesin Windows Vista / 7 tidak relevan; semoga tidak ada memori bebas, karena memori bebas memori terbuang. Tetapi selalu ada beberapa area memori yang didedikasikan untuk cache yang dihapus oleh Windows, jika suatu aplikasi membutuhkannya.


Beberapa sumber yang bagus. Saya harus mendapatkan kesempatan untuk mencobanya dalam beberapa hari.
Hitesh

+1, cuplikannya bagus. Namun, saya tidak sepenuhnya setuju tentang tidak ada artinya - itu selalu lebih baik untuk memeriksa jumlah memori daripada membiarkan spektakulari program Anda gagal.
Kornel Kisielewicz

Yah, tapi saya pikir intinya tidak harus bahwa Anda tidak harus memeriksa jumlah memori, tetapi jumlah memori bukanlah indikator yang jelas dari apa pun. Ketika kartu kehabisan memori itu mungkin berarti itu akan gagal, atau itu mungkin berarti data tekstur Anda hanya akan secara otomatis ditukar masuk dan keluar yang diperlukan. Memori 0 mungkin sebenarnya tidak berarti kesalahan kehabisan memori yang fatal.
Ricket

1
Secara pribadi saya berencana untuk menggunakan ini sebagai pedoman sederhana untuk melacak kebocoran dan menonton kompatibilitas perangkat keras saya. Menggunakan "20mb"? Ya itu mungkin akan berjalan pada apa pun yang ada di pasaran hari ini. Menggunakan "500mb" pada game sederhana dengan setengah lusin tekstur yang dialokasikan secara dinamis dengan banyak churn? Ups, sesuatu mungkin salah dengan pengumpulan sampah saya.
ZorbaTHut

1
Sayangnya spec GL mengatakan bahwa ketika driver mengembalikan GL_OUT_OF_MEMORY itu sekarang dalam ketidakpastian sehingga setelah Anda keluar dari memori Anda pada dasarnya SOL Untuk permainan yang tidak terlalu buruk tetapi untuk aplikasi seperti mengatakan Photoshop itu tidak dapat diterima.
GM
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.