all: move standalone libraries to libs/ subdirectory

The root dir of our repository has grown quite a lot the past few months.

I'd like to make it more clear where the bulk of the engine lives (`src/`) and
also make it more clear which Mach libraries are consumable as standalone projects.

As for the name of this directory, `libs` was my first choice but there's a bit of
a convention of that being external libraries in Zig projects _today_, while these
are libraries maintained as part of Mach in this repository - not external ones.

We will name this directory `libs`, and if we have a need for external libraries
we will use `external` or `deps` for that directory name. I considered other names
such as `components`, `systems`, `modules` (which are bad as they overlap with
major ECS / engine concepts), and it seems likely the official Zig package manager
will break the convention of using a `libs` dir anyway.

Performed via:

```sh
mkdir libs/
git mv freetype libs/
git mv basisu libs/
git mv gamemode libs/
git mv glfw libs/
git mv gpu libs/
git mv gpu-dawn libs/
git mv sysaudio libs/
git mv sysjs libs/
git mv ecs libs/
```

git-subtree-dir: glfw
git-subtree-mainline: 0d5b853443
git-subtree-split: 572d1144f11b353abdb64fff828b25a4f0fbb7ca

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>

git mv ecs libs/

Signed-off-by: Stephen Gutekanst <stephen@hexops.com>
This commit is contained in:
Stephen Gutekanst 2022-08-26 13:29:04 -07:00 committed by Stephen Gutekanst
parent 79ec61396f
commit 0645429df9
240 changed files with 6 additions and 6 deletions

View file

@ -0,0 +1,38 @@
pub const BasisFile = opaque {};
pub extern fn basisu_transcoder_init() void;
pub extern fn transcoder_is_format_supported(tex_type: u32, fmt: u32) bool;
pub extern fn transcoder_init([*]const u8, u32) *BasisFile;
pub extern fn transcoder_deinit(*BasisFile) void;
pub extern fn transcoder_get_images_count(*BasisFile) u32;
pub extern fn transcoder_get_levels_count(*BasisFile, image_index: u32) u32;
pub extern fn transcoder_get_image_level_desc(
*BasisFile,
image_index: u32,
level_index: u32,
orig_width: *u32,
orig_height: *u32,
total_block: *u32,
) bool;
pub extern fn transcoder_get_image_transcoded_size(
*BasisFile,
image_index: u32,
level_index: u32,
format: u32,
size: *u32,
) bool;
pub extern fn transcoder_start_transcoding(*BasisFile) bool;
pub extern fn transcoder_stop_transcoding(*BasisFile) bool;
pub extern fn transcoder_transcode(
*BasisFile,
out: [*]const u8,
out_size: u32,
image_index: u32,
level_index: u32,
format: u32,
decode_flags: u32,
output_row_pitch_in_blocks_or_pixels: u32,
output_rows_in_pixels: u32,
) bool;

View file

@ -0,0 +1,153 @@
#include <basisu_transcoder.h>
#include <cstdbool>
#include <cstdint>
extern "C" {
void basisu_transcoder_init();
bool transcoder_is_format_supported(uint32_t tex_type, uint32_t fmt);
void *transcoder_init(void *src, uint32_t src_size);
void transcoder_deinit(void *h);
uint32_t transcoder_get_images_count(void *h);
uint32_t transcoder_get_levels_count(void *h, uint32_t image_index);
bool transcoder_get_image_level_desc(void *h, uint32_t image_index,
uint32_t level_index, uint32_t &orig_width,
uint32_t &orig_height,
uint32_t &block_count);
bool transcoder_get_image_transcoded_size(void *h, uint32_t image_index,
uint32_t level_index, uint32_t format,
uint32_t &size);
bool transcoder_start_transcoding(void *h);
bool transcoder_stop_transcoding(void *h);
bool transcoder_transcode(void *h, void *out, uint32_t out_size,
uint32_t image_index, uint32_t level_index,
uint32_t format, uint32_t decode_flags,
uint32_t output_row_pitch_in_blocks_or_pixels,
uint32_t output_rows_in_pixels);
}
void basisu_transcoder_init() { basist::basisu_transcoder_init(); }
#define MAGIC 0xDEADBEE1
struct basis_file {
int m_magic;
basist::basisu_transcoder m_transcoder;
void *m_pFile;
uint32_t m_file_size;
basis_file() : m_transcoder() {}
};
// transcoder_texture_format, basis_tex_format
bool transcoder_is_format_supported(uint32_t tex_type, uint32_t fmt) {
return basist::basis_is_format_supported(
(basist::transcoder_texture_format)tex_type,
(basist::basis_tex_format)fmt);
}
// !null - success
// null - validation failure
void *transcoder_init(void *src, uint32_t src_size) {
auto f = new basis_file;
f->m_pFile = src;
f->m_file_size = src_size;
if (!f->m_transcoder.validate_header(f->m_pFile, f->m_file_size)) {
delete f;
return nullptr;
}
f->m_magic = MAGIC;
return f;
}
void transcoder_deinit(void *h) {
auto f = static_cast<basis_file *>(h);
delete f;
}
uint32_t transcoder_get_images_count(void *h) {
auto f = static_cast<basis_file *>(h);
return f->m_transcoder.get_total_images(f->m_pFile, f->m_file_size);
}
uint32_t transcoder_get_levels_count(void *h, uint32_t image_index) {
auto f = static_cast<basis_file *>(h);
return f->m_transcoder.get_total_image_levels(f->m_pFile, f->m_file_size,
image_index);
}
// true - success
// false - OutOfBoundsLevelIndex
bool transcoder_get_image_level_desc(void *h, uint32_t image_index,
uint32_t level_index, uint32_t &orig_width,
uint32_t &orig_height,
uint32_t &block_count) {
auto f = static_cast<basis_file *>(h);
return f->m_transcoder.get_image_level_desc(
f->m_pFile, f->m_file_size, image_index, level_index, orig_width,
orig_height, block_count);
}
// true - success
// false - OutOfBoundsLevelIndex
bool transcoder_get_image_transcoded_size(void *h, uint32_t image_index,
uint32_t level_index, uint32_t format,
uint32_t &size) {
auto f = static_cast<basis_file *>(h);
uint32_t orig_width, orig_height, total_blocks;
if (!f->m_transcoder.get_image_level_desc(
f->m_pFile, f->m_file_size, image_index, level_index, orig_width,
orig_height, total_blocks))
return false;
uint8_t bytes_per_block_or_pixel = basis_get_bytes_per_block_or_pixel(
(basist::transcoder_texture_format)format);
if (basis_transcoder_format_is_uncompressed(
(basist::transcoder_texture_format)format)) {
size = orig_width * orig_height * bytes_per_block_or_pixel;
} else {
size = total_blocks * bytes_per_block_or_pixel;
}
return true;
}
// true - success
// false - unknown
bool transcoder_start_transcoding(void *h) {
auto f = static_cast<basis_file *>(h);
return f->m_transcoder.start_transcoding(f->m_pFile, f->m_file_size);
}
// true - success
// false - unknown
bool transcoder_stop_transcoding(void *h) {
auto f = static_cast<basis_file *>(h);
return f->m_transcoder.stop_transcoding();
}
// true - success
// false - unknown
bool transcoder_transcode(void *h, void *out, uint32_t out_size,
uint32_t image_index, uint32_t level_index,
uint32_t format, uint32_t decode_flags,
uint32_t output_row_pitch_in_blocks_or_pixels,
uint32_t output_rows_in_pixels) {
auto f = static_cast<basis_file *>(h);
uint32_t bytes_per_block = basis_get_bytes_per_block_or_pixel(
(basist::transcoder_texture_format)format);
return f->m_transcoder.transcode_image_level(
f->m_pFile, f->m_file_size, image_index, level_index, out,
out_size / bytes_per_block, (basist::transcoder_texture_format)format,
decode_flags, output_row_pitch_in_blocks_or_pixels, nullptr,
output_rows_in_pixels);
}