diff --git a/profiler/build/win32/Tracy.vcxproj b/profiler/build/win32/Tracy.vcxproj
index a2ec9f12..3a811396 100644
--- a/profiler/build/win32/Tracy.vcxproj
+++ b/profiler/build/win32/Tracy.vcxproj
@@ -114,6 +114,7 @@
+
@@ -165,6 +166,7 @@
+
diff --git a/profiler/build/win32/Tracy.vcxproj.filters b/profiler/build/win32/Tracy.vcxproj.filters
index 38617da3..ec971086 100644
--- a/profiler/build/win32/Tracy.vcxproj.filters
+++ b/profiler/build/win32/Tracy.vcxproj.filters
@@ -93,6 +93,9 @@
imgui
+
+ server
+
@@ -257,6 +260,9 @@
src
+
+ server
+
diff --git a/server/TracyTexture.cpp b/server/TracyTexture.cpp
new file mode 100644
index 00000000..9743381b
--- /dev/null
+++ b/server/TracyTexture.cpp
@@ -0,0 +1,31 @@
+#include
+
+#include "TracyTexture.hpp"
+
+namespace tracy
+{
+
+void* MakeTexture()
+{
+ GLuint tex;
+ glGenTextures( 1, &tex );
+ glBindTexture( GL_TEXTURE_2D, tex );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
+ glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
+ return (void*)tex;
+}
+
+void FreeTexture( void* _tex )
+{
+ auto tex = (GLuint)_tex;
+ glDeleteTextures( 1, &tex );
+}
+
+void UpdateTexture( void* _tex, const char* data, int w, int h )
+{
+ auto tex = (GLuint)_tex;
+ glBindTexture( GL_TEXTURE_2D, tex );
+ glTexImage2D( GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, data );
+}
+
+}
diff --git a/server/TracyTexture.hpp b/server/TracyTexture.hpp
new file mode 100644
index 00000000..87e03f04
--- /dev/null
+++ b/server/TracyTexture.hpp
@@ -0,0 +1,13 @@
+#ifndef __TRACYTEXTURE_HPP__
+#define __TRACYTEXTURE_HPP__
+
+namespace tracy
+{
+
+void* MakeTexture();
+void FreeTexture( void* tex );
+void UpdateTexture( void* tex, const char* data, int w, int h );
+
+}
+
+#endif