Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

astcenc: Allow decompression in non-editor builds #100856

Merged
merged 1 commit into from
Jan 6, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions modules/astcenc/SCsub
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,13 @@ env_astcenc.Prepend(CPPPATH=[thirdparty_dir])

env_thirdparty = env_astcenc.Clone()
env_thirdparty.disable_warnings()

# Build the encoder only for editor builds
astc_encoder = env.editor_build

if not astc_encoder:
env_thirdparty.Append(CPPDEFINES=[("ASTCENC_DECOMPRESS_ONLY")])

env_thirdparty.add_source_files(thirdparty_obj, thirdparty_sources)
env.modules_sources += thirdparty_obj

Expand Down
4 changes: 1 addition & 3 deletions modules/astcenc/config.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
def can_build(env, platform):
# Godot only uses it in the editor, but ANGLE depends on it and we had
# to remove the copy from prebuilt ANGLE libs to solve symbol clashes.
return env.editor_build or env.get("angle_libs")
return True


def configure(env):
Expand Down
5 changes: 4 additions & 1 deletion modules/astcenc/image_compress_astcenc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@

#include <astcenc.h>

#ifdef TOOLS_ENABLED
void _compress_astc(Image *r_img, Image::ASTCFormat p_format) {
const uint64_t start_time = OS::get_singleton()->get_ticks_msec();

Expand Down Expand Up @@ -171,6 +172,7 @@ void _compress_astc(Image *r_img, Image::ASTCFormat p_format) {

print_verbose(vformat("astcenc: Encoding took %d ms.", OS::get_singleton()->get_ticks_msec() - start_time));
}
#endif // TOOLS_ENABLED

void _decompress_astc(Image *r_img) {
const uint64_t start_time = OS::get_singleton()->get_ticks_msec();
Expand Down Expand Up @@ -213,8 +215,9 @@ void _decompress_astc(Image *r_img) {

astcenc_config config;
const float quality = ASTCENC_PRE_MEDIUM;
const uint32_t flags = ASTCENC_FLG_DECOMPRESS_ONLY;

astcenc_error status = astcenc_config_init(profile, block_x, block_y, 1, quality, 0, &config);
astcenc_error status = astcenc_config_init(profile, block_x, block_y, 1, quality, flags, &config);
ERR_FAIL_COND_MSG(status != ASTCENC_SUCCESS,
vformat("astcenc: Configuration initialization failed: %s.", astcenc_get_error_string(status)));

Expand Down
3 changes: 3 additions & 0 deletions modules/astcenc/image_compress_astcenc.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,10 @@

#include "core/io/image.h"

#ifdef TOOLS_ENABLED
void _compress_astc(Image *r_img, Image::ASTCFormat p_format);
#endif

void _decompress_astc(Image *r_img);

#endif // IMAGE_COMPRESS_ASTCENC_H
3 changes: 3 additions & 0 deletions modules/astcenc/register_types.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,10 @@ void initialize_astcenc_module(ModuleInitializationLevel p_level) {
return;
}

#ifdef TOOLS_ENABLED
Image::_image_compress_astc_func = _compress_astc;
#endif

Image::_image_decompress_astc = _decompress_astc;
}

Expand Down