#define DALI_TEST_GRAPHICS_COMMAND_BUFFER_H
/*
- * Copyright (c) 2022 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2023 Samsung Electronics Co., Ltd.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
SET_DEPTH_COMPARE_OP = 1 << 24,
SET_DEPTH_TEST_ENABLE = 1 << 25,
SET_DEPTH_WRITE_ENABLE = 1 << 26,
+ DRAW_NATIVE = 1 << 27,
};
std::ostream& operator<<(std::ostream& os, Graphics::StencilOp op);
{
DRAW,
DRAW_INDEXED,
- DRAW_INDEXED_INDIRECT
+ DRAW_INDEXED_INDIRECT,
+ DRAW_NATIVE
};
Type type{}; ///< Type of the draw call
uint32_t drawCount;
uint32_t stride;
} drawIndexedIndirect;
+
+ struct
+ {
+ Graphics::DrawNativeInfo drawNativeInfo;
+ } drawNative;
};
};
data.bindUniformBuffers = rhs.data.bindUniformBuffers;
break;
}
+ case CommandType::DRAW_NATIVE:
+ {
+ data.draw.type = rhs.data.draw.type;
+ data.draw.drawNative = rhs.data.draw.drawNative;
+ break;
+ }
case CommandType::DRAW:
{
data.draw.type = rhs.data.draw.type;
data.bindPipeline = rhs.data.bindPipeline;
break;
}
+ case CommandType::DRAW_NATIVE:
+ {
+ data.draw.type = rhs.data.draw.type;
+ data.draw.drawNative = rhs.data.draw.drawNative;
+ break;
+ }
case CommandType::DRAW:
{
data.draw.type = rhs.data.draw.type;
mCallStack.PushCall("ExecuteCommandBuffers", "");
}
+ void DrawNative(const Graphics::DrawNativeInfo* drawInfo)
+ {
+ mCommands.emplace_back();
+ mCommands.back().type = CommandType::DRAW_NATIVE;
+ auto& cmd = mCommands.back().data.draw;
+ cmd.type = DrawCallDescriptor::Type::DRAW_NATIVE;
+ cmd.drawNative.drawNativeInfo = *drawInfo;
+ mCallStack.PushCall("DrawNative", "");
+ }
+
void Draw(
uint32_t vertexCount,
uint32_t instanceCount,
cmd.draw.instanceCount = instanceCount;
cmd.draw.firstInstance = firstInstance;
cmd.draw.firstVertex = firstVertex;
- mCallStack.PushCall("Draw", "");
+ TraceCallStack::NamedParams namedParams;
+ namedParams["vertexCount"] << vertexCount;
+ namedParams["instanceCount"] << instanceCount;
+ namedParams["firstInstance"] << firstInstance;
+ namedParams["firstVertex"] << firstVertex;
+ mCallStack.PushCall("Draw", namedParams.str(), namedParams);
}
void DrawIndexed(
cmd.drawIndexed.indexCount = indexCount;
cmd.drawIndexed.vertexOffset = vertexOffset;
cmd.drawIndexed.instanceCount = instanceCount;
- mCallStack.PushCall("DrawIndexed", "");
+ TraceCallStack::NamedParams namedParams;
+ namedParams["firstIndex"] << firstIndex;
+ namedParams["firstInstance"] << firstInstance;
+ namedParams["indexCount"] << indexCount;
+ namedParams["vertexOffset"] << vertexOffset;
+ namedParams["instanceCount"] << instanceCount;
+ mCallStack.PushCall("DrawIndexed", namedParams.str(), namedParams);
}
void DrawIndexedIndirect(
cmd.drawIndexedIndirect.offset = offset;
cmd.drawIndexedIndirect.drawCount = drawCount;
cmd.drawIndexedIndirect.stride = stride;
- mCallStack.PushCall("DrawIndexedIndirect", "");
+ TraceCallStack::NamedParams namedParams;
+ namedParams["offset"] << offset;
+ namedParams["drawCount"] << drawCount;
+ namedParams["stride"] << stride;
+ mCallStack.PushCall("DrawIndexedIndirect", namedParams.str(), namedParams);
}
void Reset() override