代码之家  ›  专栏  ›  技术社区  ›  Stefan Monov

如何避免VRAM碎片化?

  •  0
  • Stefan Monov  · 技术社区  · 6 年前

    当然

    但同样,我的应用程序中存在碎片,我想尝试在通用平台上减少碎片。

    我在这个话题上唯一发现的是 this

    防止重内存碎片化的最佳方法是尝试限制项目中不同分辨率的数量。当一个资产被换成一个具有相同分辨率的资产时,它常常会取代它在内存中的位置。

    这真的是个好主意吗?还有其他事情要记住吗?

    请注意,在我的用例中,几乎所有的VRAM使用都由纹理(以及后/前/深度缓冲区)组成。几乎没有什么是缓冲对象之类的。

    1 回复  |  直到 6 年前
        1
  •  0
  •   Paritosh Kulkarni    6 年前

    基本上你是对的。在所有的资源中,质地很重。不仅可以将纹理用作缓冲区,还可以将其用作普通图像。另外,你可以有多个相同的纹理分辨率。您必须记住,在驱动程序方面,有一些特定的标准,使资源在GPU ram中加载或卸载。所以如果你有同样分辨率的纹理。即使其中一个被卸载,它的内存块也可以分配给另一个,而不需要任何碎片。此外,当你创建纹理或任何资源的问题,你不能确定内存存在于GPU内存。它可以是任何基于驱动程序实现的地方。另外,在资源驱动程序的生命周期内,可能会将该资源从一个内存移动到另一个内存。除此之外,至少在OpenGL中,您无法控制不同的内存以及如何分配它们。因此,当你需要更多的控制和控制时,Vulkan是首选 你知道你在做什么吗 因为您不仅可以指定所需的内存类型,还可以为该内存指定自己的分配器。