From 2c58c198ea461809ef286afd71e247f38d25e27d Mon Sep 17 00:00:00 2001 From: Matthew Date: Sun, 11 May 2025 15:03:08 +1000 Subject: [PATCH] fixed bug with asset loader not setting buffer offset --- assets/hog.jpg | Bin 0 -> 121743 bytes external/renderdoc/renderdoc_app.h | 741 +++++++++++++++++++++++++++++ src/assets.h | 1 + src/game.c | 6 +- src/packer.c | 1 + src/renderer_vulkan.c | 41 +- src/renderer_vulkan.h | 14 +- src/renderer_vulkan_public.c | 12 +- src/shaders/glsl/gui.vert.glsl | 5 + src/shaders/glsl/structures.glsl | 1 + 10 files changed, 816 insertions(+), 6 deletions(-) create mode 100644 assets/hog.jpg create mode 100644 external/renderdoc/renderdoc_app.h diff --git a/assets/hog.jpg b/assets/hog.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f1e17cbc825551165ea396a3554b93b5aee5bf0e GIT binary patch literal 121743 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 +#endif + +#if defined(WIN32) || defined(__WIN32__) || defined(_WIN32) || defined(_MSC_VER) +#define RENDERDOC_CC __cdecl +#elif defined(__linux__) || defined(__FreeBSD__) +#define RENDERDOC_CC +#elif defined(__APPLE__) +#define RENDERDOC_CC +#else +#error "Unknown platform" +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +////////////////////////////////////////////////////////////////////////////////////////////////// +// Constants not used directly in below API + +// This is a GUID/magic value used for when applications pass a path where shader debug +// information can be found to match up with a stripped shader. +// the define can be used like so: const GUID RENDERDOC_ShaderDebugMagicValue = +// RENDERDOC_ShaderDebugMagicValue_value +#define RENDERDOC_ShaderDebugMagicValue_struct \ + { \ + 0xeab25520, 0x6670, 0x4865, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \ + } + +// as an alternative when you want a byte array (assuming x86 endianness): +#define RENDERDOC_ShaderDebugMagicValue_bytearray \ + { \ + 0x20, 0x55, 0xb2, 0xea, 0x70, 0x66, 0x65, 0x48, 0x84, 0x29, 0x6c, 0x8, 0x51, 0x54, 0x00, 0xff \ + } + +// truncated version when only a uint64_t is available (e.g. Vulkan tags): +#define RENDERDOC_ShaderDebugMagicValue_truncated 0x48656670eab25520ULL + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc capture options +// + +typedef enum RENDERDOC_CaptureOption +{ + // Allow the application to enable vsync + // + // Default - enabled + // + // 1 - The application can enable or disable vsync at will + // 0 - vsync is force disabled + eRENDERDOC_Option_AllowVSync = 0, + + // Allow the application to enable fullscreen + // + // Default - enabled + // + // 1 - The application can enable or disable fullscreen at will + // 0 - fullscreen is force disabled + eRENDERDOC_Option_AllowFullscreen = 1, + + // Record API debugging events and messages + // + // Default - disabled + // + // 1 - Enable built-in API debugging features and records the results into + // the capture, which is matched up with events on replay + // 0 - no API debugging is forcibly enabled + eRENDERDOC_Option_APIValidation = 2, + eRENDERDOC_Option_DebugDeviceMode = 2, // deprecated name of this enum + + // Capture CPU callstacks for API events + // + // Default - disabled + // + // 1 - Enables capturing of callstacks + // 0 - no callstacks are captured + eRENDERDOC_Option_CaptureCallstacks = 3, + + // When capturing CPU callstacks, only capture them from actions. + // This option does nothing without the above option being enabled + // + // Default - disabled + // + // 1 - Only captures callstacks for actions. + // Ignored if CaptureCallstacks is disabled + // 0 - Callstacks, if enabled, are captured for every event. + eRENDERDOC_Option_CaptureCallstacksOnlyDraws = 4, + eRENDERDOC_Option_CaptureCallstacksOnlyActions = 4, + + // Specify a delay in seconds to wait for a debugger to attach, after + // creating or injecting into a process, before continuing to allow it to run. + // + // 0 indicates no delay, and the process will run immediately after injection + // + // Default - 0 seconds + // + eRENDERDOC_Option_DelayForDebugger = 5, + + // Verify buffer access. This includes checking the memory returned by a Map() call to + // detect any out-of-bounds modification, as well as initialising buffers with undefined contents + // to a marker value to catch use of uninitialised memory. + // + // NOTE: This option is only valid for OpenGL and D3D11. Explicit APIs such as D3D12 and Vulkan do + // not do the same kind of interception & checking and undefined contents are really undefined. + // + // Default - disabled + // + // 1 - Verify buffer access + // 0 - No verification is performed, and overwriting bounds may cause crashes or corruption in + // RenderDoc. + eRENDERDOC_Option_VerifyBufferAccess = 6, + + // The old name for eRENDERDOC_Option_VerifyBufferAccess was eRENDERDOC_Option_VerifyMapWrites. + // This option now controls the filling of uninitialised buffers with 0xdddddddd which was + // previously always enabled + eRENDERDOC_Option_VerifyMapWrites = eRENDERDOC_Option_VerifyBufferAccess, + + // Hooks any system API calls that create child processes, and injects + // RenderDoc into them recursively with the same options. + // + // Default - disabled + // + // 1 - Hooks into spawned child processes + // 0 - Child processes are not hooked by RenderDoc + eRENDERDOC_Option_HookIntoChildren = 7, + + // By default RenderDoc only includes resources in the final capture necessary + // for that frame, this allows you to override that behaviour. + // + // Default - disabled + // + // 1 - all live resources at the time of capture are included in the capture + // and available for inspection + // 0 - only the resources referenced by the captured frame are included + eRENDERDOC_Option_RefAllResources = 8, + + // **NOTE**: As of RenderDoc v1.1 this option has been deprecated. Setting or + // getting it will be ignored, to allow compatibility with older versions. + // In v1.1 the option acts as if it's always enabled. + // + // By default RenderDoc skips saving initial states for resources where the + // previous contents don't appear to be used, assuming that writes before + // reads indicate previous contents aren't used. + // + // Default - disabled + // + // 1 - initial contents at the start of each captured frame are saved, even if + // they are later overwritten or cleared before being used. + // 0 - unless a read is detected, initial contents will not be saved and will + // appear as black or empty data. + eRENDERDOC_Option_SaveAllInitials = 9, + + // In APIs that allow for the recording of command lists to be replayed later, + // RenderDoc may choose to not capture command lists before a frame capture is + // triggered, to reduce overheads. This means any command lists recorded once + // and replayed many times will not be available and may cause a failure to + // capture. + // + // NOTE: This is only true for APIs where multithreading is difficult or + // discouraged. Newer APIs like Vulkan and D3D12 will ignore this option + // and always capture all command lists since the API is heavily oriented + // around it and the overheads have been reduced by API design. + // + // 1 - All command lists are captured from the start of the application + // 0 - Command lists are only captured if their recording begins during + // the period when a frame capture is in progress. + eRENDERDOC_Option_CaptureAllCmdLists = 10, + + // Mute API debugging output when the API validation mode option is enabled + // + // Default - enabled + // + // 1 - Mute any API debug messages from being displayed or passed through + // 0 - API debugging is displayed as normal + eRENDERDOC_Option_DebugOutputMute = 11, + + // Option to allow vendor extensions to be used even when they may be + // incompatible with RenderDoc and cause corrupted replays or crashes. + // + // Default - inactive + // + // No values are documented, this option should only be used when absolutely + // necessary as directed by a RenderDoc developer. + eRENDERDOC_Option_AllowUnsupportedVendorExtensions = 12, + + // Define a soft memory limit which some APIs may aim to keep overhead under where + // possible. Anything above this limit will where possible be saved directly to disk during + // capture. + // This will cause increased disk space use (which may cause a capture to fail if disk space is + // exhausted) as well as slower capture times. + // + // Not all memory allocations may be deferred like this so it is not a guarantee of a memory + // limit. + // + // Units are in MBs, suggested values would range from 200MB to 1000MB. + // + // Default - 0 Megabytes + eRENDERDOC_Option_SoftMemoryLimit = 13, +} RENDERDOC_CaptureOption; + +// Sets an option that controls how RenderDoc behaves on capture. +// +// Returns 1 if the option and value are valid +// Returns 0 if either is invalid and the option is unchanged +typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionU32)(RENDERDOC_CaptureOption opt, uint32_t val); +typedef int(RENDERDOC_CC *pRENDERDOC_SetCaptureOptionF32)(RENDERDOC_CaptureOption opt, float val); + +// Gets the current value of an option as a uint32_t +// +// If the option is invalid, 0xffffffff is returned +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionU32)(RENDERDOC_CaptureOption opt); + +// Gets the current value of an option as a float +// +// If the option is invalid, -FLT_MAX is returned +typedef float(RENDERDOC_CC *pRENDERDOC_GetCaptureOptionF32)(RENDERDOC_CaptureOption opt); + +typedef enum RENDERDOC_InputButton +{ + // '0' - '9' matches ASCII values + eRENDERDOC_Key_0 = 0x30, + eRENDERDOC_Key_1 = 0x31, + eRENDERDOC_Key_2 = 0x32, + eRENDERDOC_Key_3 = 0x33, + eRENDERDOC_Key_4 = 0x34, + eRENDERDOC_Key_5 = 0x35, + eRENDERDOC_Key_6 = 0x36, + eRENDERDOC_Key_7 = 0x37, + eRENDERDOC_Key_8 = 0x38, + eRENDERDOC_Key_9 = 0x39, + + // 'A' - 'Z' matches ASCII values + eRENDERDOC_Key_A = 0x41, + eRENDERDOC_Key_B = 0x42, + eRENDERDOC_Key_C = 0x43, + eRENDERDOC_Key_D = 0x44, + eRENDERDOC_Key_E = 0x45, + eRENDERDOC_Key_F = 0x46, + eRENDERDOC_Key_G = 0x47, + eRENDERDOC_Key_H = 0x48, + eRENDERDOC_Key_I = 0x49, + eRENDERDOC_Key_J = 0x4A, + eRENDERDOC_Key_K = 0x4B, + eRENDERDOC_Key_L = 0x4C, + eRENDERDOC_Key_M = 0x4D, + eRENDERDOC_Key_N = 0x4E, + eRENDERDOC_Key_O = 0x4F, + eRENDERDOC_Key_P = 0x50, + eRENDERDOC_Key_Q = 0x51, + eRENDERDOC_Key_R = 0x52, + eRENDERDOC_Key_S = 0x53, + eRENDERDOC_Key_T = 0x54, + eRENDERDOC_Key_U = 0x55, + eRENDERDOC_Key_V = 0x56, + eRENDERDOC_Key_W = 0x57, + eRENDERDOC_Key_X = 0x58, + eRENDERDOC_Key_Y = 0x59, + eRENDERDOC_Key_Z = 0x5A, + + // leave the rest of the ASCII range free + // in case we want to use it later + eRENDERDOC_Key_NonPrintable = 0x100, + + eRENDERDOC_Key_Divide, + eRENDERDOC_Key_Multiply, + eRENDERDOC_Key_Subtract, + eRENDERDOC_Key_Plus, + + eRENDERDOC_Key_F1, + eRENDERDOC_Key_F2, + eRENDERDOC_Key_F3, + eRENDERDOC_Key_F4, + eRENDERDOC_Key_F5, + eRENDERDOC_Key_F6, + eRENDERDOC_Key_F7, + eRENDERDOC_Key_F8, + eRENDERDOC_Key_F9, + eRENDERDOC_Key_F10, + eRENDERDOC_Key_F11, + eRENDERDOC_Key_F12, + + eRENDERDOC_Key_Home, + eRENDERDOC_Key_End, + eRENDERDOC_Key_Insert, + eRENDERDOC_Key_Delete, + eRENDERDOC_Key_PageUp, + eRENDERDOC_Key_PageDn, + + eRENDERDOC_Key_Backspace, + eRENDERDOC_Key_Tab, + eRENDERDOC_Key_PrtScrn, + eRENDERDOC_Key_Pause, + + eRENDERDOC_Key_Max, +} RENDERDOC_InputButton; + +// Sets which key or keys can be used to toggle focus between multiple windows +// +// If keys is NULL or num is 0, toggle keys will be disabled +typedef void(RENDERDOC_CC *pRENDERDOC_SetFocusToggleKeys)(RENDERDOC_InputButton *keys, int num); + +// Sets which key or keys can be used to capture the next frame +// +// If keys is NULL or num is 0, captures keys will be disabled +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureKeys)(RENDERDOC_InputButton *keys, int num); + +typedef enum RENDERDOC_OverlayBits +{ + // This single bit controls whether the overlay is enabled or disabled globally + eRENDERDOC_Overlay_Enabled = 0x1, + + // Show the average framerate over several seconds as well as min/max + eRENDERDOC_Overlay_FrameRate = 0x2, + + // Show the current frame number + eRENDERDOC_Overlay_FrameNumber = 0x4, + + // Show a list of recent captures, and how many captures have been made + eRENDERDOC_Overlay_CaptureList = 0x8, + + // Default values for the overlay mask + eRENDERDOC_Overlay_Default = (eRENDERDOC_Overlay_Enabled | eRENDERDOC_Overlay_FrameRate | + eRENDERDOC_Overlay_FrameNumber | eRENDERDOC_Overlay_CaptureList), + + // Enable all bits + eRENDERDOC_Overlay_All = ~0U, + + // Disable all bits + eRENDERDOC_Overlay_None = 0, +} RENDERDOC_OverlayBits; + +// returns the overlay bits that have been set +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetOverlayBits)(); +// sets the overlay bits with an and & or mask +typedef void(RENDERDOC_CC *pRENDERDOC_MaskOverlayBits)(uint32_t And, uint32_t Or); + +// this function will attempt to remove RenderDoc's hooks in the application. +// +// Note: that this can only work correctly if done immediately after +// the module is loaded, before any API work happens. RenderDoc will remove its +// injected hooks and shut down. Behaviour is undefined if this is called +// after any API functions have been called, and there is still no guarantee of +// success. +typedef void(RENDERDOC_CC *pRENDERDOC_RemoveHooks)(); + +// DEPRECATED: compatibility for code compiled against pre-1.4.1 headers. +typedef pRENDERDOC_RemoveHooks pRENDERDOC_Shutdown; + +// This function will unload RenderDoc's crash handler. +// +// If you use your own crash handler and don't want RenderDoc's handler to +// intercede, you can call this function to unload it and any unhandled +// exceptions will pass to the next handler. +typedef void(RENDERDOC_CC *pRENDERDOC_UnloadCrashHandler)(); + +// Sets the capture file path template +// +// pathtemplate is a UTF-8 string that gives a template for how captures will be named +// and where they will be saved. +// +// Any extension is stripped off the path, and captures are saved in the directory +// specified, and named with the filename and the frame number appended. If the +// directory does not exist it will be created, including any parent directories. +// +// If pathtemplate is NULL, the template will remain unchanged +// +// Example: +// +// SetCaptureFilePathTemplate("my_captures/example"); +// +// Capture #1 -> my_captures/example_frame123.rdc +// Capture #2 -> my_captures/example_frame456.rdc +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureFilePathTemplate)(const char *pathtemplate); + +// returns the current capture path template, see SetCaptureFileTemplate above, as a UTF-8 string +typedef const char *(RENDERDOC_CC *pRENDERDOC_GetCaptureFilePathTemplate)(); + +// DEPRECATED: compatibility for code compiled against pre-1.1.2 headers. +typedef pRENDERDOC_SetCaptureFilePathTemplate pRENDERDOC_SetLogFilePathTemplate; +typedef pRENDERDOC_GetCaptureFilePathTemplate pRENDERDOC_GetLogFilePathTemplate; + +// returns the number of captures that have been made +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetNumCaptures)(); + +// This function returns the details of a capture, by index. New captures are added +// to the end of the list. +// +// filename will be filled with the absolute path to the capture file, as a UTF-8 string +// pathlength will be written with the length in bytes of the filename string +// timestamp will be written with the time of the capture, in seconds since the Unix epoch +// +// Any of the parameters can be NULL and they'll be skipped. +// +// The function will return 1 if the capture index is valid, or 0 if the index is invalid +// If the index is invalid, the values will be unchanged +// +// Note: when captures are deleted in the UI they will remain in this list, so the +// capture path may not exist anymore. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_GetCapture)(uint32_t idx, char *filename, + uint32_t *pathlength, uint64_t *timestamp); + +// Sets the comments associated with a capture file. These comments are displayed in the +// UI program when opening. +// +// filePath should be a path to the capture file to add comments to. If set to NULL or "" +// the most recent capture file created made will be used instead. +// comments should be a NULL-terminated UTF-8 string to add as comments. +// +// Any existing comments will be overwritten. +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureFileComments)(const char *filePath, + const char *comments); + +// returns 1 if the RenderDoc UI is connected to this application, 0 otherwise +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsTargetControlConnected)(); + +// DEPRECATED: compatibility for code compiled against pre-1.1.1 headers. +// This was renamed to IsTargetControlConnected in API 1.1.1, the old typedef is kept here for +// backwards compatibility with old code, it is castable either way since it's ABI compatible +// as the same function pointer type. +typedef pRENDERDOC_IsTargetControlConnected pRENDERDOC_IsRemoteAccessConnected; + +// This function will launch the Replay UI associated with the RenderDoc library injected +// into the running application. +// +// if connectTargetControl is 1, the Replay UI will be launched with a command line parameter +// to connect to this application +// cmdline is the rest of the command line, as a UTF-8 string. E.g. a captures to open +// if cmdline is NULL, the command line will be empty. +// +// returns the PID of the replay UI if successful, 0 if not successful. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_LaunchReplayUI)(uint32_t connectTargetControl, + const char *cmdline); + +// RenderDoc can return a higher version than requested if it's backwards compatible, +// this function returns the actual version returned. If a parameter is NULL, it will be +// ignored and the others will be filled out. +typedef void(RENDERDOC_CC *pRENDERDOC_GetAPIVersion)(int *major, int *minor, int *patch); + +// Requests that the replay UI show itself (if hidden or not the current top window). This can be +// used in conjunction with IsTargetControlConnected and LaunchReplayUI to intelligently handle +// showing the UI after making a capture. +// +// This will return 1 if the request was successfully passed on, though it's not guaranteed that +// the UI will be on top in all cases depending on OS rules. It will return 0 if there is no current +// target control connection to make such a request, or if there was another error +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_ShowReplayUI)(); + +////////////////////////////////////////////////////////////////////////// +// Capturing functions +// + +// A device pointer is a pointer to the API's root handle. +// +// This would be an ID3D11Device, HGLRC/GLXContext, ID3D12Device, etc +typedef void *RENDERDOC_DevicePointer; + +// A window handle is the OS's native window handle +// +// This would be an HWND, GLXDrawable, etc +typedef void *RENDERDOC_WindowHandle; + +// A helper macro for Vulkan, where the device handle cannot be used directly. +// +// Passing the VkInstance to this macro will return the RENDERDOC_DevicePointer to use. +// +// Specifically, the value needed is the dispatch table pointer, which sits as the first +// pointer-sized object in the memory pointed to by the VkInstance. Thus we cast to a void** and +// indirect once. +#define RENDERDOC_DEVICEPOINTER_FROM_VKINSTANCE(inst) (*((void **)(inst))) + +// This sets the RenderDoc in-app overlay in the API/window pair as 'active' and it will +// respond to keypresses. Neither parameter can be NULL +typedef void(RENDERDOC_CC *pRENDERDOC_SetActiveWindow)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// capture the next frame on whichever window and API is currently considered active +typedef void(RENDERDOC_CC *pRENDERDOC_TriggerCapture)(); + +// capture the next N frames on whichever window and API is currently considered active +typedef void(RENDERDOC_CC *pRENDERDOC_TriggerMultiFrameCapture)(uint32_t numFrames); + +// When choosing either a device pointer or a window handle to capture, you can pass NULL. +// Passing NULL specifies a 'wildcard' match against anything. This allows you to specify +// any API rendering to a specific window, or a specific API instance rendering to any window, +// or in the simplest case of one window and one API, you can just pass NULL for both. +// +// In either case, if there are two or more possible matching (device,window) pairs it +// is undefined which one will be captured. +// +// Note: for headless rendering you can pass NULL for the window handle and either specify +// a device pointer or leave it NULL as above. + +// Immediately starts capturing API calls on the specified device pointer and window handle. +// +// If there is no matching thing to capture (e.g. no supported API has been initialised), +// this will do nothing. +// +// The results are undefined (including crashes) if two captures are started overlapping, +// even on separate devices and/oror windows. +typedef void(RENDERDOC_CC *pRENDERDOC_StartFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Returns whether or not a frame capture is currently ongoing anywhere. +// +// This will return 1 if a capture is ongoing, and 0 if there is no capture running +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_IsFrameCapturing)(); + +// Ends capturing immediately. +// +// This will return 1 if the capture succeeded, and 0 if there was an error capturing. +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_EndFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Ends capturing immediately and discard any data stored without saving to disk. +// +// This will return 1 if the capture was discarded, and 0 if there was an error or no capture +// was in progress +typedef uint32_t(RENDERDOC_CC *pRENDERDOC_DiscardFrameCapture)(RENDERDOC_DevicePointer device, + RENDERDOC_WindowHandle wndHandle); + +// Only valid to be called between a call to StartFrameCapture and EndFrameCapture. Gives a custom +// title to the capture produced which will be displayed in the UI. +// +// If multiple captures are ongoing, this title will be applied to the first capture to end after +// this call. The second capture to end will have no title, unless this function is called again. +// +// Calling this function has no effect if no capture is currently running, and if it is called +// multiple times only the last title will be used. +typedef void(RENDERDOC_CC *pRENDERDOC_SetCaptureTitle)(const char *title); + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc API versions +// + +// RenderDoc uses semantic versioning (http://semver.org/). +// +// MAJOR version is incremented when incompatible API changes happen. +// MINOR version is incremented when functionality is added in a backwards-compatible manner. +// PATCH version is incremented when backwards-compatible bug fixes happen. +// +// Note that this means the API returned can be higher than the one you might have requested. +// e.g. if you are running against a newer RenderDoc that supports 1.0.1, it will be returned +// instead of 1.0.0. You can check this with the GetAPIVersion entry point +typedef enum RENDERDOC_Version +{ + eRENDERDOC_API_Version_1_0_0 = 10000, // RENDERDOC_API_1_0_0 = 1 00 00 + eRENDERDOC_API_Version_1_0_1 = 10001, // RENDERDOC_API_1_0_1 = 1 00 01 + eRENDERDOC_API_Version_1_0_2 = 10002, // RENDERDOC_API_1_0_2 = 1 00 02 + eRENDERDOC_API_Version_1_1_0 = 10100, // RENDERDOC_API_1_1_0 = 1 01 00 + eRENDERDOC_API_Version_1_1_1 = 10101, // RENDERDOC_API_1_1_1 = 1 01 01 + eRENDERDOC_API_Version_1_1_2 = 10102, // RENDERDOC_API_1_1_2 = 1 01 02 + eRENDERDOC_API_Version_1_2_0 = 10200, // RENDERDOC_API_1_2_0 = 1 02 00 + eRENDERDOC_API_Version_1_3_0 = 10300, // RENDERDOC_API_1_3_0 = 1 03 00 + eRENDERDOC_API_Version_1_4_0 = 10400, // RENDERDOC_API_1_4_0 = 1 04 00 + eRENDERDOC_API_Version_1_4_1 = 10401, // RENDERDOC_API_1_4_1 = 1 04 01 + eRENDERDOC_API_Version_1_4_2 = 10402, // RENDERDOC_API_1_4_2 = 1 04 02 + eRENDERDOC_API_Version_1_5_0 = 10500, // RENDERDOC_API_1_5_0 = 1 05 00 + eRENDERDOC_API_Version_1_6_0 = 10600, // RENDERDOC_API_1_6_0 = 1 06 00 +} RENDERDOC_Version; + +// API version changelog: +// +// 1.0.0 - initial release +// 1.0.1 - Bugfix: IsFrameCapturing() was returning false for captures that were triggered +// by keypress or TriggerCapture, instead of Start/EndFrameCapture. +// 1.0.2 - Refactor: Renamed eRENDERDOC_Option_DebugDeviceMode to eRENDERDOC_Option_APIValidation +// 1.1.0 - Add feature: TriggerMultiFrameCapture(). Backwards compatible with 1.0.x since the new +// function pointer is added to the end of the struct, the original layout is identical +// 1.1.1 - Refactor: Renamed remote access to target control (to better disambiguate from remote +// replay/remote server concept in replay UI) +// 1.1.2 - Refactor: Renamed "log file" in function names to just capture, to clarify that these +// are captures and not debug logging files. This is the first API version in the v1.0 +// branch. +// 1.2.0 - Added feature: SetCaptureFileComments() to add comments to a capture file that will be +// displayed in the UI program on load. +// 1.3.0 - Added feature: New capture option eRENDERDOC_Option_AllowUnsupportedVendorExtensions +// which allows users to opt-in to allowing unsupported vendor extensions to function. +// Should be used at the user's own risk. +// Refactor: Renamed eRENDERDOC_Option_VerifyMapWrites to +// eRENDERDOC_Option_VerifyBufferAccess, which now also controls initialisation to +// 0xdddddddd of uninitialised buffer contents. +// 1.4.0 - Added feature: DiscardFrameCapture() to discard a frame capture in progress and stop +// capturing without saving anything to disk. +// 1.4.1 - Refactor: Renamed Shutdown to RemoveHooks to better clarify what is happening +// 1.4.2 - Refactor: Renamed 'draws' to 'actions' in callstack capture option. +// 1.5.0 - Added feature: ShowReplayUI() to request that the replay UI show itself if connected +// 1.6.0 - Added feature: SetCaptureTitle() which can be used to set a title for a +// capture made with StartFrameCapture() or EndFrameCapture() + +typedef struct RENDERDOC_API_1_6_0 +{ + pRENDERDOC_GetAPIVersion GetAPIVersion; + + pRENDERDOC_SetCaptureOptionU32 SetCaptureOptionU32; + pRENDERDOC_SetCaptureOptionF32 SetCaptureOptionF32; + + pRENDERDOC_GetCaptureOptionU32 GetCaptureOptionU32; + pRENDERDOC_GetCaptureOptionF32 GetCaptureOptionF32; + + pRENDERDOC_SetFocusToggleKeys SetFocusToggleKeys; + pRENDERDOC_SetCaptureKeys SetCaptureKeys; + + pRENDERDOC_GetOverlayBits GetOverlayBits; + pRENDERDOC_MaskOverlayBits MaskOverlayBits; + + // Shutdown was renamed to RemoveHooks in 1.4.1. + // These unions allow old code to continue compiling without changes + union + { + pRENDERDOC_Shutdown Shutdown; + pRENDERDOC_RemoveHooks RemoveHooks; + }; + pRENDERDOC_UnloadCrashHandler UnloadCrashHandler; + + // Get/SetLogFilePathTemplate was renamed to Get/SetCaptureFilePathTemplate in 1.1.2. + // These unions allow old code to continue compiling without changes + union + { + // deprecated name + pRENDERDOC_SetLogFilePathTemplate SetLogFilePathTemplate; + // current name + pRENDERDOC_SetCaptureFilePathTemplate SetCaptureFilePathTemplate; + }; + union + { + // deprecated name + pRENDERDOC_GetLogFilePathTemplate GetLogFilePathTemplate; + // current name + pRENDERDOC_GetCaptureFilePathTemplate GetCaptureFilePathTemplate; + }; + + pRENDERDOC_GetNumCaptures GetNumCaptures; + pRENDERDOC_GetCapture GetCapture; + + pRENDERDOC_TriggerCapture TriggerCapture; + + // IsRemoteAccessConnected was renamed to IsTargetControlConnected in 1.1.1. + // This union allows old code to continue compiling without changes + union + { + // deprecated name + pRENDERDOC_IsRemoteAccessConnected IsRemoteAccessConnected; + // current name + pRENDERDOC_IsTargetControlConnected IsTargetControlConnected; + }; + pRENDERDOC_LaunchReplayUI LaunchReplayUI; + + pRENDERDOC_SetActiveWindow SetActiveWindow; + + pRENDERDOC_StartFrameCapture StartFrameCapture; + pRENDERDOC_IsFrameCapturing IsFrameCapturing; + pRENDERDOC_EndFrameCapture EndFrameCapture; + + // new function in 1.1.0 + pRENDERDOC_TriggerMultiFrameCapture TriggerMultiFrameCapture; + + // new function in 1.2.0 + pRENDERDOC_SetCaptureFileComments SetCaptureFileComments; + + // new function in 1.4.0 + pRENDERDOC_DiscardFrameCapture DiscardFrameCapture; + + // new function in 1.5.0 + pRENDERDOC_ShowReplayUI ShowReplayUI; + + // new function in 1.6.0 + pRENDERDOC_SetCaptureTitle SetCaptureTitle; +} RENDERDOC_API_1_6_0; + +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_0_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_1_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_2_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_3_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_0; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_1; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_4_2; +typedef RENDERDOC_API_1_6_0 RENDERDOC_API_1_5_0; + +////////////////////////////////////////////////////////////////////////////////////////////////// +// RenderDoc API entry point +// +// This entry point can be obtained via GetProcAddress/dlsym if RenderDoc is available. +// +// The name is the same as the typedef - "RENDERDOC_GetAPI" +// +// This function is not thread safe, and should not be called on multiple threads at once. +// Ideally, call this once as early as possible in your application's startup, before doing +// any API work, since some configuration functionality etc has to be done also before +// initialising any APIs. +// +// Parameters: +// version is a single value from the RENDERDOC_Version above. +// +// outAPIPointers will be filled out with a pointer to the corresponding struct of function +// pointers. +// +// Returns: +// 1 - if the outAPIPointers has been filled with a pointer to the API struct requested +// 0 - if the requested version is not supported or the arguments are invalid. +// +typedef int(RENDERDOC_CC *pRENDERDOC_GetAPI)(RENDERDOC_Version version, void **outAPIPointers); + +#ifdef __cplusplus +} // extern "C" +#endif diff --git a/src/assets.h b/src/assets.h index cd8b704..0456335 100644 --- a/src/assets.h +++ b/src/assets.h @@ -35,6 +35,7 @@ typedef enum TextureAsset_e : u32 HAMSTER, HAMSMOKER, CHEESOID, + HOG, TEXTURE_ASSET_MAX } TextureAsset; diff --git a/src/game.c b/src/game.c index e9974ca..c7962af 100644 --- a/src/game.c +++ b/src/game.c @@ -77,14 +77,18 @@ static void gRunCycle(gGameCtx *ctx, pGameInput *inputs, u32 i_count) */ rViewportSize(&ctx->pc.res); + ctx->pc.time = (f32)pCPUTimerRead(); rDescHandle pattermon = rTextureLoad(CHEESOID); - rDescHandle purplemon = rTextureLoad(HAMSMOKER); rDescHandle pattermon2 = rTextureLoad(HAMSTER); + rDescHandle purplemon = rTextureLoad(HAMSMOKER); + rDescHandle hog = rTextureLoad(HOG); gWindow(ctx, "Pattermon", 100.0f, 100.0f, 300.0f, 300.0f, pattermon); gWindow(ctx, "Pattermon2", 350.0f, 350.0f, 550.0f, 550.0f, purplemon); gWindow(ctx, "Pattermon3", 600.0f, 100.0f, 800.0f, 300.0f, pattermon2); + gWindow(ctx, "ham", 100.0f, 600.0f, 300.0f, 800.0f, pattermon2); + gWindow(ctx, "hog", 150.0f, 820.0f, 450.0f, 1020.0f, hog); rawptr vert_buffer = rBufferGUIVertMapping(); rawptr idx_buffer = rBufferGUIIdxMapping(); diff --git a/src/packer.c b/src/packer.c index 180df7e..2e17da7 100644 --- a/src/packer.c +++ b/src/packer.c @@ -33,6 +33,7 @@ const FileMapping g_Texture_File_Map[] = { { .file_name = "hamster.png", .ix = HAMSTER }, { .file_name = "ham_smoke.png", .ix = HAMSMOKER }, { .file_name = "cheesoid.png", .ix = CHEESOID }, + { .file_name = "hog.jpg", .ix = HOG }, }; c8 *g_Shader_File_Names[SHADER_ASSET_MAX] = {0}; diff --git a/src/renderer_vulkan.c b/src/renderer_vulkan.c index 0f7e9f2..ed09162 100644 --- a/src/renderer_vulkan.c +++ b/src/renderer_vulkan.c @@ -14,6 +14,13 @@ static vRenderer v_Renderer = { }, }; +#ifdef BUILD_DEBUG + +RENDERDOC_API_1_1_2 *v_rdoc_api = NULL; +b32 v_rdoc_captured = false; + +#endif + /* static vRenderer renderer = { .vk = { @@ -358,7 +365,7 @@ static b32 vImageViewCreate(vImageView *view, u32 width, u32 height, u32 channel }, }; - if (v_Renderer.state.vk.single_queue) + if (!v_Renderer.state.vk.single_queue) { image_info.sharingMode = VK_SHARING_MODE_CONCURRENT; image_info.queueFamilyIndexCount = 2; @@ -752,6 +759,24 @@ static b32 vInitInstance() return success; } +static b32 vRenderDocInit() +{ + pLibrary lib; pFunction fn; int result; + + b32 found = pLibraryLoad(RENDERDOC_LIB, &lib); + if (found) + { + found = pFunctionLoad("RENDERDOC_GetAPI", &lib, &fn); + if (found) + { + pRENDERDOC_GetAPI RENDERDOC_GetAPI = (pRENDERDOC_GetAPI)fn.fn; + result = RENDERDOC_GetAPI(eRENDERDOC_API_Version_1_1_2, (void **)&v_rdoc_api); + } + } + + return result; +} + static void vEnableDebug() { if (vValidationSupported()) @@ -1209,9 +1234,11 @@ static b32 vLibraryLoad() pLibrary *lib = &v_Renderer.handles.lib; b32 lib_found; pFunction fn; - for (i32 i = 0; i < Len(vulkan_libs); i++) { + for (i32 i = 0; i < Len(vulkan_libs); i++) + { lib_found = pLibraryLoad(vulkan_libs[i], lib); - if (lib_found) { + if (lib_found) + { lib_found = pFunctionLoad("vkGetInstanceProcAddr", lib, &fn); vkGetInstanceProcAddr = (PFN_vkGetInstanceProcAddr)fn.fn; break; @@ -1890,6 +1917,7 @@ static void vTransferUpload(vTransfer **transfers, u32 count, u32 idx) rawptr ptr = transfer->ptr; u64 ptr_pos = 0; + VkDeviceSize offset = 0; b32 imm_started = false; u32 i = 0; for (;;) @@ -1915,6 +1943,9 @@ static void vTransferUpload(vTransfer **transfers, u32 count, u32 idx) { vImmSubmitFinish(device, fence, buffer, queue); vkWaitForFences(device, 1, &fence, VK_TRUE, 999999999); + + ptr = transfer->ptr; + offset = 0; imm_started = false; } @@ -1936,6 +1967,7 @@ static void vTransferUpload(vTransfer **transfers, u32 count, u32 idx) ptr = PtrAdd(ptr, transfer_size); PtrAddAdjustLen(data_ptr, data_len, transfer_size); + ptr_pos += transfer_size; MemZero(&transfers[i]->image_copy, sizeof(VkBufferImageCopy)); @@ -1946,6 +1978,7 @@ static void vTransferUpload(vTransfer **transfers, u32 count, u32 idx) transfers[i]->image_copy.imageExtent.width = transfers[i]->w; transfers[i]->image_copy.imageExtent.height = transfers[i]->h; transfers[i]->image_copy.imageExtent.depth = 1; + transfers[i]->image_copy.bufferOffset = offset; vImageTransitionLayout(buffer, transfers[i]->image, @@ -1964,6 +1997,8 @@ static void vTransferUpload(vTransfer **transfers, u32 count, u32 idx) VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL, VK_IMAGE_LAYOUT_SHADER_READ_ONLY_OPTIMAL); + offset += (VkDeviceSize)transfer_size; + if (data_len == 0) { data_ptr = NULL; diff --git a/src/renderer_vulkan.h b/src/renderer_vulkan.h index d4d976b..b570047 100644 --- a/src/renderer_vulkan.h +++ b/src/renderer_vulkan.h @@ -9,22 +9,33 @@ #define VK_NO_PROTOTYPES #include +#ifdef BUILD_DEBUG +# include "renderdoc/renderdoc_app.h" +#endif // ::Vulkan::Constants::Header:: static const char *_VK_VALIDATION = "VK_LAYER_KHRONOS_validation"; #if __linux__ + static char *vulkan_libs[] = { "libvulkan.so.1", "libvulkan.so" }; + +#define RENDERDOC_LIB "librenderdoc.so" + #endif #if _WIN32 + static char *vulkan_libs[] = { "vulkan-1.dll", }; + +#define RENDERDOC_LIB "renderdoc.dll" + #endif #if __unix__ && !__linux__ @@ -444,7 +455,7 @@ typedef struct rRenderBuffer typedef struct rPushConst { Vec2 res; - Vec2 img_res; + f32 time; } rPushConst; typedef struct rGlobalUniforms @@ -490,6 +501,7 @@ static b32 vShaderModuleInit(u8 *bytes, u32 len, VkShaderModule *module); static void vUploadQueuesInit(); static void vLoaderStartThreads(); static b32 vBuffersInit(); +static b32 vRenderDocInit(); // ::Vulkan::Util::Functions::Header:: diff --git a/src/renderer_vulkan_public.c b/src/renderer_vulkan_public.c index 8ba7166..5a71adf 100644 --- a/src/renderer_vulkan_public.c +++ b/src/renderer_vulkan_public.c @@ -12,6 +12,7 @@ b32 rInit() #ifdef BUILD_DEBUG { vEnableDebug(); + vRenderDocInit(); } #endif @@ -479,7 +480,8 @@ static void rThreadCountSet(u32 n) b32 rFrameBegin() { b32 success = true; - VkResult result; + VkResult result; + VkDevice device = v_Renderer.handles.device; VkSwapchainKHR swapchain = v_Renderer.handles.swapchain; @@ -488,6 +490,9 @@ b32 rFrameBegin() VkSemaphore sc_sem = vFrameSwapSem(); VkSemaphore rndr_sem = vFrameRenderSem(); + if (!v_rdoc_captured) + v_rdoc_api->StartFrameCapture(device, pWindowGet()); + // TODO(MA): make this work with VK_PRESENT_MODE_MAILBOX_KHR and remove assignment of present mode to FIFO result = vkWaitForFences(device, 1, &fence, VK_TRUE, 1000000000); if (result != VK_SUCCESS) @@ -655,6 +660,11 @@ b32 rFrameFinish() v_Renderer.state.renderer.frame_count += 1; + if (!v_rdoc_captured) + { + v_rdoc_api->EndFrameCapture(v_Renderer.handles.device, pWindowGet()); + } + return success; } diff --git a/src/shaders/glsl/gui.vert.glsl b/src/shaders/glsl/gui.vert.glsl index f8cfcdb..60680bb 100644 --- a/src/shaders/glsl/gui.vert.glsl +++ b/src/shaders/glsl/gui.vert.glsl @@ -22,6 +22,11 @@ vec2 uvs[] = { vec2(1.0, 0.0) }; +vec2 rotate(vec2 coords, float theta) +{ + return mat2(cos(theta), sin(theta), -sin(theta), cos(theta)) * coords; +} + void main() { // Draw with 6 indices, gl_VertexIndex will use the appropriate index, iterates through 0-3 and not 0-5 diff --git a/src/shaders/glsl/structures.glsl b/src/shaders/glsl/structures.glsl index baa7068..c67a950 100644 --- a/src/shaders/glsl/structures.glsl +++ b/src/shaders/glsl/structures.glsl @@ -46,4 +46,5 @@ layout (std430, buffer_reference) readonly buffer GUIVertexBuffer { layout (push_constant) uniform Constants { vec2 res; + float time; } PC;