From e1e4699a52a8b26d0d20bac7b3670d908dbf7778 Mon Sep 17 00:00:00 2001 From: Bartosz Taudul Date: Sat, 29 Apr 2023 13:10:58 +0200 Subject: [PATCH] Load custom mip chain for zigzags. --- profiler/build/win32/Tracy.vcxproj | 3 +-- profiler/build/win32/Tracy.vcxproj.filters | 5 +---- profiler/src/main.cpp | 23 +++++++++++++++------- profiler/src/zigzag.hpp | 13 ------------ profiler/src/zigzag01.hpp | 10 ++++++++++ profiler/src/zigzag02.hpp | 10 ++++++++++ profiler/src/zigzag04.hpp | 11 +++++++++++ profiler/src/zigzag08.hpp | 11 +++++++++++ profiler/src/zigzag16.hpp | 12 +++++++++++ profiler/src/zigzag32.hpp | 13 ++++++++++++ server/TracyTexture.cpp | 7 +++++-- server/TracyTexture.hpp | 2 +- 12 files changed, 91 insertions(+), 29 deletions(-) delete mode 100644 profiler/src/zigzag.hpp create mode 100644 profiler/src/zigzag01.hpp create mode 100644 profiler/src/zigzag02.hpp create mode 100644 profiler/src/zigzag04.hpp create mode 100644 profiler/src/zigzag08.hpp create mode 100644 profiler/src/zigzag16.hpp create mode 100644 profiler/src/zigzag32.hpp diff --git a/profiler/build/win32/Tracy.vcxproj b/profiler/build/win32/Tracy.vcxproj index 296a9d67..a4586415 100644 --- a/profiler/build/win32/Tracy.vcxproj +++ b/profiler/build/win32/Tracy.vcxproj @@ -344,7 +344,6 @@ - @@ -368,4 +367,4 @@ - \ No newline at end of file + diff --git a/profiler/build/win32/Tracy.vcxproj.filters b/profiler/build/win32/Tracy.vcxproj.filters index ac520436..c0414b39 100644 --- a/profiler/build/win32/Tracy.vcxproj.filters +++ b/profiler/build/win32/Tracy.vcxproj.filters @@ -464,9 +464,6 @@ src - - src - src @@ -788,4 +785,4 @@ zstd\decompress - \ No newline at end of file + diff --git a/profiler/src/main.cpp b/profiler/src/main.cpp index 366b3183..7a26ae3a 100644 --- a/profiler/src/main.cpp +++ b/profiler/src/main.cpp @@ -45,7 +45,12 @@ #include "../../server/IconsFontAwesome6.h" #include "icon.hpp" -#include "zigzag.hpp" +#include "zigzag01.hpp" +#include "zigzag02.hpp" +#include "zigzag04.hpp" +#include "zigzag08.hpp" +#include "zigzag16.hpp" +#include "zigzag32.hpp" #include "Backend.hpp" #include "ConnectionHistory.hpp" @@ -96,8 +101,8 @@ static uint8_t* iconPx; static int iconX, iconY; static void* iconTex; static int iconTexSz; -static uint8_t* zigzagPx; -static int zigzagX, zigzagY; +static uint8_t* zigzagPx[6]; +static int zigzagX[6], zigzagY[6]; void* zigzagTex; static Backend* bptr; static bool s_customTitle = false; @@ -223,7 +228,12 @@ int main( int argc, char** argv ) auto iconThread = std::thread( [] { iconPx = stbi_load_from_memory( (const stbi_uc*)Icon_data, Icon_size, &iconX, &iconY, nullptr, 4 ); - zigzagPx = stbi_load_from_memory( (const stbi_uc*)ZigZag_data, ZigZag_size, &zigzagX, &zigzagY, nullptr, 4 ); + zigzagPx[0] = stbi_load_from_memory( (const stbi_uc*)ZigZag32_data, ZigZag32_size, &zigzagX[0], &zigzagY[0], nullptr, 4 ); + zigzagPx[1] = stbi_load_from_memory( (const stbi_uc*)ZigZag16_data, ZigZag16_size, &zigzagX[1], &zigzagY[1], nullptr, 4 ); + zigzagPx[2] = stbi_load_from_memory( (const stbi_uc*)ZigZag08_data, ZigZag08_size, &zigzagX[2], &zigzagY[2], nullptr, 4 ); + zigzagPx[3] = stbi_load_from_memory( (const stbi_uc*)ZigZag04_data, ZigZag04_size, &zigzagX[3], &zigzagY[3], nullptr, 4 ); + zigzagPx[4] = stbi_load_from_memory( (const stbi_uc*)ZigZag02_data, ZigZag02_size, &zigzagX[4], &zigzagY[4], nullptr, 4 ); + zigzagPx[5] = stbi_load_from_memory( (const stbi_uc*)ZigZag01_data, ZigZag01_size, &zigzagX[5], &zigzagY[5], nullptr, 4 ); } ); ImGuiTracyContext imguiContext; @@ -245,9 +255,8 @@ int main( int argc, char** argv ) SetupDPIScale( dpiScale, s_fixedWidth, s_bigFont, s_smallFont ); - tracy::UpdateTextureRGBA( zigzagTex, zigzagPx, zigzagX, zigzagY ); - tracy::MakeMipMaps( zigzagTex ); - free( zigzagPx ); + tracy::UpdateTextureRGBAMips( zigzagTex, (void**)zigzagPx, zigzagX, zigzagY, 6 ); + for( auto& v : zigzagPx ) free( v ); if( initFileOpen ) { diff --git a/profiler/src/zigzag.hpp b/profiler/src/zigzag.hpp deleted file mode 100644 index dc869995..00000000 --- a/profiler/src/zigzag.hpp +++ /dev/null @@ -1,13 +0,0 @@ -// File: 'zigzag.png' (284 bytes) -// Exported using binary_to_compressed_c.cpp -static const unsigned int ZigZag_size = 284; -static const unsigned int ZigZag_data[284/4] = -{ - 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x20000000, 0x20000000, 0x00000304, 0x67548100, 0x000000c7, 0x58457419, 0x666f5374, 0x72617774, - 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x0000c30e, 0xc701c30e, 0x0064a86f, 0x501b0000, - 0x5045544c, 0xffff5050, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x289affff, 0x00004ebe, 0x52740800, 0x0100534e, 0x975d5c02, - 0xd8b39e9d, 0x0000cae9, 0x44496e00, 0xda785441, 0x01b74fbd, 0x130020c3, 0xa732909c, 0xb90bcf67, 0x99899982, 0xa75f4023, 0xa3b2985a, 0x315406c5, - 0x1a27d70d, 0xa88f9718, 0x2a2327b1, 0x9aa640d8, 0xf40a6772, 0x6bdfc10d, 0x68f99eca, 0xa3f2e55c, 0xdf8b14af, 0x772e2daf, 0xeff84a30, 0x01e8fd04, - 0x990a4aa2, 0x1f8c7cc9, 0x86130e0b, 0x10a51591, 0xd8411144, 0x6f0b303e, 0x8229622a, 0xc3e60235, 0x00000000, 0x444e4549, 0x826042ae, -}; - diff --git a/profiler/src/zigzag01.hpp b/profiler/src/zigzag01.hpp new file mode 100644 index 00000000..4c23d5b3 --- /dev/null +++ b/profiler/src/zigzag01.hpp @@ -0,0 +1,10 @@ +// File: 'zigzag01.png' (126 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag01_size = 126; +static const unsigned int ZigZag01_data[128/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x01000000, 0x01000000, 0x00000408, 0x0c1cb500, 0x00000002, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x00007600, 0x4e017600, 0x0008267b, 0x490b0000, + 0x78544144, 0xbff963da, 0xb802001a, 0x77afaf01, 0x0000dbd6, 0x45490000, 0x42ae444e, 0x00008260, +}; + diff --git a/profiler/src/zigzag02.hpp b/profiler/src/zigzag02.hpp new file mode 100644 index 00000000..9be85eaa --- /dev/null +++ b/profiler/src/zigzag02.hpp @@ -0,0 +1,10 @@ +// File: 'zigzag02.png' (133 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag02_size = 133; +static const unsigned int ZigZag02_data[136/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x02000000, 0x02000000, 0x00000408, 0xc5bfd800, 0x000000af, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x0000ec00, 0x7901ec00, 0x00bd7128, 0x49120000, + 0x78544144, 0xfffc63da, 0xf19fa18c, 0x0143297f, 0x04651900, 0x4bae135b, 0x000000a6, 0x4e454900, 0x6042ae44, 0x00000082, +}; + diff --git a/profiler/src/zigzag04.hpp b/profiler/src/zigzag04.hpp new file mode 100644 index 00000000..ac90ca16 --- /dev/null +++ b/profiler/src/zigzag04.hpp @@ -0,0 +1,11 @@ +// File: 'zigzag04.png' (151 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag04_size = 151; +static const unsigned int ZigZag04_data[152/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x04000000, 0x04000000, 0x00000408, 0x56f80300, 0x000000f5, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x0000d801, 0xfa01d801, 0x0072a65c, 0x49240000, + 0x78544144, 0x6ff863da, 0x8022dff1, 0xe1818021, 0x74202bff, 0x00c0eff8, 0x061c4022, 0xf37ff090, 0x5500e6ff, 0x70bb123d, 0x0058f936, 0x49000000, + 0xae444e45, 0x00826042, +}; + diff --git a/profiler/src/zigzag08.hpp b/profiler/src/zigzag08.hpp new file mode 100644 index 00000000..e69863cb --- /dev/null +++ b/profiler/src/zigzag08.hpp @@ -0,0 +1,11 @@ +// File: 'zigzag08.png' (191 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag08_size = 191; +static const unsigned int ZigZag08_data[192/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x08000000, 0x08000000, 0x00000304, 0xa3213600, 0x000000b8, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x0000b003, 0x2701b003, 0x00ad0fc4, 0x500f0000, + 0x5045544c, 0xffff5050, 0xffffffff, 0xffffffff, 0x5a2fffff, 0x0000b6c6, 0x52740500, 0x3700534e, 0x35ea4038, 0x00e23649, 0x49200000, 0x78544144, + 0x030063da, 0x61200526, 0x9c240ce2, 0x19980c4d, 0x4d9d980c, 0x028c0260, 0x32001560, 0x4e760248, 0x00382c13, 0x49000000, 0xae444e45, 0x00826042, +}; + diff --git a/profiler/src/zigzag16.hpp b/profiler/src/zigzag16.hpp new file mode 100644 index 00000000..440d735d --- /dev/null +++ b/profiler/src/zigzag16.hpp @@ -0,0 +1,12 @@ +// File: 'zigzag16.png' (234 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag16_size = 234; +static const unsigned int ZigZag16_data[236/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x10000000, 0x10000000, 0x00000304, 0xe2dded00, 0x00000052, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x00006107, 0x95016107, 0x00b6b8c3, 0x501b0000, + 0x5045544c, 0xffff5050, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x289affff, 0x00004ebe, 0x52740900, 0x3700534e, 0x403d3c38, + 0x6aeae942, 0x0041d380, 0x493b0000, 0x78544144, 0x07c063da, 0x8ca01498, 0xcd085688, 0x009e6652, 0x3027b866, 0xad198197, 0x0600c940, 0x10065606, + 0x4580e201, 0x205813cd, 0xee65ccd2, 0x3046a809, 0xb3e00a30, 0x4f750012, 0x7fcbb408, 0x000025f6, 0x45490000, 0x42ae444e, 0x00008260, +}; + diff --git a/profiler/src/zigzag32.hpp b/profiler/src/zigzag32.hpp new file mode 100644 index 00000000..4521d9f6 --- /dev/null +++ b/profiler/src/zigzag32.hpp @@ -0,0 +1,13 @@ +// File: 'zigzag32.png' (263 bytes) +// Exported using binary_to_compressed_c.cpp +static const unsigned int ZigZag32_size = 263; +static const unsigned int ZigZag32_data[264/4] = +{ + 0x474e5089, 0x0a1a0a0d, 0x0d000000, 0x52444849, 0x20000000, 0x20000000, 0x00000304, 0x67548100, 0x000000c7, 0x58457419, 0x666f5374, 0x72617774, + 0x77770065, 0x6e692e77, 0x6163736b, 0x6f2e6570, 0xee9b6772, 0x00001a3c, 0x48700900, 0x00007359, 0x0000c30e, 0xc701c30e, 0x0064a86f, 0x50180000, + 0x5045544c, 0xffff5050, 0xffffffff, 0xffffffff, 0xffffffff, 0xffffffff, 0x1dffffff, 0x002deec8, 0x74070000, 0x00534e52, 0x877e7d01, 0xbd7e8f88, + 0x0000db4b, 0x44495d00, 0xda785441, 0xc0381863, 0x902680a4, 0x67ca865e, 0x404f4b2b, 0x604f0811, 0xe2401329, 0xb83502b3, 0x002b2227, 0x412887aa, + 0x02514028, 0x610d9031, 0x50859811, 0x5600cac2, 0x1c253080, 0x928456bb, 0xcc30b070, 0x08959814, 0x08055025, 0x08057025, 0x060fe24f, 0x81836606, + 0x3c00248b, 0x79101397, 0x00b45f6d, 0x49000000, 0xae444e45, 0x00826042, +}; + diff --git a/server/TracyTexture.cpp b/server/TracyTexture.cpp index f4e98125..aa867894 100644 --- a/server/TracyTexture.cpp +++ b/server/TracyTexture.cpp @@ -174,11 +174,14 @@ void UpdateTextureRGBA( void* _tex, void* data, int w, int h ) glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data ); } -void MakeMipMaps( void* _tex ) +void UpdateTextureRGBAMips( void* _tex, void** data, int* w, int* h, size_t mips ) { auto tex = (GLuint)(intptr_t)_tex; glBindTexture( GL_TEXTURE_2D, tex ); - glGenerateMipmap( GL_TEXTURE_2D ); + for( size_t i=0; i&, bool) ); void UpdateTexture( void* tex, const char* data, int w, int h ); void UpdateTextureRGBA( void* tex, void* data, int w, int h ); -void MakeMipMaps( void* tex ); +void UpdateTextureRGBAMips( void* tex, void** data, int* w, int* h, size_t mips ); }