How to make a Texture2DArray comprised of VRAM compressed Texture2D's?

Godot Version

4.7.stable

Question

Here is the current script, but this produces a uncompressed Texture2DArray.

I have made a Texture2DArray comprising of compressed texture2d before but I dont remember how.

@tool
extends EditorScript

var albedo_array = [
	load("res://Assets/Materials/Albedo/Ground.png"), #1
	load("res://Assets/Materials/Albedo/Grass.png"),#2
	load("res://Assets/Materials/Albedo/Rock.png"),#3
	load("res://Assets/Materials/Albedo/Sand.png"),#4
	load("res://Assets/Materials/Albedo/Snow.png"),#5
	load("res://Assets/Materials/Albedo/Gravel.png"),#6
	load("res://Assets/Materials/Albedo/Wood.png"),#7
	load("res://Assets/Materials/Albedo/Brick.png"),#8
	load("res://Assets/Materials/Albedo/Metal.png"),#9
	load("res://Assets/Materials/Albedo/Concrete.png"),#10
	load("res://Assets/Materials/Albedo/Marble.png"),#11
	load("res://Assets/Materials/Albedo/WoodFloor.png"),#12
]

var normal_array = [
	load("res://Assets/Materials/Normal/Ground.png"), #1
	load("res://Assets/Materials/Normal/Grass.png"),#2
	load("res://Assets/Materials/Normal/Rock.png"),#3
	load("res://Assets/Materials/Normal/Sand.png"),#4
	load("res://Assets/Materials/Normal/Snow.png"),#5
	load("res://Assets/Materials/Normal/Gravel.png"),#6
	load("res://Assets/Materials/Normal/Wood.png"),#7
	load("res://Assets/Materials/Normal/Brick.png"),#8
	load("res://Assets/Materials/Normal/Metal.png"),#9
	load("res://Assets/Materials/Normal/Concrete.png"),#10
	load("res://Assets/Materials/Normal/Marble.png"),#11
	load("res://Assets/Materials/Normal/WoodFloor.png"),#12
]

var orm_array = [
	load("res://Assets/Materials/ORM/Ground.png"), #1
	load("res://Assets/Materials/ORM/Grass.png"),#2
	load("res://Assets/Materials/ORM/Rock.png"),#3
	load("res://Assets/Materials/ORM/Sand.png"),#4
	load("res://Assets/Materials/ORM/Snow.png"),#5
	load("res://Assets/Materials/ORM/Gravel.png"),#6
	load("res://Assets/Materials/ORM/Wood.png"),#7
	load("res://Assets/Materials/ORM/Brick.png"),#8
	load("res://Assets/Materials/ORM/Metal.png"),#9
	load("res://Assets/Materials/ORM/Concrete.png"),#10
	load("res://Assets/Materials/ORM/Marble.png"),#11
	load("res://Assets/Materials/ORM/WoodFloor.png"),#12
]

func _run() -> void:
	var albedo_tex_array = Texture2DArray.new()
	albedo_tex_array.create_from_images(orm_array)
	albedo_tex_array
	save_editor_resource(albedo_tex_array, "user://albedo_array.res")



func save_editor_resource(resource: Resource, target_path: String) -> void:
	if not resource:
		return
		
	var base_dir = target_path.get_base_dir()
	if not DirAccess.dir_exists_absolute(base_dir):
		var dir_error = DirAccess.make_dir_recursive_absolute(base_dir)
		if dir_error != OK:
			return
	var resource_to_save = resource
	if FileAccess.file_exists(target_path):
		resource_to_save = resource.duplicate(true)

	var error = ResourceSaver.save(resource_to_save, target_path, ResourceSaver.FLAG_NONE)
	
	if error == OK:
		if Engine.is_editor_hint():
			EditorInterface.get_resource_filesystem().scan()
	else:
		printerr("Failed to save tool resource. Error code: ", error)

You could try running a loop and calling:

orm_array[ i ].compress()

Yeah thats how I solved it, thank you. I added a loop that runs it for all 3 arrays. I also called generate_mipmaps() (you need to call it before the compress() call)