jetbrains/renderdoc-service/src/util/RenderDocActionHelpers.h (33 lines of code) (raw):
#ifndef RENDERDOCACTIONHELPERS_H
#define RENDERDOCACTIONHELPERS_H
#include "RenderDocModel/RdcAction.Generated.h"
#include <api/replay/renderdoc_replay.h>
#include <set>
#include <types/wrapper.h>
struct SDFile;
struct ActionDescription;
namespace jetbrains::renderdoc::model {
}
namespace jetbrains::renderdoc::helpers {
model::RdcActionFlags map_flags(const ActionFlags flags);
bool try_get_used_source_file_paths(const PipeState &pipeline, std::set<std::wstring> &entrypoints, std::set<std::wstring> &others);
rd::Wrapper<model::RdcSourceFilesInAction> get_used_source_file_paths(IReplayController* controller, const ActionDescription &action);
std::vector<rd::Wrapper<model::RdcAction>> get_actions_recursive(IReplayController* controller, const rdcarray<ActionDescription> &descriptions, const SDFile &file);
const ActionDescription *get_next_action(const ActionDescription *current);
const ActionDescription *find_action(const ActionDescription *begin, const std::function<bool(const ActionDescription &)> &predicate);
const ActionDescription *get_action(const rdcarray<ActionDescription> &actions, uint32_t event_id);
bool is_draw_call(const ActionDescription &action);
template<typename T>
rd::Wrapper<T> first_not_null_action(const ActionDescription *begin, const std::function<rd::Wrapper<T>(const ActionDescription &)> &transform)
{
const ActionDescription *action = begin;
while(action != nullptr)
{
if (auto result = transform(*action))
return result;
action = get_next_action(action);
}
return rd::Wrapper<T>(nullptr);
}
}
#endif //RENDERDOCACTIONHELPERS_H