finish function validator
This commit is contained in:
@@ -0,0 +1,56 @@
|
||||
#include "command_functions.h"
|
||||
#include "core/src/command/command_pool/gryphn_command_pool.h"
|
||||
#include "core/src/command/command_buffer/gryphn_command_buffer.h"
|
||||
#include "core/src/output_device/gryphn_output_device.h"
|
||||
#include <core/src/debugger/gryphn_debugger.h>
|
||||
#include <core/src/instance/gryphn_instance.h>
|
||||
#include "core/src/renderpass/gryphn_render_pass.h"
|
||||
#include "core/src/pipelines/graphics_pipeline/gryphn_graphics_pipeline.h"
|
||||
#include "core/src/buffers/gryphn_buffer.h"
|
||||
#include "loader_utils.h"
|
||||
|
||||
gnReturnCode checkCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* commandBuffers, uint32_t count, gnCommandPoolHandle pool) {
|
||||
CHECK_FUNCTION_WITH_RETURN_CODE_COMMAND(pool->device->instance, _gnCommandPoolAllocateCommandBuffers, commandBuffers, count, pool);
|
||||
}
|
||||
gnReturnCode checkBeginCommandBuffer(gnCommandBufferHandle commandBuffer) {
|
||||
CHECK_FUNCTION_WITH_RETURN_CODE_COMMAND(commandBuffer->instance, _gnBeginCommandBuffer, commandBuffer);
|
||||
}
|
||||
void checkResetCommandBuffer(gnCommandBufferHandle commandBuffer) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(commandBuffer->instance, _gnResetCommandBuffer, commandBuffer);
|
||||
}
|
||||
gnReturnCode checkEndCommandBuffer(gnCommandBufferHandle commandBuffer) {
|
||||
CHECK_FUNCTION_WITH_RETURN_CODE_COMMAND(commandBuffer->instance, _gnEndCommandBuffer, commandBuffer);
|
||||
}
|
||||
|
||||
void checkCommandBeginRenderPass(gnCommandBufferHandle buffer, gnRenderPassInfo passInfo) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandBeginRenderPass, buffer, passInfo);
|
||||
}
|
||||
void checkCommandEndRenderPass(gnCommandBufferHandle buffer) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandEndRenderPass, buffer);
|
||||
}
|
||||
|
||||
void checkCommandBindGraphicsPipeline(gnCommandBufferHandle buffer, gnGraphicsPipelineHandle graphicsPipeline) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandBindGraphicsPipeline, buffer, graphicsPipeline);
|
||||
}
|
||||
void checkCommandSetViewport(gnCommandBufferHandle buffer, gnViewport viewport) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandSetViewport, buffer, viewport);
|
||||
}
|
||||
void checkCommandSetScissor(gnCommandBufferHandle buffer, gnScissor scissor) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandSetScissor, buffer, scissor);
|
||||
}
|
||||
void checkCommandBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandBindUniform, buffer, uniform, set);
|
||||
}
|
||||
void checkCommandPushConstant(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandPushConstant, buffer, layout, data);
|
||||
}
|
||||
|
||||
void checkCommandBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandBindBuffer, buffer, bufferToBind, type);
|
||||
}
|
||||
void checkCommandDraw(gnCommandBufferHandle buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandDraw, buffer, vertexCount, firstVertex, instanceCount, firstInstance);
|
||||
}
|
||||
void checkCommandDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance) {
|
||||
CHECK_VOID_FUNCTION_COMMAND(buffer->instance, _gnCommandDrawIndexed, buffer, type, indexCount, firstIndex, vertexOffset, instanceCount, firstInstance);
|
||||
}
|
@@ -0,0 +1,19 @@
|
||||
#include "loader/src/gryphn_command_functions.h"
|
||||
|
||||
gnReturnCode checkCommandPoolAllocateCommandBuffers(gnCommandBufferHandle* commandBuffers, uint32_t count, gnCommandPoolHandle pool);
|
||||
gnReturnCode checkBeginCommandBuffer(gnCommandBufferHandle commandBuffer);
|
||||
void checkResetCommandBuffer(gnCommandBufferHandle commandBuffer);
|
||||
gnReturnCode checkEndCommandBuffer(gnCommandBufferHandle commandBuffer);
|
||||
|
||||
void checkCommandBeginRenderPass(gnCommandBufferHandle buffer, gnRenderPassInfo passInfo);
|
||||
void checkCommandEndRenderPass(gnCommandBufferHandle buffer);
|
||||
|
||||
void checkCommandBindGraphicsPipeline(gnCommandBufferHandle buffer, gnGraphicsPipelineHandle graphicsPipeline);
|
||||
void checkCommandSetViewport(gnCommandBufferHandle buffer, gnViewport viewport);
|
||||
void checkCommandSetScissor(gnCommandBufferHandle buffer, gnScissor scissor);
|
||||
void checkCommandBindUniform(gnCommandBufferHandle buffer, gnUniform uniform, uint32_t set);
|
||||
void checkCommandPushConstant(gnCommandBufferHandle buffer, gnPushConstantLayout layout, void* data);
|
||||
|
||||
void checkCommandBindBuffer(gnCommandBufferHandle buffer, gnBufferHandle bufferToBind, gnBufferType type);
|
||||
void checkCommandDraw(gnCommandBufferHandle buffer, int vertexCount, int firstVertex, int instanceCount, int firstInstance);
|
||||
void checkCommandDrawIndexed(gnCommandBufferHandle buffer, gnIndexType type, int indexCount, int firstIndex, int vertexOffset, int instanceCount, int firstInstance);
|
@@ -1,4 +1,5 @@
|
||||
#include "device_functions.h"
|
||||
#include "loader_utils.h"
|
||||
#include "core/src/debugger/gryphn_debugger.h"
|
||||
#include "core/src/presentation_queue/gryphn_presentation_queue.h"
|
||||
#include "core/src/shader_module/gryphn_shader_module.h"
|
||||
@@ -68,28 +69,6 @@ void checkDestroyShaderModule(gnShaderModuleHandle module){
|
||||
nextLayer->deviceFunctions._gnDestroyShaderModule(module);
|
||||
}
|
||||
|
||||
#define CHECK_FUNCTION_WITH_RETURN_CODE(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->deviceFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return GN_FAILED_TO_LOAD_FUNCTION; \
|
||||
} \
|
||||
return nextLayer->deviceFunctions.function(__VA_ARGS__);
|
||||
|
||||
#define CHECK_VOID_FUNCTION(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->deviceFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return; \
|
||||
} \
|
||||
nextLayer->deviceFunctions.function(__VA_ARGS__);
|
||||
|
||||
gnReturnCode checkCreateRenderPassDescriptor(gnRenderPassDescriptorHandle renderPass, gnOutputDeviceHandle device, gnRenderPassDescriptorInfo info) {
|
||||
CHECK_FUNCTION_WITH_RETURN_CODE(device->instance, _gnCreateRenderPassDescriptor, renderPass, device, info);
|
||||
}
|
||||
|
@@ -1,6 +1,7 @@
|
||||
#include "function_loader.h"
|
||||
#include "instance_functions.h"
|
||||
#include "device_functions.h"
|
||||
#include "command_functions.h"
|
||||
|
||||
gnInstanceFunctions loadFunctionLoaderInstanceFunctions() {
|
||||
return (gnInstanceFunctions){
|
||||
@@ -89,6 +90,21 @@ gnDeviceFunctions loadFunctionLoaderDeviceFunctions() {
|
||||
}
|
||||
gnCommandFunctions loadFunctionLoaderCommandFunctions() {
|
||||
return (gnCommandFunctions){
|
||||
NULL
|
||||
._gnCommandPoolAllocateCommandBuffers = checkCommandPoolAllocateCommandBuffers,
|
||||
._gnBeginCommandBuffer = checkBeginCommandBuffer,
|
||||
._gnResetCommandBuffer = checkResetCommandBuffer,
|
||||
._gnEndCommandBuffer = checkEndCommandBuffer,
|
||||
|
||||
._gnCommandBeginRenderPass = checkCommandBeginRenderPass,
|
||||
._gnCommandEndRenderPass = checkCommandEndRenderPass,
|
||||
._gnCommandBindGraphicsPipeline = checkCommandBindGraphicsPipeline,
|
||||
._gnCommandSetViewport = checkCommandSetViewport,
|
||||
._gnCommandSetScissor = checkCommandSetScissor,
|
||||
._gnCommandBindUniform = checkCommandBindUniform,
|
||||
._gnCommandPushConstant = checkCommandPushConstant,
|
||||
|
||||
._gnCommandBindBuffer = checkCommandBindBuffer,
|
||||
._gnCommandDraw = checkCommandDraw,
|
||||
._gnCommandDrawIndexed = checkCommandDrawIndexed,
|
||||
};
|
||||
}
|
||||
|
@@ -0,0 +1,43 @@
|
||||
#define CHECK_FUNCTION_WITH_RETURN_CODE(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->deviceFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return GN_FAILED_TO_LOAD_FUNCTION; \
|
||||
} \
|
||||
return nextLayer->deviceFunctions.function(__VA_ARGS__);
|
||||
|
||||
#define CHECK_FUNCTION_WITH_RETURN_CODE_COMMAND(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->commandFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return GN_FAILED_TO_LOAD_FUNCTION; \
|
||||
} \
|
||||
return nextLayer->commandFunctions.function(__VA_ARGS__);
|
||||
|
||||
#define CHECK_VOID_FUNCTION(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->deviceFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return; \
|
||||
} \
|
||||
nextLayer->deviceFunctions.function(__VA_ARGS__);
|
||||
|
||||
#define CHECK_VOID_FUNCTION_COMMAND(instance, function, ...) \
|
||||
loaderLayer* nextLayer = loaderGetNextLayer(instance); \
|
||||
if (nextLayer->commandFunctions.function == NULL) { \
|
||||
gnDebuggerSetErrorMessage(instance->debugger, (gnMessageData){ \
|
||||
.message = gnCreateString("Failed to load destroy " #function " function") \
|
||||
}); \
|
||||
resetLayer(instance); \
|
||||
return; \
|
||||
} \
|
||||
nextLayer->commandFunctions.function(__VA_ARGS__);
|
Reference in New Issue
Block a user