mirror of
https://github.com/seekrs/MacroLibX.git
synced 2026-01-10 22:23:34 +00:00
fixing things
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -13,6 +13,7 @@
|
|||||||
*.pdb
|
*.pdb
|
||||||
*.gch
|
*.gch
|
||||||
*.pch
|
*.pch
|
||||||
|
*.sym
|
||||||
*.exe
|
*.exe
|
||||||
*vgcore.*
|
*vgcore.*
|
||||||
*.gdb_history
|
*.gdb_history
|
||||||
|
|||||||
@@ -18,23 +18,25 @@ typedef struct
|
|||||||
|
|
||||||
static mlx_color pixels_circle[CIRCLE_DIAMETER * CIRCLE_DIAMETER] = { 0 };
|
static mlx_color pixels_circle[CIRCLE_DIAMETER * CIRCLE_DIAMETER] = { 0 };
|
||||||
|
|
||||||
|
#define THRESHOLD 200
|
||||||
|
|
||||||
void update(void* param)
|
void update(void* param)
|
||||||
{
|
{
|
||||||
static int i = 0;
|
static int i = 0;
|
||||||
mlx_t* mlx = (mlx_t*)param;
|
mlx_t* mlx = (mlx_t*)param;
|
||||||
|
|
||||||
if(i > 200)
|
if(i > THRESHOLD)
|
||||||
{
|
{
|
||||||
mlx_clear_window(mlx->mlx, mlx->win, (mlx_color){ .rgba = 0x334D4DFF });
|
mlx_clear_window(mlx->mlx, mlx->win, (mlx_color){ .rgba = 0x334D4DFF });
|
||||||
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_bmp, 220, 40, 0.5f, 0.5f, i);
|
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_bmp, 220, 40, 0.5f, 0.5f, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i >= 250)
|
if(i >= THRESHOLD + THRESHOLD / 4)
|
||||||
mlx_set_font_scale(mlx->mlx, "default", 16.f);
|
mlx_set_font_scale(mlx->mlx, "default", 16.f);
|
||||||
else
|
else
|
||||||
mlx_set_font_scale(mlx->mlx, "default", 6.f);
|
mlx_set_font_scale(mlx->mlx, "default", 6.f);
|
||||||
|
|
||||||
mlx_string_put(mlx->mlx, mlx->win, 160, 120, (mlx_color){ .rgba = 0xFF2066FF }, "this text should be hidden");
|
mlx_string_put(mlx->mlx, mlx->win, 160, 120, (mlx_color){ .rgba = 0xFF2066FF }, "this text should be behind");
|
||||||
|
|
||||||
mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_png, 100, 100);
|
mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->logo_png, 100, 100);
|
||||||
mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->img, 150, 60);
|
mlx_put_image_to_window(mlx->mlx, mlx->win, mlx->img, 150, 60);
|
||||||
@@ -50,7 +52,7 @@ void update(void* param)
|
|||||||
color += (color < 255);
|
color += (color < 255);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(i < 200)
|
if(i < THRESHOLD)
|
||||||
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150, 0.5f, 2.0f, 0.0f);
|
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150, 0.5f, 2.0f, 0.0f);
|
||||||
else
|
else
|
||||||
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150, fabs(sin(i / 100.0f)), fabs(cos(i / 100.0f) * 2.0f), 0.0f);
|
mlx_put_transformed_image_to_window(mlx->mlx, mlx->win, mlx->logo_jpg, 210, 150, fabs(sin(i / 100.0f)), fabs(cos(i / 100.0f) * 2.0f), 0.0f);
|
||||||
@@ -59,7 +61,7 @@ void update(void* param)
|
|||||||
|
|
||||||
mlx_pixel_put_region(mlx->mlx, mlx->win, 200, 170, CIRCLE_DIAMETER, CIRCLE_DIAMETER, pixels_circle);
|
mlx_pixel_put_region(mlx->mlx, mlx->win, 200, 170, CIRCLE_DIAMETER, CIRCLE_DIAMETER, pixels_circle);
|
||||||
|
|
||||||
i++;
|
i++; // Will overflow and I don't care
|
||||||
}
|
}
|
||||||
|
|
||||||
mlx_image create_image(mlx_t* mlx)
|
mlx_image create_image(mlx_t* mlx)
|
||||||
@@ -166,14 +168,9 @@ int main(void)
|
|||||||
mlx_on_event(mlx.mlx, mlx.win, MLX_KEYDOWN, key_hook, &mlx);
|
mlx_on_event(mlx.mlx, mlx.win, MLX_KEYDOWN, key_hook, &mlx);
|
||||||
mlx_on_event(mlx.mlx, mlx.win, MLX_WINDOW_EVENT, window_hook, &mlx);
|
mlx_on_event(mlx.mlx, mlx.win, MLX_WINDOW_EVENT, window_hook, &mlx);
|
||||||
|
|
||||||
mlx.logo_png = mlx_new_image_from_file(mlx.mlx, "42_logo.png", &dummy, &dummy);
|
|
||||||
mlx.logo_bmp = mlx_new_image_from_file(mlx.mlx, "42_logo.bmp", &dummy, &dummy);
|
mlx.logo_bmp = mlx_new_image_from_file(mlx.mlx, "42_logo.bmp", &dummy, &dummy);
|
||||||
//mlx.logo_jpg = mlx_new_image_from_file(mlx.mlx, "42_logo.jpg", &dummy, &dummy);
|
mlx.logo_png = mlx_new_image_from_file(mlx.mlx, "42_logo.png", &dummy, &dummy);
|
||||||
mlx.logo_jpg = mlx_new_image(mlx.mlx, dummy, dummy);
|
mlx.logo_jpg = mlx_new_image_from_file(mlx.mlx, "42_logo.jpg", &dummy, &dummy);
|
||||||
|
|
||||||
mlx_color* data = (mlx_color*)malloc(dummy * dummy * sizeof(mlx_color));
|
|
||||||
mlx_get_image_region(mlx.mlx, mlx.logo_png, 0, 0, dummy, dummy, data);
|
|
||||||
mlx_set_image_region(mlx.mlx, mlx.logo_jpg, 0, 0, dummy, dummy, data);
|
|
||||||
|
|
||||||
mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, (mlx_color){ .rgba = 0xFF00FFFF });
|
mlx_pixel_put(mlx.mlx, mlx.win, 200, 10, (mlx_color){ .rgba = 0xFF00FFFF });
|
||||||
mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo_png, 0, 0);
|
mlx_put_image_to_window(mlx.mlx, mlx.win, mlx.logo_png, 0, 0);
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
/* By: maldavid <contact@kbz8.me> +#+ +:+ +#+ */
|
/* By: maldavid <contact@kbz8.me> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */
|
/* Created: 2022/10/04 16:56:35 by maldavid #+# #+# */
|
||||||
/* Updated: 2024/12/20 00:42:01 by maldavid ### ########.fr */
|
/* Updated: 2025/01/05 22:44:22 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
@@ -79,7 +79,7 @@ MLX_API mlx_context mlx_init();
|
|||||||
* @brief Caps the FPS
|
* @brief Caps the FPS
|
||||||
*
|
*
|
||||||
* @param mlx Internal MLX application
|
* @param mlx Internal MLX application
|
||||||
* @param fps The FPS cap
|
* @param fps The FPS cap or 0 for vsync
|
||||||
*/
|
*/
|
||||||
MLX_API void mlx_set_fps_goal(mlx_context mlx, int fps);
|
MLX_API void mlx_set_fps_goal(mlx_context mlx, int fps);
|
||||||
|
|
||||||
|
|||||||
@@ -6,12 +6,12 @@
|
|||||||
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
/* By: maldavid <kbz_8.dev@akel-engine.com> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */
|
/* Created: 2023/11/10 08:49:17 by maldavid #+# #+# */
|
||||||
/* Updated: 2024/12/17 00:35:35 by maldavid ### ########.fr */
|
/* Updated: 2025/01/07 00:17:45 by maldavid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
#ifndef __MLX_PROFILE__
|
#ifndef MACROLIBX_PROFILE_H
|
||||||
#define __MLX_PROFILE__
|
#define MACROLIBX_PROFILE_H
|
||||||
|
|
||||||
// Try to identify the compiler
|
// Try to identify the compiler
|
||||||
#if defined(__BORLANDC__)
|
#if defined(__BORLANDC__)
|
||||||
|
|||||||
@@ -50,6 +50,13 @@ namespace mlx
|
|||||||
|
|
||||||
void Application::SetFPSCap(std::uint32_t fps) noexcept
|
void Application::SetFPSCap(std::uint32_t fps) noexcept
|
||||||
{
|
{
|
||||||
|
if(fps == 0)
|
||||||
|
{
|
||||||
|
SDL_DisplayMode mode;
|
||||||
|
if(!SDL_GetCurrentDisplayMode(1, &mode))
|
||||||
|
return;
|
||||||
|
fps = mode.refresh_rate;
|
||||||
|
}
|
||||||
m_fps.SetMaxFPS(fps);
|
m_fps.SetMaxFPS(fps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,13 +22,13 @@ namespace mlx
|
|||||||
|
|
||||||
void Render() noexcept;
|
void Render() noexcept;
|
||||||
|
|
||||||
inline void ResetRenderData(mlx_color color) noexcept;
|
void ResetRenderData(mlx_color color) noexcept;
|
||||||
|
|
||||||
inline void PixelPut(int x, int y, mlx_color color) noexcept;
|
void PixelPut(int x, int y, mlx_color color) noexcept;
|
||||||
inline void PixelPutArray(int x, int y, mlx_color* color, std::size_t pixels_size) noexcept;
|
void PixelPutArray(int x, int y, mlx_color* color, std::size_t pixels_size) noexcept;
|
||||||
inline void PixelPutRegion(int x, int y, int w, int h, mlx_color* color) noexcept;
|
void PixelPutRegion(int x, int y, int w, int h, mlx_color* color) noexcept;
|
||||||
inline void StringPut(int x, int y, mlx_color color, std::string str);
|
void StringPut(int x, int y, mlx_color color, std::string str);
|
||||||
inline void TexturePut(NonOwningPtr<class Texture> texture, int x, int y, float scale_x, float scale_y, float angle);
|
void TexturePut(NonOwningPtr<class Texture> texture, int x, int y, float scale_x, float scale_y, float angle);
|
||||||
|
|
||||||
inline void TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept;
|
inline void TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept;
|
||||||
|
|
||||||
|
|||||||
@@ -3,107 +3,6 @@
|
|||||||
|
|
||||||
namespace mlx
|
namespace mlx
|
||||||
{
|
{
|
||||||
void GraphicsSupport::ResetRenderData(mlx_color color) noexcept
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
Vec4f vec_color = {
|
|
||||||
static_cast<float>(color.r) / 255.0f,
|
|
||||||
static_cast<float>(color.g) / 255.0f,
|
|
||||||
static_cast<float>(color.b) / 255.0f,
|
|
||||||
static_cast<float>(color.a) / 255.0f
|
|
||||||
};
|
|
||||||
p_scene->ResetScene(std::move(vec_color));
|
|
||||||
m_put_pixel_manager.ResetRenderData();
|
|
||||||
m_draw_layer = 0;
|
|
||||||
m_pixelput_called = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::PixelPut(int x, int y, mlx_color color) noexcept
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixel(x, y, m_draw_layer, color);
|
|
||||||
if(texture)
|
|
||||||
{
|
|
||||||
m_pixelput_called = true;
|
|
||||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
|
||||||
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::PixelPutArray(int x, int y, mlx_color* pixels, std::size_t pixels_size) noexcept
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixelsArray(x, y, m_draw_layer, pixels, pixels_size);
|
|
||||||
if(texture)
|
|
||||||
{
|
|
||||||
m_pixelput_called = true;
|
|
||||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
|
||||||
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::PixelPutRegion(int x, int y, int w, int h, mlx_color* pixels) noexcept
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixelsRegion(x, y, w, h, m_draw_layer, pixels);
|
|
||||||
if(texture)
|
|
||||||
{
|
|
||||||
m_pixelput_called = true;
|
|
||||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
|
||||||
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::StringPut(int x, int y, mlx_color color, std::string str)
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
if(str.empty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
Vec4f vec_color = {
|
|
||||||
static_cast<float>(color.r) / 255.0f,
|
|
||||||
static_cast<float>(color.g) / 255.0f,
|
|
||||||
static_cast<float>(color.b) / 255.0f,
|
|
||||||
static_cast<float>(color.a) / 255.0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
NonOwningPtr<Text> text = p_scene->GetTextFromPositionAndColor(str, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, vec_color);
|
|
||||||
if(!text)
|
|
||||||
{
|
|
||||||
if(m_pixelput_called)
|
|
||||||
{
|
|
||||||
m_draw_layer++;
|
|
||||||
m_pixelput_called = false;
|
|
||||||
}
|
|
||||||
Text& new_text = p_scene->CreateText(str);
|
|
||||||
new_text.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
|
||||||
new_text.SetColor(std::move(vec_color));
|
|
||||||
}
|
|
||||||
else if(!p_scene->IsTextAtGivenDrawLayer(str, m_draw_layer))
|
|
||||||
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, int x, int y, float scale_x, float scale_y, float angle)
|
|
||||||
{
|
|
||||||
MLX_PROFILE_FUNCTION();
|
|
||||||
NonOwningPtr<Sprite> sprite = p_scene->GetSpriteFromTexturePositionScaleRotation(texture, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, scale_x, scale_y, angle);
|
|
||||||
if(!sprite)
|
|
||||||
{
|
|
||||||
if(m_pixelput_called)
|
|
||||||
{
|
|
||||||
m_draw_layer++;
|
|
||||||
m_pixelput_called = false;
|
|
||||||
}
|
|
||||||
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
|
||||||
new_sprite.SetCenter(Vec2f{ texture->GetWidth() / 2.0f, texture->GetHeight() / 2.0f });
|
|
||||||
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
|
||||||
new_sprite.SetScale(Vec2f{ scale_x, scale_y });
|
|
||||||
new_sprite.SetRotation(angle);
|
|
||||||
}
|
|
||||||
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
|
||||||
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
void GraphicsSupport::TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept
|
void GraphicsSupport::TryEraseSpritesInScene(NonOwningPtr<Texture> texture) noexcept
|
||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
|
|||||||
@@ -29,17 +29,21 @@ namespace mlx
|
|||||||
|
|
||||||
void BringToDrawLayer(NonOwningPtr<Drawable> drawable, std::uint64_t draw_layer);
|
void BringToDrawLayer(NonOwningPtr<Drawable> drawable, std::uint64_t draw_layer);
|
||||||
|
|
||||||
inline void ResetScene(Vec4f clear) { m_drawables.clear(); m_clear_color = std::move(clear); }
|
inline void ResetScene(Vec4f clear) { m_drawables.clear(); m_clear_color = std::move(clear); m_has_scene_changed = true; }
|
||||||
inline const Vec4f& GetClearColor() const noexcept { return m_clear_color; }
|
inline const Vec4f& GetClearColor() const noexcept { return m_clear_color; }
|
||||||
|
|
||||||
[[nodiscard]] MLX_FORCEINLINE const std::vector<std::shared_ptr<Drawable>>& GetDrawables() const noexcept { return m_drawables; }
|
[[nodiscard]] MLX_FORCEINLINE const std::vector<std::shared_ptr<Drawable>>& GetDrawables() const noexcept { return m_drawables; }
|
||||||
|
|
||||||
|
inline void ResetChangeChecker() noexcept { m_has_scene_changed = false; }
|
||||||
|
inline bool HasSceneChanged() const noexcept { return m_has_scene_changed; }
|
||||||
|
|
||||||
~Scene() = default;
|
~Scene() = default;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::shared_ptr<Drawable>> m_drawables;
|
std::vector<std::shared_ptr<Drawable>> m_drawables;
|
||||||
std::shared_ptr<Font> p_bound_font;
|
std::shared_ptr<Font> p_bound_font;
|
||||||
Vec4f m_clear_color = { 0.0f, 0.0f, 0.0f, 1.0f };
|
Vec4f m_clear_color = { 0.0f, 0.0f, 0.0f, 1.0f };
|
||||||
|
bool m_has_scene_changed = false;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -66,6 +66,7 @@ namespace mlx
|
|||||||
catch(...) { return nullptr; }
|
catch(...) { return nullptr; }
|
||||||
m_image_registry.RegisterTexture(texture);
|
m_image_registry.RegisterTexture(texture);
|
||||||
image->texture = texture;
|
image->texture = texture;
|
||||||
|
texture->Clear(VK_NULL_HANDLE, Vec4f{ 0.0f });
|
||||||
return image;
|
return image;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -47,8 +47,6 @@ extern "C"
|
|||||||
MLX_CHECK_APPLICATION_POINTER(mlx);
|
MLX_CHECK_APPLICATION_POINTER(mlx);
|
||||||
if(fps < 0)
|
if(fps < 0)
|
||||||
mlx::Error("You cannot set a negative FPS cap (nice try)");
|
mlx::Error("You cannot set a negative FPS cap (nice try)");
|
||||||
else if(fps == 0)
|
|
||||||
mlx::Error("You cannot set a FPS cap to 0 (nice try)");
|
|
||||||
else
|
else
|
||||||
mlx->app->SetFPSCap(static_cast<std::uint32_t>(fps));
|
mlx->app->SetFPSCap(static_cast<std::uint32_t>(fps));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,107 @@ namespace mlx
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::ResetRenderData(mlx_color color) noexcept
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
Vec4f vec_color = {
|
||||||
|
static_cast<float>(color.r) / 255.0f,
|
||||||
|
static_cast<float>(color.g) / 255.0f,
|
||||||
|
static_cast<float>(color.b) / 255.0f,
|
||||||
|
static_cast<float>(color.a) / 255.0f
|
||||||
|
};
|
||||||
|
p_scene->ResetScene(std::move(vec_color));
|
||||||
|
m_put_pixel_manager.ResetRenderData();
|
||||||
|
m_draw_layer = 0;
|
||||||
|
m_pixelput_called = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::PixelPut(int x, int y, mlx_color color) noexcept
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixel(x, y, m_draw_layer, color);
|
||||||
|
if(texture)
|
||||||
|
{
|
||||||
|
m_pixelput_called = true;
|
||||||
|
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||||
|
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::PixelPutArray(int x, int y, mlx_color* pixels, std::size_t pixels_size) noexcept
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixelsArray(x, y, m_draw_layer, pixels, pixels_size);
|
||||||
|
if(texture)
|
||||||
|
{
|
||||||
|
m_pixelput_called = true;
|
||||||
|
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||||
|
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::PixelPutRegion(int x, int y, int w, int h, mlx_color* pixels) noexcept
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
NonOwningPtr<Texture> texture = m_put_pixel_manager.DrawPixelsRegion(x, y, w, h, m_draw_layer, pixels);
|
||||||
|
if(texture)
|
||||||
|
{
|
||||||
|
m_pixelput_called = true;
|
||||||
|
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||||
|
new_sprite.SetPosition(Vec2f{ 0.0f, 0.0f });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::StringPut(int x, int y, mlx_color color, std::string str)
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
if(str.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
Vec4f vec_color = {
|
||||||
|
static_cast<float>(color.r) / 255.0f,
|
||||||
|
static_cast<float>(color.g) / 255.0f,
|
||||||
|
static_cast<float>(color.b) / 255.0f,
|
||||||
|
static_cast<float>(color.a) / 255.0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
NonOwningPtr<Text> text = p_scene->GetTextFromPositionAndColor(str, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, vec_color);
|
||||||
|
if(!text)
|
||||||
|
{
|
||||||
|
if(m_pixelput_called)
|
||||||
|
{
|
||||||
|
m_draw_layer++;
|
||||||
|
m_pixelput_called = false;
|
||||||
|
}
|
||||||
|
Text& new_text = p_scene->CreateText(str);
|
||||||
|
new_text.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
||||||
|
new_text.SetColor(std::move(vec_color));
|
||||||
|
}
|
||||||
|
else if(!p_scene->IsTextAtGivenDrawLayer(str, m_draw_layer))
|
||||||
|
p_scene->BringToDrawLayer(text.Get(), m_draw_layer);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GraphicsSupport::TexturePut(NonOwningPtr<Texture> texture, int x, int y, float scale_x, float scale_y, float angle)
|
||||||
|
{
|
||||||
|
MLX_PROFILE_FUNCTION();
|
||||||
|
NonOwningPtr<Sprite> sprite = p_scene->GetSpriteFromTexturePositionScaleRotation(texture, Vec2f{ static_cast<float>(x), static_cast<float>(y) }, scale_x, scale_y, angle);
|
||||||
|
if(!sprite)
|
||||||
|
{
|
||||||
|
if(m_pixelput_called)
|
||||||
|
{
|
||||||
|
m_draw_layer++;
|
||||||
|
m_pixelput_called = false;
|
||||||
|
}
|
||||||
|
Sprite& new_sprite = p_scene->CreateSprite(texture);
|
||||||
|
new_sprite.SetCenter(Vec2f{ texture->GetWidth() / 2.0f, texture->GetHeight() / 2.0f });
|
||||||
|
new_sprite.SetPosition(Vec2f{ static_cast<float>(x), static_cast<float>(y) });
|
||||||
|
new_sprite.SetScale(Vec2f{ scale_x, scale_y });
|
||||||
|
new_sprite.SetRotation(angle);
|
||||||
|
}
|
||||||
|
else if(!p_scene->IsTextureAtGivenDrawLayer(texture, m_draw_layer))
|
||||||
|
p_scene->BringToDrawLayer(sprite.Get(), m_draw_layer);
|
||||||
|
}
|
||||||
|
|
||||||
GraphicsSupport::~GraphicsSupport()
|
GraphicsSupport::~GraphicsSupport()
|
||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
|
|||||||
@@ -18,12 +18,14 @@ namespace mlx
|
|||||||
{
|
{
|
||||||
std::shared_ptr<Sprite> new_sprite = std::make_shared<Sprite>(drawable->GetMesh(), texture);
|
std::shared_ptr<Sprite> new_sprite = std::make_shared<Sprite>(drawable->GetMesh(), texture);
|
||||||
m_drawables.push_back(new_sprite);
|
m_drawables.push_back(new_sprite);
|
||||||
|
m_has_scene_changed = true;
|
||||||
return *new_sprite;
|
return *new_sprite;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Sprite> sprite = std::make_shared<Sprite>(texture);
|
std::shared_ptr<Sprite> sprite = std::make_shared<Sprite>(texture);
|
||||||
m_drawables.push_back(sprite);
|
m_drawables.push_back(sprite);
|
||||||
|
m_has_scene_changed = true;
|
||||||
return *sprite;
|
return *sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -83,12 +85,14 @@ namespace mlx
|
|||||||
{
|
{
|
||||||
std::shared_ptr<Text> new_text = std::make_shared<Text>(text, p_bound_font, drawable->GetMesh());
|
std::shared_ptr<Text> new_text = std::make_shared<Text>(text, p_bound_font, drawable->GetMesh());
|
||||||
m_drawables.push_back(new_text);
|
m_drawables.push_back(new_text);
|
||||||
|
m_has_scene_changed = true;
|
||||||
return *new_text;
|
return *new_text;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Text> new_text = std::make_shared<Text>(text, p_bound_font);
|
std::shared_ptr<Text> new_text = std::make_shared<Text>(text, p_bound_font);
|
||||||
m_drawables.push_back(new_text);
|
m_drawables.push_back(new_text);
|
||||||
|
m_has_scene_changed = true;
|
||||||
return *new_text;
|
return *new_text;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -127,5 +131,6 @@ namespace mlx
|
|||||||
if(it == m_drawables.end())
|
if(it == m_drawables.end())
|
||||||
return;
|
return;
|
||||||
std::swap(*it, *(m_drawables.begin() + draw_layer));
|
std::swap(*it, *(m_drawables.begin() + draw_layer));
|
||||||
|
m_has_scene_changed = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,9 +227,27 @@ namespace mlx
|
|||||||
{
|
{
|
||||||
MLX_PROFILE_FUNCTION();
|
MLX_PROFILE_FUNCTION();
|
||||||
Verify(m_sets[i] != VK_NULL_HANDLE, "invalid descriptor");
|
Verify(m_sets[i] != VK_NULL_HANDLE, "invalid descriptor");
|
||||||
std::vector<VkWriteDescriptorSet> writes;
|
|
||||||
std::vector<VkDescriptorBufferInfo> buffer_infos;
|
std::size_t image_count = 0;
|
||||||
std::vector<VkDescriptorImageInfo> image_infos;
|
std::size_t buffer_count = 0;
|
||||||
|
|
||||||
|
for(auto& descriptor : m_descriptors)
|
||||||
|
{
|
||||||
|
if(descriptor.image_ptr)
|
||||||
|
image_count++;
|
||||||
|
else if(descriptor.uniform_buffer_ptr || descriptor.storage_buffer_ptr)
|
||||||
|
buffer_count++;
|
||||||
|
else
|
||||||
|
FatalError("unknown descriptor data");
|
||||||
|
}
|
||||||
|
|
||||||
|
std::vector<VkWriteDescriptorSet> writes(m_descriptors.size());
|
||||||
|
std::vector<VkDescriptorBufferInfo> buffer_infos(buffer_count);
|
||||||
|
std::vector<VkDescriptorImageInfo> image_infos(image_count);
|
||||||
|
std::size_t buffer_index = 0;
|
||||||
|
std::size_t image_index = 0;
|
||||||
|
std::size_t write_index = 0;
|
||||||
|
|
||||||
for(auto& descriptor : m_descriptors)
|
for(auto& descriptor : m_descriptors)
|
||||||
{
|
{
|
||||||
if(descriptor.image_ptr)
|
if(descriptor.image_ptr)
|
||||||
@@ -239,8 +257,9 @@ namespace mlx
|
|||||||
info.sampler = descriptor.image_ptr->GetSampler();
|
info.sampler = descriptor.image_ptr->GetSampler();
|
||||||
info.imageLayout = descriptor.image_ptr->GetLayout();
|
info.imageLayout = descriptor.image_ptr->GetLayout();
|
||||||
info.imageView = descriptor.image_ptr->GetImageView();
|
info.imageView = descriptor.image_ptr->GetImageView();
|
||||||
image_infos.push_back(info);
|
image_infos[image_index] = std::move(info);
|
||||||
writes.push_back(kvfWriteImageToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &image_infos.back(), descriptor.binding));
|
writes[write_index] = kvfWriteImageToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &image_infos[image_index], descriptor.binding);
|
||||||
|
image_index++;
|
||||||
}
|
}
|
||||||
else if(descriptor.uniform_buffer_ptr)
|
else if(descriptor.uniform_buffer_ptr)
|
||||||
{
|
{
|
||||||
@@ -248,8 +267,9 @@ namespace mlx
|
|||||||
info.buffer = descriptor.uniform_buffer_ptr->Get();
|
info.buffer = descriptor.uniform_buffer_ptr->Get();
|
||||||
info.offset = descriptor.uniform_buffer_ptr->GetOffset();
|
info.offset = descriptor.uniform_buffer_ptr->GetOffset();
|
||||||
info.range = VK_WHOLE_SIZE;
|
info.range = VK_WHOLE_SIZE;
|
||||||
buffer_infos.push_back(info);
|
buffer_infos[buffer_index] = std::move(info);
|
||||||
writes.push_back(kvfWriteUniformBufferToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &buffer_infos.back(), descriptor.binding));
|
writes[write_index] = kvfWriteUniformBufferToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &buffer_infos[buffer_index], descriptor.binding);
|
||||||
|
buffer_index++;
|
||||||
}
|
}
|
||||||
else if(descriptor.storage_buffer_ptr)
|
else if(descriptor.storage_buffer_ptr)
|
||||||
{
|
{
|
||||||
@@ -257,9 +277,11 @@ namespace mlx
|
|||||||
info.buffer = descriptor.storage_buffer_ptr->Get();
|
info.buffer = descriptor.storage_buffer_ptr->Get();
|
||||||
info.offset = descriptor.storage_buffer_ptr->GetOffset();
|
info.offset = descriptor.storage_buffer_ptr->GetOffset();
|
||||||
info.range = VK_WHOLE_SIZE;
|
info.range = VK_WHOLE_SIZE;
|
||||||
buffer_infos.push_back(info);
|
buffer_infos[buffer_index] = std::move(info);
|
||||||
writes.push_back(kvfWriteStorageBufferToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &buffer_infos.back(), descriptor.binding));
|
writes[write_index] = kvfWriteStorageBufferToDescriptorSet(RenderCore::Get().GetDevice(), m_sets[i], &buffer_infos[buffer_index], descriptor.binding);
|
||||||
|
buffer_index++;
|
||||||
}
|
}
|
||||||
|
write_index++;
|
||||||
}
|
}
|
||||||
RenderCore::Get().vkUpdateDescriptorSets(RenderCore::Get().GetDevice(), writes.size(), writes.data(), 0, nullptr);
|
RenderCore::Get().vkUpdateDescriptorSets(RenderCore::Get().GetDevice(), writes.size(), writes.data(), 0, nullptr);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,9 +100,9 @@ namespace mlx
|
|||||||
for(auto& drawable : drawables)
|
for(auto& drawable : drawables)
|
||||||
{
|
{
|
||||||
// Check every textures and update modified ones to GPU before starting the render pass
|
// Check every textures and update modified ones to GPU before starting the render pass
|
||||||
|
drawable->Update(cmd);
|
||||||
if(!drawable->IsSetInit())
|
if(!drawable->IsSetInit())
|
||||||
drawable->UpdateDescriptorSet(p_texture_set);
|
drawable->UpdateDescriptorSet(p_texture_set);
|
||||||
drawable->Update(cmd);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_pipeline.BindPipeline(cmd, 0, {});
|
m_pipeline.BindPipeline(cmd, 0, {});
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ namespace mlx
|
|||||||
|
|
||||||
void RenderPasses::Pass(Scene& scene, Renderer& renderer, const Vec4f& clear_color)
|
void RenderPasses::Pass(Scene& scene, Renderer& renderer, const Vec4f& clear_color)
|
||||||
{
|
{
|
||||||
|
bool force_render = false;
|
||||||
if(!m_main_render_texture.IsInit())
|
if(!m_main_render_texture.IsInit())
|
||||||
{
|
{
|
||||||
VkExtent2D extent;
|
VkExtent2D extent;
|
||||||
@@ -34,11 +35,15 @@ namespace mlx
|
|||||||
m_main_render_texture.Init({}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_UNORM, false, {});
|
m_main_render_texture.Init({}, extent.width, extent.height, VK_FORMAT_R8G8B8A8_UNORM, false, {});
|
||||||
#endif
|
#endif
|
||||||
m_main_render_texture.TransitionLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
|
m_main_render_texture.TransitionLayout(VK_IMAGE_LAYOUT_COLOR_ATTACHMENT_OPTIMAL);
|
||||||
|
force_render = true;
|
||||||
|
}
|
||||||
|
if(scene.HasSceneChanged() || force_render)
|
||||||
|
{
|
||||||
|
m_main_render_texture.Clear(renderer.GetActiveCommandBuffer(), clear_color);
|
||||||
|
m_2Dpass.Pass(scene, renderer, m_main_render_texture);
|
||||||
}
|
}
|
||||||
m_main_render_texture.Clear(renderer.GetActiveCommandBuffer(), clear_color);
|
|
||||||
|
|
||||||
m_2Dpass.Pass(scene, renderer, m_main_render_texture);
|
|
||||||
m_final.Pass(scene, renderer, m_main_render_texture, p_render_target);
|
m_final.Pass(scene, renderer, m_main_render_texture, p_render_target);
|
||||||
|
scene.ResetChangeChecker();
|
||||||
}
|
}
|
||||||
|
|
||||||
void RenderPasses::Destroy()
|
void RenderPasses::Destroy()
|
||||||
|
|||||||
@@ -87,6 +87,8 @@ namespace mlx
|
|||||||
DebugLog("Vulkan: image available semaphore destroyed");
|
DebugLog("Vulkan: image available semaphore destroyed");
|
||||||
kvfDestroySemaphore(RenderCore::Get().GetDevice(), m_render_finished_semaphores[i]);
|
kvfDestroySemaphore(RenderCore::Get().GetDevice(), m_render_finished_semaphores[i]);
|
||||||
DebugLog("Vulkan: render finished semaphore destroyed");
|
DebugLog("Vulkan: render finished semaphore destroyed");
|
||||||
|
kvfDestroyCommandBuffer(RenderCore::Get().GetDevice(), m_cmd_buffers[i]);
|
||||||
|
DebugLog("Vulkan: command buffer destroyed");
|
||||||
kvfDestroyFence(RenderCore::Get().GetDevice(), m_cmd_fences[i]);
|
kvfDestroyFence(RenderCore::Get().GetDevice(), m_cmd_fences[i]);
|
||||||
DebugLog("Vulkan: fence destroyed");
|
DebugLog("Vulkan: fence destroyed");
|
||||||
}
|
}
|
||||||
|
|||||||
115
third_party/kvf.h
vendored
115
third_party/kvf.h
vendored
@@ -549,7 +549,7 @@ void __kvfCompleteDevice(VkPhysicalDevice physical, VkDevice device)
|
|||||||
kvf_device = &__kvf_internal_devices[i];
|
kvf_device = &__kvf_internal_devices[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
VkCommandPool pool;
|
VkCommandPool pool;
|
||||||
VkCommandPoolCreateInfo pool_info = {};
|
VkCommandPoolCreateInfo pool_info = {};
|
||||||
@@ -583,7 +583,7 @@ void __kvfCompleteDeviceCustomPhysicalDeviceAndQueues(VkPhysicalDevice physical,
|
|||||||
kvf_device = &__kvf_internal_devices[i];
|
kvf_device = &__kvf_internal_devices[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
VkCommandPool pool;
|
VkCommandPool pool;
|
||||||
VkCommandPoolCreateInfo pool_info = {};
|
VkCommandPoolCreateInfo pool_info = {};
|
||||||
@@ -645,7 +645,7 @@ void kvfSetAllocationCallbacks(VkDevice device, const VkAllocationCallbacks* cal
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
kvf_device->callbacks = (VkAllocationCallbacks*)KVF_MALLOC(sizeof(VkAllocationCallbacks));
|
kvf_device->callbacks = (VkAllocationCallbacks*)KVF_MALLOC(sizeof(VkAllocationCallbacks));
|
||||||
KVF_ASSERT(kvf_device->callbacks && "allocation failed :(");
|
KVF_ASSERT(kvf_device->callbacks && "allocation failed :(");
|
||||||
memcpy(kvf_device->callbacks, callbacks, sizeof(VkAllocationCallbacks));
|
memcpy(kvf_device->callbacks, callbacks, sizeof(VkAllocationCallbacks));
|
||||||
@@ -703,7 +703,7 @@ void __kvfDestroyDevice(VkDevice device)
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
for(size_t i = 0; i < __kvf_internal_swapchains_size; i++)
|
for(size_t i = 0; i < __kvf_internal_swapchains_size; i++)
|
||||||
{
|
{
|
||||||
@@ -758,7 +758,7 @@ void __kvfDestroyFramebuffer(VkDevice device, VkFramebuffer framebuffer)
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
for(size_t i = 0; i < __kvf_internal_framebuffers_size; i++)
|
for(size_t i = 0; i < __kvf_internal_framebuffers_size; i++)
|
||||||
{
|
{
|
||||||
@@ -796,7 +796,7 @@ VkDescriptorPool __kvfDeviceCreateDescriptorPool(VkDevice device)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
kvf_device->sets_pools_size++;
|
kvf_device->sets_pools_size++;
|
||||||
kvf_device->sets_pools = (__KvfDescriptorPool*)KVF_REALLOC(kvf_device->sets_pools, kvf_device->sets_pools_size * sizeof(__KvfDescriptorPool));
|
kvf_device->sets_pools = (__KvfDescriptorPool*)KVF_REALLOC(kvf_device->sets_pools, kvf_device->sets_pools_size * sizeof(__KvfDescriptorPool));
|
||||||
memset(&kvf_device->sets_pools[kvf_device->sets_pools_size - 1], 0, sizeof(__KvfDescriptorPool));
|
memset(&kvf_device->sets_pools[kvf_device->sets_pools_size - 1], 0, sizeof(__KvfDescriptorPool));
|
||||||
@@ -831,7 +831,7 @@ void __kvfDestroyDescriptorPools(VkDevice device)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
for(size_t i = 0; i < kvf_device->sets_pools_size; i++)
|
for(size_t i = 0; i < kvf_device->sets_pools_size; i++)
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyDescriptorPool)(device, kvf_device->sets_pools[i].pool, NULL);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyDescriptorPool)(device, kvf_device->sets_pools[i].pool, NULL);
|
||||||
@@ -976,7 +976,7 @@ VkFormat kvfFindSupportFormatInCandidates(VkDevice device, VkFormat* candidates,
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
for(size_t i = 0; i < candidates_count; i++)
|
for(size_t i = 0; i < candidates_count; i++)
|
||||||
{
|
{
|
||||||
VkFormatProperties props;
|
VkFormatProperties props;
|
||||||
@@ -1529,7 +1529,7 @@ VkDevice kvfCreateDevice(VkPhysicalDevice physical, const char** extensions, uin
|
|||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkPhysicalDevice(physical);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkPhysicalDevice(physical);
|
||||||
|
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
uint32_t queue_count = 0;
|
uint32_t queue_count = 0;
|
||||||
queue_count += (kvf_device->queues.graphics != -1);
|
queue_count += (kvf_device->queues.graphics != -1);
|
||||||
@@ -1668,7 +1668,7 @@ VkDevice kvfCreateDeviceCustomPhysicalDeviceAndQueues(VkPhysicalDevice physical,
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
KVF_ASSERT(fns != NULL);
|
KVF_ASSERT(fns != NULL);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkPhysicalDevice(physical);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkPhysicalDevice(physical);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
kvf_device->fns = *fns;
|
kvf_device->fns = *fns;
|
||||||
__kvfCompleteDevice(physical, device);
|
__kvfCompleteDevice(physical, device);
|
||||||
}
|
}
|
||||||
@@ -1685,7 +1685,7 @@ VkQueue kvfGetDeviceQueue(VkDevice device, KvfQueueType queue)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkQueue vk_queue = VK_NULL_HANDLE;
|
VkQueue vk_queue = VK_NULL_HANDLE;
|
||||||
if(queue == KVF_GRAPHICS_QUEUE)
|
if(queue == KVF_GRAPHICS_QUEUE)
|
||||||
{
|
{
|
||||||
@@ -1709,7 +1709,7 @@ uint32_t kvfGetDeviceQueueFamily(VkDevice device, KvfQueueType queue)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
if(queue == KVF_GRAPHICS_QUEUE)
|
if(queue == KVF_GRAPHICS_QUEUE)
|
||||||
return kvf_device->queues.graphics;
|
return kvf_device->queues.graphics;
|
||||||
else if(queue == KVF_PRESENT_QUEUE)
|
else if(queue == KVF_PRESENT_QUEUE)
|
||||||
@@ -1726,7 +1726,7 @@ uint32_t kvfGetDeviceQueueFamily(VkDevice device, KvfQueueType queue)
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkPresentInfoKHR present_info = {};
|
VkPresentInfoKHR present_info = {};
|
||||||
present_info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
|
present_info.sType = VK_STRUCTURE_TYPE_PRESENT_INFO_KHR;
|
||||||
@@ -1814,7 +1814,7 @@ VkFence kvfCreateFence(VkDevice device)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkFenceCreateInfo fence_info = {};
|
VkFenceCreateInfo fence_info = {};
|
||||||
fence_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
fence_info.sType = VK_STRUCTURE_TYPE_FENCE_CREATE_INFO;
|
||||||
fence_info.flags = VK_FENCE_CREATE_SIGNALED_BIT;
|
fence_info.flags = VK_FENCE_CREATE_SIGNALED_BIT;
|
||||||
@@ -1829,7 +1829,7 @@ void kvfWaitForFence(VkDevice device, VkFence fence)
|
|||||||
KVF_ASSERT(fence != VK_NULL_HANDLE);
|
KVF_ASSERT(fence != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
KVF_GET_DEVICE_FUNCTION(vkWaitForFences)(device, 1, &fence, VK_TRUE, UINT64_MAX);
|
KVF_GET_DEVICE_FUNCTION(vkWaitForFences)(device, 1, &fence, VK_TRUE, UINT64_MAX);
|
||||||
}
|
}
|
||||||
@@ -1840,7 +1840,7 @@ void kvfDestroyFence(VkDevice device, VkFence fence)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyFence)(device, fence, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyFence)(device, fence, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1848,7 +1848,7 @@ VkSemaphore kvfCreateSemaphore(VkDevice device)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkSemaphoreCreateInfo semaphore_info = {};
|
VkSemaphoreCreateInfo semaphore_info = {};
|
||||||
semaphore_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
semaphore_info.sType = VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO;
|
||||||
VkSemaphore semaphore;
|
VkSemaphore semaphore;
|
||||||
@@ -1862,7 +1862,7 @@ void kvfDestroySemaphore(VkDevice device, VkSemaphore semaphore)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroySemaphore)(device, semaphore, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroySemaphore)(device, semaphore, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1941,7 +1941,7 @@ void kvfDestroySemaphore(VkDevice device, VkSemaphore semaphore)
|
|||||||
image_count = support.capabilities.maxImageCount;
|
image_count = support.capabilities.maxImageCount;
|
||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
uint32_t queue_family_indices[] = { (uint32_t)kvf_device->queues.graphics, (uint32_t)kvf_device->queues.present };
|
uint32_t queue_family_indices[] = { (uint32_t)kvf_device->queues.graphics, (uint32_t)kvf_device->queues.present };
|
||||||
|
|
||||||
@@ -2032,7 +2032,7 @@ VkImage kvfCreateImage(VkDevice device, uint32_t width, uint32_t height, VkForma
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkImageCreateInfo image_info = {};
|
VkImageCreateInfo image_info = {};
|
||||||
image_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
|
image_info.sType = VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO;
|
||||||
image_info.imageType = VK_IMAGE_TYPE_2D;
|
image_info.imageType = VK_IMAGE_TYPE_2D;
|
||||||
@@ -2066,7 +2066,7 @@ void kvfCopyImageToBuffer(VkCommandBuffer cmd, VkBuffer dst, VkImage src, size_t
|
|||||||
KVF_ASSERT(src != VK_NULL_HANDLE);
|
KVF_ASSERT(src != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkOffset3D offset = { 0, 0, 0 };
|
VkOffset3D offset = { 0, 0, 0 };
|
||||||
VkBufferImageCopy region = {};
|
VkBufferImageCopy region = {};
|
||||||
@@ -2088,7 +2088,7 @@ void kvfDestroyImage(VkDevice device, VkImage image)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyImage)(device, image, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyImage)(device, image, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2096,7 +2096,7 @@ VkImageView kvfCreateImageView(VkDevice device, VkImage image, VkFormat format,
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkImageViewCreateInfo create_info = {};
|
VkImageViewCreateInfo create_info = {};
|
||||||
create_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
create_info.sType = VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO;
|
||||||
create_info.image = image;
|
create_info.image = image;
|
||||||
@@ -2121,7 +2121,7 @@ void kvfDestroyImageView(VkDevice device, VkImageView image_view)
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
KVF_ASSERT(image_view != VK_NULL_HANDLE);
|
KVF_ASSERT(image_view != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyImageView)(device, image_view, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyImageView)(device, image_view, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2135,7 +2135,7 @@ void kvfTransitionImageLayout(VkDevice device, VkImage image, KvfImageType type,
|
|||||||
|
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(is_single_time_cmd_buffer)
|
if(is_single_time_cmd_buffer)
|
||||||
@@ -2189,7 +2189,7 @@ VkSampler kvfCreateSampler(VkDevice device, VkFilter filters, VkSamplerAddressMo
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkSamplerCreateInfo info = {};
|
VkSamplerCreateInfo info = {};
|
||||||
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
info.sType = VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO;
|
||||||
info.magFilter = filters;
|
info.magFilter = filters;
|
||||||
@@ -2213,7 +2213,7 @@ void kvfDestroySampler(VkDevice device, VkSampler sampler)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroySampler)(device, sampler, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroySampler)(device, sampler, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2221,7 +2221,7 @@ VkBuffer kvfCreateBuffer(VkDevice device, VkBufferUsageFlags usage, VkDeviceSize
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkBufferCreateInfo buffer_info = {};
|
VkBufferCreateInfo buffer_info = {};
|
||||||
buffer_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
buffer_info.sType = VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO;
|
||||||
buffer_info.size = size;
|
buffer_info.size = size;
|
||||||
@@ -2239,7 +2239,7 @@ void kvfCopyBufferToBuffer(VkCommandBuffer cmd, VkBuffer dst, VkBuffer src, size
|
|||||||
KVF_ASSERT(src != VK_NULL_HANDLE);
|
KVF_ASSERT(src != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkBufferCopy copy_region = {};
|
VkBufferCopy copy_region = {};
|
||||||
copy_region.size = size;
|
copy_region.size = size;
|
||||||
@@ -2253,7 +2253,7 @@ void kvfCopyBufferToImage(VkCommandBuffer cmd, VkImage dst, VkBuffer src, size_t
|
|||||||
KVF_ASSERT(src != VK_NULL_HANDLE);
|
KVF_ASSERT(src != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkOffset3D offset = { 0, 0, 0 };
|
VkOffset3D offset = { 0, 0, 0 };
|
||||||
VkBufferImageCopy region = {};
|
VkBufferImageCopy region = {};
|
||||||
@@ -2275,7 +2275,7 @@ void kvfDestroyBuffer(VkDevice device, VkBuffer buffer)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyBuffer)(device, buffer, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyBuffer)(device, buffer, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2284,7 +2284,7 @@ VkFramebuffer kvfCreateFramebuffer(VkDevice device, VkRenderPass render_pass, Vk
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
KVF_ASSERT(image_views != NULL);
|
KVF_ASSERT(image_views != NULL);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkFramebufferCreateInfo framebuffer_info = {};
|
VkFramebufferCreateInfo framebuffer_info = {};
|
||||||
framebuffer_info.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
|
framebuffer_info.sType = VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO;
|
||||||
framebuffer_info.renderPass = render_pass;
|
framebuffer_info.renderPass = render_pass;
|
||||||
@@ -2324,7 +2324,7 @@ VkCommandBuffer kvfCreateCommandBufferLeveled(VkDevice device, VkCommandBufferLe
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
VkCommandPool pool = kvf_device->cmd_pool;
|
VkCommandPool pool = kvf_device->cmd_pool;
|
||||||
VkCommandBuffer buffer;
|
VkCommandBuffer buffer;
|
||||||
@@ -2335,7 +2335,7 @@ VkCommandBuffer kvfCreateCommandBufferLeveled(VkDevice device, VkCommandBufferLe
|
|||||||
alloc_info.commandBufferCount = 1;
|
alloc_info.commandBufferCount = 1;
|
||||||
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkAllocateCommandBuffers)(device, &alloc_info, &buffer));
|
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkAllocateCommandBuffers)(device, &alloc_info, &buffer));
|
||||||
|
|
||||||
if(kvf_device->cmd_buffers_size == kvf_device->cmd_buffers_capacity)
|
if(kvf_device->cmd_buffers_size >= kvf_device->cmd_buffers_capacity)
|
||||||
{
|
{
|
||||||
// Resize the dynamic array if necessary
|
// Resize the dynamic array if necessary
|
||||||
kvf_device->cmd_buffers_capacity += KVF_COMMAND_POOL_CAPACITY;
|
kvf_device->cmd_buffers_capacity += KVF_COMMAND_POOL_CAPACITY;
|
||||||
@@ -2352,7 +2352,7 @@ void kvfBeginCommandBuffer(VkCommandBuffer buffer, VkCommandBufferUsageFlags usa
|
|||||||
KVF_ASSERT(buffer != VK_NULL_HANDLE);
|
KVF_ASSERT(buffer != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(buffer);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(buffer);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkCommandBufferBeginInfo begin_info = {};
|
VkCommandBufferBeginInfo begin_info = {};
|
||||||
begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
begin_info.sType = VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO;
|
||||||
@@ -2365,7 +2365,7 @@ void kvfEndCommandBuffer(VkCommandBuffer buffer)
|
|||||||
KVF_ASSERT(buffer != VK_NULL_HANDLE);
|
KVF_ASSERT(buffer != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(buffer);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(buffer);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkEndCommandBuffer)(buffer));
|
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkEndCommandBuffer)(buffer));
|
||||||
}
|
}
|
||||||
@@ -2376,7 +2376,7 @@ void kvfSubmitCommandBuffer(VkDevice device, VkCommandBuffer buffer, KvfQueueTyp
|
|||||||
|
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkSemaphore signal_semaphores[1];
|
VkSemaphore signal_semaphores[1];
|
||||||
VkSemaphore wait_semaphores[1];
|
VkSemaphore wait_semaphores[1];
|
||||||
@@ -2403,7 +2403,7 @@ void kvfSubmitSingleTimeCommandBuffer(VkDevice device, VkCommandBuffer buffer, K
|
|||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if(fence != VK_NULL_HANDLE)
|
if(fence != VK_NULL_HANDLE)
|
||||||
@@ -2424,7 +2424,7 @@ void kvfDestroyCommandBuffer(VkDevice device, VkCommandBuffer buffer)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
for(size_t i = 0; i < kvf_device->cmd_buffers_size; i++)
|
for(size_t i = 0; i < kvf_device->cmd_buffers_size; i++)
|
||||||
{
|
{
|
||||||
@@ -2434,7 +2434,7 @@ void kvfDestroyCommandBuffer(VkDevice device, VkCommandBuffer buffer)
|
|||||||
// Shift the elements to fill the gap
|
// Shift the elements to fill the gap
|
||||||
for(size_t j = i; j < kvf_device->cmd_buffers_size - 1; j++)
|
for(size_t j = i; j < kvf_device->cmd_buffers_size - 1; j++)
|
||||||
kvf_device->cmd_buffers[j] = kvf_device->cmd_buffers[j + 1];
|
kvf_device->cmd_buffers[j] = kvf_device->cmd_buffers[j + 1];
|
||||||
kvf_device->cmd_buffers--;
|
kvf_device->cmd_buffers_size--;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2553,7 +2553,7 @@ VkRenderPass kvfCreateRenderPassWithSubpassDependencies(VkDevice device, VkAttac
|
|||||||
}
|
}
|
||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
|
|
||||||
VkSubpassDescription subpass = {};
|
VkSubpassDescription subpass = {};
|
||||||
subpass.pipelineBindPoint = bind_point;
|
subpass.pipelineBindPoint = bind_point;
|
||||||
@@ -2583,7 +2583,7 @@ void kvfDestroyRenderPass(VkDevice device, VkRenderPass renderPass)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyRenderPass)(device, renderPass, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyRenderPass)(device, renderPass, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2593,7 +2593,7 @@ void kvfBeginRenderPass(VkRenderPass pass, VkCommandBuffer cmd, VkFramebuffer fr
|
|||||||
KVF_ASSERT(framebuffer != VK_NULL_HANDLE);
|
KVF_ASSERT(framebuffer != VK_NULL_HANDLE);
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkCommandBuffer(cmd);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
VkOffset2D offset = { 0, 0 };
|
VkOffset2D offset = { 0, 0 };
|
||||||
@@ -2612,7 +2612,7 @@ VkShaderModule kvfCreateShaderModule(VkDevice device, uint32_t* code, size_t siz
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkShaderModuleCreateInfo createInfo = {};
|
VkShaderModuleCreateInfo createInfo = {};
|
||||||
createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
createInfo.sType = VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO;
|
||||||
createInfo.codeSize = size * sizeof(uint32_t);
|
createInfo.codeSize = size * sizeof(uint32_t);
|
||||||
@@ -2628,7 +2628,7 @@ void kvfDestroyShaderModule(VkDevice device, VkShaderModule shader)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyShaderModule)(device, shader, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyShaderModule)(device, shader, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2636,7 +2636,7 @@ VkDescriptorSetLayout kvfCreateDescriptorSetLayout(VkDevice device, VkDescriptor
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkDescriptorSetLayoutCreateInfo layout_info = {};
|
VkDescriptorSetLayoutCreateInfo layout_info = {};
|
||||||
layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
layout_info.sType = VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO;
|
||||||
layout_info.bindingCount = bindings_count;
|
layout_info.bindingCount = bindings_count;
|
||||||
@@ -2653,7 +2653,7 @@ void kvfDestroyDescriptorSetLayout(VkDevice device, VkDescriptorSetLayout layout
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyDescriptorSetLayout)(device, layout, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyDescriptorSetLayout)(device, layout, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2661,7 +2661,7 @@ VkDescriptorSet kvfAllocateDescriptorSet(VkDevice device, VkDescriptorSetLayout
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkDescriptorPool pool = VK_NULL_HANDLE;
|
VkDescriptorPool pool = VK_NULL_HANDLE;
|
||||||
for(uint32_t i = 0; i < kvf_device->sets_pools_size; i++)
|
for(uint32_t i = 0; i < kvf_device->sets_pools_size; i++)
|
||||||
{
|
{
|
||||||
@@ -2687,7 +2687,7 @@ void kvfUpdateStorageBufferToDescriptorSet(VkDevice device, VkDescriptorSet set,
|
|||||||
{
|
{
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkWriteDescriptorSet write = kvfWriteStorageBufferToDescriptorSet(device, set, info, binding);
|
VkWriteDescriptorSet write = kvfWriteStorageBufferToDescriptorSet(device, set, info, binding);
|
||||||
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
||||||
@@ -2697,7 +2697,7 @@ void kvfUpdateUniformBufferToDescriptorSet(VkDevice device, VkDescriptorSet set,
|
|||||||
{
|
{
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkWriteDescriptorSet write = kvfWriteUniformBufferToDescriptorSet(device, set, info, binding);
|
VkWriteDescriptorSet write = kvfWriteUniformBufferToDescriptorSet(device, set, info, binding);
|
||||||
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
||||||
@@ -2707,7 +2707,7 @@ void kvfUpdateImageToDescriptorSet(VkDevice device, VkDescriptorSet set, const V
|
|||||||
{
|
{
|
||||||
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
#ifdef KVF_IMPL_VK_NO_PROTOTYPES
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
#endif
|
#endif
|
||||||
VkWriteDescriptorSet write = kvfWriteImageToDescriptorSet(device, set, info, binding);
|
VkWriteDescriptorSet write = kvfWriteImageToDescriptorSet(device, set, info, binding);
|
||||||
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
KVF_GET_DEVICE_FUNCTION(vkUpdateDescriptorSets)(device, 1, &write, 0, NULL);
|
||||||
@@ -2725,6 +2725,7 @@ VkWriteDescriptorSet kvfWriteStorageBufferToDescriptorSet(VkDevice device, VkDes
|
|||||||
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
|
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_STORAGE_BUFFER;
|
||||||
descriptor_write.descriptorCount = 1;
|
descriptor_write.descriptorCount = 1;
|
||||||
descriptor_write.pBufferInfo = info;
|
descriptor_write.pBufferInfo = info;
|
||||||
|
descriptor_write.pNext = NULL;
|
||||||
return descriptor_write;
|
return descriptor_write;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2740,6 +2741,7 @@ VkWriteDescriptorSet kvfWriteUniformBufferToDescriptorSet(VkDevice device, VkDes
|
|||||||
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_UNIFORM_BUFFER;
|
||||||
descriptor_write.descriptorCount = 1;
|
descriptor_write.descriptorCount = 1;
|
||||||
descriptor_write.pBufferInfo = info;
|
descriptor_write.pBufferInfo = info;
|
||||||
|
descriptor_write.pNext = NULL;
|
||||||
return descriptor_write;
|
return descriptor_write;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2755,6 +2757,7 @@ VkWriteDescriptorSet kvfWriteImageToDescriptorSet(VkDevice device, VkDescriptorS
|
|||||||
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
descriptor_write.descriptorType = VK_DESCRIPTOR_TYPE_COMBINED_IMAGE_SAMPLER;
|
||||||
descriptor_write.descriptorCount = 1;
|
descriptor_write.descriptorCount = 1;
|
||||||
descriptor_write.pImageInfo = info;
|
descriptor_write.pImageInfo = info;
|
||||||
|
descriptor_write.pNext = NULL;
|
||||||
return descriptor_write;
|
return descriptor_write;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2762,7 +2765,7 @@ VkPipelineLayout kvfCreatePipelineLayout(VkDevice device, VkDescriptorSetLayout*
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkPipelineLayoutCreateInfo pipeline_layout_info = {};
|
VkPipelineLayoutCreateInfo pipeline_layout_info = {};
|
||||||
pipeline_layout_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
pipeline_layout_info.sType = VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO;
|
||||||
pipeline_layout_info.setLayoutCount = set_layouts_count;
|
pipeline_layout_info.setLayoutCount = set_layouts_count;
|
||||||
@@ -2781,7 +2784,7 @@ void kvfDestroyPipelineLayout(VkDevice device, VkPipelineLayout layout)
|
|||||||
return;
|
return;
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyPipelineLayout)(device, layout, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyPipelineLayout)(device, layout, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2789,7 +2792,7 @@ void kvfResetDeviceDescriptorPools(VkDevice device)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
for(uint32_t i = 0; i < kvf_device->sets_pools_size; i++)
|
for(uint32_t i = 0; i < kvf_device->sets_pools_size; i++)
|
||||||
{
|
{
|
||||||
KVF_GET_DEVICE_FUNCTION(vkResetDescriptorPool)(device, kvf_device->sets_pools[i].pool, 0);
|
KVF_GET_DEVICE_FUNCTION(vkResetDescriptorPool)(device, kvf_device->sets_pools[i].pool, 0);
|
||||||
@@ -3018,7 +3021,7 @@ VkPipeline kvfCreateGraphicsPipeline(VkDevice device, VkPipelineCache cache, VkP
|
|||||||
pipeline_info.pDepthStencilState = &builder->depth_stencil_state;
|
pipeline_info.pDepthStencilState = &builder->depth_stencil_state;
|
||||||
|
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
VkPipeline pipeline;
|
VkPipeline pipeline;
|
||||||
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkCreateGraphicsPipelines)(device, cache, 1, &pipeline_info, kvf_device->callbacks, &pipeline));
|
__kvfCheckVk(KVF_GET_DEVICE_FUNCTION(vkCreateGraphicsPipelines)(device, cache, 1, &pipeline_info, kvf_device->callbacks, &pipeline));
|
||||||
return pipeline;
|
return pipeline;
|
||||||
@@ -3028,7 +3031,7 @@ void kvfDestroyPipeline(VkDevice device, VkPipeline pipeline)
|
|||||||
{
|
{
|
||||||
KVF_ASSERT(device != VK_NULL_HANDLE);
|
KVF_ASSERT(device != VK_NULL_HANDLE);
|
||||||
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
__KvfDevice* kvf_device = __kvfGetKvfDeviceFromVkDevice(device);
|
||||||
KVF_ASSERT(kvf_device != NULL);
|
KVF_ASSERT(kvf_device != NULL && "could not find VkDevice in registered devices");
|
||||||
KVF_GET_DEVICE_FUNCTION(vkDestroyPipeline)(device, pipeline, kvf_device->callbacks);
|
KVF_GET_DEVICE_FUNCTION(vkDestroyPipeline)(device, pipeline, kvf_device->callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
add_requires("libsdl", { configs = { sdlmain = false } })
|
add_requires("libsdl", { configs = { sdlmain = false } })
|
||||||
|
|
||||||
add_rules("mode.debug", "mode.release")
|
add_rules("mode.debug", "mode.release", "mode.releasedbg")
|
||||||
set_languages("cxx20", "c11")
|
set_languages("cxx20", "c11")
|
||||||
|
|
||||||
set_objectdir("objs/xmake/$(os)_$(arch)")
|
set_objectdir("objs/xmake/$(os)_$(arch)")
|
||||||
@@ -85,7 +85,6 @@ target("mlx")
|
|||||||
end)
|
end)
|
||||||
target_end()
|
target_end()
|
||||||
|
|
||||||
--[[
|
|
||||||
target("Test")
|
target("Test")
|
||||||
set_default(false)
|
set_default(false)
|
||||||
set_kind("binary")
|
set_kind("binary")
|
||||||
@@ -101,4 +100,3 @@ target("Test")
|
|||||||
|
|
||||||
add_packages("libsdl")
|
add_packages("libsdl")
|
||||||
target_end()
|
target_end()
|
||||||
]]--
|
|
||||||
|
|||||||
Reference in New Issue
Block a user