• Godot Help
  • Where do the various textures in the Debug Video Ram Monitor come from?


I am testing and creating various simple projects to benchmark the Godot Engine.
I created a blank project with only 1 node no script, no images, nothing. And testing this blank project I see a dark window... ok perfect. But in the Video Ram section I see various textures with diferent sizes consuming 1,77MB of RAM.
What I can do to eliminate this textures? Where I can find them?

It's very strange:

I suggest you update to version 3.5 and if the situation repeats, post the project files here.

I tested, same problem in 3.5
Do you have pressed the "run" button?
Here are the files:

I am using Linux Fedora 35

Yeah, there is such a thing. Same 1.77 MiB.

You can save the report to CSV, but there is an empty "Resource Path" column. I assume that these textures are built into the engine.

The 1024x512 is your framebuffer. The others are probably mips and icons and things.

Edit: To be clear, these are necessary. Without a framebuffer you will not have anything to output/display on monitor.

But if I reduce the screen size in project settings to 640x480 pixels the 1024x512 still appears in Video RAM
Where I can find information about this textures loaded?

    I will report as bug. I did a test and discover if you delete the environment and create another the large image 1024x512 disapper.

    Ah, so it's the default environment probe then, you can report it but I can already predict the reply saying it's not a bug and closing it. Perhaps you'll instead want to open an issue on documentation tracker asking someone to document this in an article related to optimizing project export/file size or such.

      "I can already predict the reply saying it's not a bug and closing it" I see this many times. I will try report.
      But in any way I will update here if I find more information. And if anyone discover more information please report here. We are a communit and any help is welcome.

      CristianoSimao The CSV file generated is also blank.

      It shouldn't be empty. In my case it looks like this:

      The "Resource Path" column is empty, apparently because these are embedded textures.

      Debug.zip

      The (an) engine creates various 'textures' that cannot be 'eliminated'. To some, you may have access through various channels, to others not. So, no idea about OpenGL ES but if it was OpenGL there'd be a default framebuffer created by the context, and possibly a number of others used by engine for rendering of various effects. A framebuffer can have various textures attached, colour- and depth- are usually always there, others possible. The OpenGL framebuffer has at least two pairs of such textures in OpenGL, a front- and a back-buffer (colloquially called frames sometimes). While one is being displayed, the other is being drawn to. In Vulkan the application can choose how many such frames there are in-flight, often times there are three of them in a ring buffer, so to support different display modes.

      Apart from that, there can be other textures, for rendering shadows (multiple levels possible), for a skybox (6 of them), the blue Godot wif hif teef fticking out, fonts and symbols in various sizes, and whatnot the engine might have in mind.

      tl,dr: It is not that you don't have nothing even in a blank project, as Megalomaniak said, at least there must be the possibility to show you the dark screen with nothing in it, and that needs textures and memory on the video card. Though I doubt the default framebuffer is being on display there, at least not if it is OpenGL.

      Edit: ninj'd, there you have the answer from the cracks, sky material, textures for font rendering, symbols. And 1.8mb is really not a big thing.

      16 days later

      After all the tips here and many research, I created a benchmark in a old mobile phone Samsung Galaxy J5 and every single byte of ram are very important for this type of hardware.
      The environment tip is very important, in the computer this is nothing, no difference, but in mobile this help a lot.

      Thanks for all help. And if anybody discover something to help speed the render and consume less RAM please continue reporting here.

      How can you expect to run a full 3D game engine, or even any sort of app at all, without using some memory? The question is illogical.

        12 days later

        cybereality
        I only wanted to understand what is consuming the "power" of the hardware, CPU or RAM. And for test this I need create things to meassure the CPU and RAM consumption.
        I started with nothing ... a black screen. And I expected that only little Bytes or Kilobytes of RAM will be used to do this...
        But I finded that Godot is wasting RAM memory with a unused environment buffer or texture, even if I disabled this feature. And only when I deleted this environment file removed this "bug" in Godot.

        Yes the RAM need by used, but in smart way and only when the user declare some variable, texture.. etc And the RAM can not be spend with things the Engine Develepers forget in the code (bugs).

        For people that have powerfull computers and powerfull mobile phones this little bytes is irrelevant, but for 50% of people in the world using old hardware, every byte of RAM is important and can not be spend in "bug" or "hidden features".

        I understand. I don't think this is a "bug" though, it is just default functionality of the engine. As the engine includes lots of features, some may take up memory or processing power, since they are commonly used in any game. I do agree with you that it's good not to have unnecessary features. But we are also talking about 2MB of memory, when phones these days, even cheap ones, should have at least 1GB. So it seems sort of like a premature optimization or looking for problems when there are none.

        This is simply a problem of expectations being wrong.

        There is nothing hidden or forgotten, there is no bug. A black screen is not nothing. There are tens of megabytes of video ram occupied that you're not aware of even for rendering a black window, not speaking of the program and it's data itself, a runtime environment, any loaded libraries the program needs etc..

        Just start your browser and watch the gigabytes (>3GB virtual, 400MB residual in case of firefox) it occupies without any user input and just displaying an empty file. The amount of memory you mention is negligible on every hardware except microcontrollers, and those don't run game engines these days.

        Btw., there are pretty heavy reasons not to optimize a program overly, or prematurely, and I certainly would put these numbers under that rule. Because a few gigabytes go away elsewhere (not shown in your list), and because with a new release this may all be moot and have to be redone, fixating dev power that would better be invested for the engine. One of the reasons why "premature optimization is the root of all evil" (D. Knuth). One can spend all day searching for a byte to spare and forget the actual program.

        Just my 2 cents.

        Edit: partly ninja'd :-)

        Just for reference, an empty text document (no file open, no text) in Gedit on Linux takes 18.9MB. An empty Godot 3.5 project takes 55.4MB. And Firefox (with no webpage open) takes around 218MB. You can also compare to a simple 2D game made in Unity, Celeste, which takes 370.4MB of RAM. Also, for reference, one of the most popular smart phones in Nigeria is the Tecno Camon 15 Premier, which has 6GB of RAM. More than enough to run all the apps I mentioned, many times over, with RAM to spare. So I don't see how shaving off a few bytes is going to make any material difference in the real world.