- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我想获取‖Android 设备 VRAM 大小。
有没有从程序中获取的方法?
最佳答案
让我们使用 Nexus One 进行一些计算:
屏幕分辨率为 480x800。因此所需的最小视频内存大小为:
400 * 800 * 4 字节 = 1536000 字节
假设驱动程序可能(并且通常应该)使用多个缓冲区,我们还应该期望如下值:
1536000 * 2 字节 = 3072000 字节
1536000 * 3 字节 = 4608000 字节
等...
如果值不是 1536000(或一般情况下 W x H x 4)的倍数,那就很奇怪了。
在对 Android 内部进行一些搜索后,我找到了这个 documentation :
...Android makes two requirements of the driver: a linear address space of mappable memory that it can write to directly...accessing the driver by calling open on /dev/fb0...
所以我尝试获取 /dev/graphics/fb0
文件的大小(在我的设备上没有 /dev/fb0
)。
但是直接的方法是行不通的:
File file = new File("/dev/graphics/fb0");
file.length(); // ==0, doesn't work, no read access
使用下一个技巧,您可以获得 fb0
的实际大小:
>adb pull/dev/graphics/fb0
1659 KB/s(4608000 字节在 2.712 秒内)
显存约为 4mb (Nexus One)。让我们检查一下这是否是 Nexus 屏幕尺寸的倍数:
4608000/1536000 = 3
它看起来像一个正确的值。我们也可以说驱动程序使用了三个 屏幕缓冲区。
因此,作为结论,您可以使用 adb 检测显存大小,但由于文件访问限制,您无法在运行时从 android 应用程序中使用此方法。
关于android - 如何测量 Android 上的 VRAM 消耗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3154632/
我正在创建类似于 CUDA 的东西,但我看到将内存从 RAM 复制到 VRAM 非常快,就像从 RAM 复制到自身一样。但是从 VRAM 复制到 RAM 比从 RAM 复制到 VRAM 慢。 顺便说一
我想知道当前 nvidia/AMD 处理 VRAM 资源分配的实现。 我们已经知道,当系统 RAM 已满时,操作系统会使用交换/虚拟内存,那么对于 VRAM 来说,交换相当于什么?它们会回退到系统 R
我想使用 SDL/OpenGl/DirectX 或任何其他 API 直接从 VRAM 获取将在屏幕上显示的帧(图像)(如果可能)以二进制(RAW)格式。 我想最大限度地减少捕获屏幕的延迟,然后将其保存
假设我加载了一个或两个纹理,可能还有一些着色器、一个 VAO、一个 VBO,然后我运行该程序。 假设程序遇到某种运行时错误并在所有这些缓冲区对象和纹理被删除之前终止。 在我重新启动计算机之前,它们是否
我正在尝试获取我的游戏当前使用的 VRAM 总量。我想在我的调试信息中显示它。 当我使用 Visual Studio Graphics Analyzer 时,我想到了一个主意。我想我可以通过添加每个图
我对 clEnqueueWriteBuffer 有一个很好奇的问题。在我当前的项目中,我想将大约 500 张图像 (1GB) 复制到显卡上并平均一些像素。图像存储在一个大的 double* 数组中(大
有谁知道如何在 os x 上获得免费的(!)vram? 我知道您可以查询注册表项: typeCode = IORegistryEntrySearchCFProperty(dspPort,kIOServ
我正在分析我的简单体素化世界渲染器的性能。我想找出不同技术的性能限制,一种压力测试。在某些时候,我发现了一些非常奇怪的东西。我正在为每个 block 使用不同的 VBO 以 block 的形式分配几何
我的游戏引擎尝试分配大型纹理数组,以便能够将大部分(如果不是全部)绘制在一起。该数组可能变得足够大而无法分配,此时我会(不断)将纹理数组分成两半。 在收到 glGetError:Out of memo
我正在开发 JavaFX 程序并希望加快我的应用程序。阅读有关大图像和与之相关的问题后here ,我决定听从那里的建议并分配更多 VRAM。我不太确定如何执行此操作,但是,尽管我知道如何执行此操作,但
我正在使用 cudaMemGetInfo 来获取系统当前使用的 vram。 extern __host__ cudaError_t CUDARTAPI cudaMemGetInfo(size_t *f
我试图将比 VRAM 更多的数据传递到 GPU,这会导致以下错误。 CudaAPIError:调用 cuMemAlloc 导致 CUDA_ERROR_OUT_OF_MEMORY 我创建了此代码来重现问
我试图将比 VRAM 更多的数据传递到 GPU,这会导致以下错误。 CudaAPIError:调用 cuMemAlloc 导致 CUDA_ERROR_OUT_OF_MEMORY 我创建了此代码来重现问
我需要大致确定系统显卡有多少 VRAM。我知道我不应该这么做的所有原因,但我还是这么做了。它不需要是完美的(有些牌是谎言等),但我需要一个大概。在 Mac 上,通过核心显卡和 IOKit 可以很容易地
我目前正在编写 GameBoy Classis 模拟器。这是 GitHub 存储库 ( https://github.com/FelixWeichselgartner/GameBoy-Classic-
我想获取‖Android 设备 VRAM 大小。 有没有从程序中获取的方法? 最佳答案 让我们使用 Nexus One 进行一些计算: 屏幕分辨率为 480x800。因此所需的最小视频内存大小为: 4
TensorFlow 总是(预)分配我显卡上的所有空闲内存 (VRAM),这没关系,因为我希望我的模拟在我的工作站上尽可能快地运行。 但是,我想记录 TensorFlow 实际使用了多少内存(总计)。
我正在尝试使用 GBA 拼贴模式从头开始显示具有单一彩色像素的单个拼贴。 它主要工作,但不是设置单个像素,而是在我打算写入的 16 位对齐位置为两个字节设置相同的颜色: 通过 mgba 模拟器运行时的
我在我的应用程序中遇到了 VRAM 内存泄漏。该应用程序经常添加和删除 THREE.Geometry 以创建体积动画。如果我使用 THREE.SphereBufferGeometry 而不是具有自己填
看起来 200 万个浮点数应该没什么大不了的,只有 8MB 的 1GB GPU RAM。我有时可以分配那么多,有时甚至更多,没有任何问题。当我执行 clEnqueueReadBuffer 时,我得到
我是一名优秀的程序员,十分优秀!