Title: Openai/69676758-d944-8003-a3d4-835e33b4e372 - freem URL Source: https://freemwiki.com/wiki/Openai/69676758-d944-8003-a3d4-835e33b4e372 Markdown Content: _This conversation was exported from ChatGPT_[[1]](https://freemwiki.com/wiki/Openai/69676758-d944-8003-a3d4-835e33b4e372#cite_note-1) ## gpt-5-2[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=1 "Edit section: gpt-5-2") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=1 "Edit section's source code: gpt-5-2")] ### User: Is DisplayPort a communication protocol?[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=2 "Edit section: User: Is DisplayPort a communication protocol?") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=2 "Edit section's source code: User: Is DisplayPort a communication protocol?")] Is DisplayPort a communication protocol? ### Assistant: Yes.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=3 "Edit section: Assistant: Yes.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=3 "Edit section's source code: Assistant: Yes.")] Yes. DisplayPort is a communication protocol, but more precisely it is a digital display interface standard that defines both: 1. The electrical signaling and physical layer (how bits are transmitted over wires), and 2. The communication protocol (how video, audio, timing, and control data are packetized, encoded, synchronized, and interpreted). Key clarifications: * DisplayPort uses packet-based data transmission, unlike older interfaces such as VGA or DVI which were primarily signal-stream–oriented. * It defines: - Link training and negotiation (lane count, link rate) - Framing and encoding (e.g., 8b/10b in DP 1.x, 128b/132b in DP 2.x) - Transport of multiple data types (video, audio, auxiliary data) - Sideband communication via the AUX channel (used for EDID, DPCD, control, etc.) So in strict terms: * Yes, DisplayPort includes a communication protocol, but it is not a general-purpose protocol like TCP/IP. * It is a specialized, layered protocol stack designed specifically for real-time display transport. If you want, I can break it down in OSI-like layers or compare it directly to HDMI, USB, or PCIe. ### User: What comes above DisplayPort[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=4 "Edit section: User: What comes above DisplayPort") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=4 "Edit section's source code: User: What comes above DisplayPort")] What comes above DisplayPort ### Assistant: That depends on what you mean by “above” in the stack.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=5 "Edit section: Assistant: That depends on what you mean by “above” in the stack.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=5 "Edit section's source code: Assistant: That depends on what you mean by “above” in the stack.")] That depends on what you mean by “above” in the stack. DisplayPort itself sits relatively low. Conceptually, what comes above it is not another single protocol, but several layers of abstraction. From lowest to highest: 1. DisplayPort (you already know this layer) * Physical signaling, link training, packet transport * Carries pixel streams, audio samples, and control data 1. Video timing / pixel formats These define what the pixel stream represents, independent of the wire: * Resolution (e.g., 2560×1440) * Refresh rate (e.g., 144 Hz) * Color format (RGB, YCbCr) * Bit depth (8-bit, 10-bit, etc.) Examples: VESA timing standards like CVT / CVT-RB 1. Display protocol usage modes Logical uses of DisplayPort: * Single Stream Transport (SST) * Multi-Stream Transport (MST) These determine how many displays and streams are carried, but still no “content meaning”. 1. GPU display engine / OS graphics subsystem This is where “display content” starts to exist: * Linux: DRM/KMS, Wayland/X11 * Windows: WDDM + Desktop Window Manager * The OS compositor decides what pixels should appear on each display and hands framebuffers to the GPU 1. Applications and rendering APIs Applications generate the visuals: * OpenGL, Vulkan, DirectX, Metal * Game engines, video players, browsers They never “talk DisplayPort”; they render frames into buffers. Important distinction DisplayPort does not carry: * Video codecs (H.264, AV1, etc.) * Files, windows, or UI concepts * Application data By the time data reaches DisplayPort, it is already fully rendered pixels (plus audio). In short Above DisplayPort is: If you want, I can draw a strict layered diagram or compare this to how USB-C tunnels DisplayPort alongside PCIe and USB. ### User: I meant how DP is connected to the graphics card, which is connected to PCIe which is connected to...[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=6 "Edit section: User: I meant how DP is connected to the graphics card, which is connected to PCIe which is connected to...") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=6 "Edit section's source code: User: I meant how DP is connected to the graphics card, which is connected to PCIe which is connected to...")] I meant how DP is connected to the graphics card, which is connected to PCIe which is connected to... ### Assistant: Understood.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=7 "Edit section: Assistant: Understood.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=7 "Edit section's source code: Assistant: Understood.")] Understood. You are asking for the actual hardware / interconnect chain, not the logical graphics stack. Here is the correct end-to-end picture, from CPU outward, with the important caveats. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=8 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=8 "Edit section's source code: ###")] * Executes application code * Submits rendering commands (draw calls, compute, copies) ⬇ ##### - Command buffers, resources, sometimes framebuffers[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=9 "Edit section: - Command buffers, resources, sometimes framebuffers") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=9 "Edit section's source code: - Command buffers, resources, sometimes framebuffers")] * Shared via DMA, not copied per frame ⬇ ##### - General-purpose, packet-switched interconnect[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=10 "Edit section: - General-purpose, packet-switched interconnect") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=10 "Edit section's source code: - General-purpose, packet-switched interconnect")] * Used for: - Command submission - Resource uploads - Synchronization * Not used to transmit live pixel streams ⬇ ##### Inside the GPU, things split:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=11 "Edit section: Inside the GPU, things split:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=11 "Edit section's source code: Inside the GPU, things split:")] ###### - Execute shaders[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=12 "Edit section: - Execute shaders") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=12 "Edit section's source code: - Execute shaders")] * Produce rendered images into VRAM ###### - Reads finished framebuffers from VRAM[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=13 "Edit section: - Reads finished framebuffers from VRAM") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=13 "Edit section's source code: - Reads finished framebuffers from VRAM")] * Applies timing, scaling, color conversion * Generates a pixel stream ⬇ ##### - Dedicated hardware block on the GPU[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=14 "Edit section: - Dedicated hardware block on the GPU") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=14 "Edit section's source code: - Dedicated hardware block on the GPU")] * Converts pixel stream into: - DisplayPort packets - Electrical signaling on DP lanes * Completely independent of PCIe ⬇ ##### - Monitor decodes DP packets[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=15 "Edit section: - Monitor decodes DP packets") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=15 "Edit section's source code: - Monitor decodes DP packets")] * Drives the panel timing controller (TCON) #### DisplayPort is NOT “on top of PCIe.”[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=16 "Edit section: DisplayPort is NOT “on top of PCIe.”") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=16 "Edit section's source code: DisplayPort is NOT “on top of PCIe.”")] * PCIe is used to control the GPU and move data into VRAM * DisplayPort is a separate hardware output path * They meet only inside the GPU silicon Think of the GPU as having: * A PCIe endpoint on one side * One or more display PHYs on the other #### Slightly different wiring:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=17 "Edit section: Slightly different wiring:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=17 "Edit section's source code: Slightly different wiring:")] * CPU + GPU are on the same die * Framebuffer lives in system RAM * Display engine reads RAM directly * DP PHY may be: - On the CPU package, or - On the motherboard chipset via internal links Still: * No PCIe in the display path * PCIe is only for external GPUs or devices #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=18 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=18 "Edit section's source code: ###")] * DP is tunneled, not layered: - Raw DP packets are multiplexed over the cable - Still generated by the same DP display engine * PCIe tunneling is a separate logical channel ##### - If pixels go over PCIe or network, it is no longer DisplayPort[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=19 "Edit section: - If pixels go over PCIe or network, it is no longer DisplayPort") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=19 "Edit section's source code: - If pixels go over PCIe or network, it is no longer DisplayPort")] * It becomes a framebuffer copy + software protocol #### DisplayPort is generated by the GPU’s display controller and leaves the GPU through a dedicated PHY; PCIe only feeds the GPU, it does not carry the display signal.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=20 "Edit section: DisplayPort is generated by the GPU’s display controller and leaves the GPU through a dedicated PHY; PCIe only feeds the GPU, it does not carry the display signal.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=20 "Edit section's source code: DisplayPort is generated by the GPU’s display controller and leaves the GPU through a dedicated PHY; PCIe only feeds the GPU, it does not carry the display signal.")] If you want, I can also explain this from a die-level block diagram perspective or compare it to how NVLink or SoC display paths work. ### User: So if i wanted to develop a game, how deep should i feasibly go[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=21 "Edit section: User: So if i wanted to develop a game, how deep should i feasibly go") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=21 "Edit section's source code: User: So if i wanted to develop a game, how deep should i feasibly go")] So if i wanted to develop a game, how deep should i feasibly go ### Assistant: For game development, you should not go anywhere near DisplayPort, PCIe, or hardware signaling.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=22 "Edit section: Assistant: For game development, you should not go anywhere near DisplayPort, PCIe, or hardware signaling.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=22 "Edit section's source code: Assistant: For game development, you should not go anywhere near DisplayPort, PCIe, or hardware signaling.")] For game development, you should not go anywhere near DisplayPort, PCIe, or hardware signaling. Going that deep is neither feasible nor useful unless you are writing drivers, firmware, or silicon. Here is the correct depth to target, from a practical and technical standpoint. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=23 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=23 "Edit section's source code: ###")] This is where game developers operate. You interact with: * Vulkan / DirectX / OpenGL / Metal * GPU concepts: - Command buffers - Pipelines - Shaders - Buffers, textures - Synchronization (fences, semaphores) You output: * Rendered frames into swapchains * The OS + driver handles presentation You do not control: * Scanout timing * Display links * Color encoding at the wire level ##### You should understand:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=24 "Edit section: You should understand:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=24 "Edit section's source code: You should understand:")] * Window systems (Wayland/X11, Windows DWM) * Fullscreen vs borderless * VSync, adaptive sync * Presentation modes (mailbox, FIFO, immediate) But you do not write code here. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=25 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=25 "Edit section's source code: ###")] * Fixed-function hardware * No software hooks * No benefit to gameplay or performance understanding ##### - Abstracted by drivers and DMA[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=26 "Edit section: - Abstracted by drivers and DMA") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=26 "Edit section's source code: - Abstracted by drivers and DMA")] * Only relevant for driver or kernel development ##### - Vendor-specific[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=27 "Edit section: - Vendor-specific") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=27 "Edit section's source code: - Vendor-specific")] * Closed documentation * Irrelevant to rendering correctness #### Understand this boundary:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=28 "Edit section: Understand this boundary:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=28 "Edit section's source code: Understand this boundary:")] Once you submit a frame for presentation: * The GPU display engine takes over * Everything downstream is outside your control This mental model prevents a lot of confusion about: * Tearing * Latency * VSync behavior * Multi-monitor issues #### Go slightly deeper only here:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=29 "Edit section: Go slightly deeper only here:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=29 "Edit section's source code: Go slightly deeper only here:")] * GPU architecture basics: - Warps / wavefronts - Memory hierarchy - Cache behavior * Driver interaction: - State changes cost - CPU–GPU synchronization hazards Still: * No need to touch hardware I/O standards #### Only then would you go deeper, but that is no longer “game dev”:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=30 "Edit section: Only then would you go deeper, but that is no longer “game dev”:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=30 "Edit section's source code: Only then would you go deeper, but that is no longer “game dev”:")] * Writing a display server * Writing a GPU driver * Emulator / hypervisor graphics stack * OS kernel graphics At that point: * DisplayPort becomes relevant * PCIe packet formats matter #### For game development, stop at the graphics API and GPU architecture level.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=31 "Edit section: For game development, stop at the graphics API and GPU architecture level.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=31 "Edit section's source code: For game development, stop at the graphics API and GPU architecture level.")] Anything below that: * Is inaccessible * Provides no leverage * Is handled entirely by drivers and hardware If you want, tell me what kind of game dev you mean (engine, gameplay, rendering research, indie, low-level engine), and I can give a precise learning roadmap with no wasted depth. ### User: So SDL + Vulkan is enough[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=32 "Edit section: User: So SDL + Vulkan is enough") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=32 "Edit section's source code: User: So SDL + Vulkan is enough")] So SDL + Vulkan is enough ### Assistant: Yes.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=33 "Edit section: Assistant: Yes.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=33 "Edit section's source code: Assistant: Yes.")] Yes. SDL + Vulkan is sufficient for serious game development. More precisely: ##### SDL handles all platform-dependent, non-graphics concerns:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=34 "Edit section: SDL handles all platform-dependent, non-graphics concerns:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=34 "Edit section's source code: SDL handles all platform-dependent, non-graphics concerns:")] * Window creation * Input (keyboard, mouse, gamepads) * High-resolution timing * Display enumeration * Vulkan surface creation (VkSurfaceKHR) _Cross-platform portability (Windows, Linux, macOS_) You do not need to care about: * DisplayPort * Window system details * Native APIs (Win32, X11, Wayland, Cocoa) SDL already sits at the correct abstraction boundary. * macOS uses MoltenVK (Vulkan → Metal), which is still fine unless you are doing cutting-edge Vulkan features. ##### Vulkan gives you explicit, low-level GPU control, which is the lowest level that is actually useful for games:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=35 "Edit section: Vulkan gives you explicit, low-level GPU control, which is the lowest level that is actually useful for games:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=35 "Edit section's source code: Vulkan gives you explicit, low-level GPU control, which is the lowest level that is actually useful for games:")] * Explicit memory management * Explicit synchronization * Predictable performance * Modern rendering features * Access to compute This is exactly where “deep enough” stops. ##### And this is a feature, not a limitation:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=36 "Edit section: And this is a feature, not a limitation:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=36 "Edit section's source code: And this is a feature, not a limitation:")] * No access to scanout * No control over DP/HDMI * No display timing beyond vsync/adaptive sync requests * No OS compositor bypass (except exclusive fullscreen) Those layers are correctly abstracted away. ===== Your Game ===== └─ Your Engine Code ├─ SDL (window, input, events) └─ Vulkan (rendering, compute) └─ GPU driver └─ GPU display engine └─ DisplayPort / HDMI You should never cross that Vulkan ↔ driver boundary. ##### Only in edge cases:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=37 "Edit section: Only in edge cases:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=37 "Edit section's source code: Only in edge cases:")] * You need a full editor UI → add ImGui * You want audio → SDL_audio or another lib * You want asset pipelines → separate tooling * You need console support → proprietary SDKs Still no need to go lower. ##### For game development:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=38 "Edit section: For game development:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=38 "Edit section's source code: For game development:")] Anything below that is driver, OS, or hardware work — not game development. If you want, I can sanity-check a minimal Vulkan + SDL project layout or suggest what not to over-engineer early. ### User: Do GPU manufacturers write drivers for their hardware?[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=39 "Edit section: User: Do GPU manufacturers write drivers for their hardware?") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=39 "Edit section's source code: User: Do GPU manufacturers write drivers for their hardware?")] Do GPU manufacturers write drivers for their hardware? ### Assistant: Yes.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=40 "Edit section: Assistant: Yes.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=40 "Edit section's source code: Assistant: Yes.")] Yes. GPU manufacturers write the primary drivers for their hardware. More precisely and with the important nuances: #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=41 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=41 "Edit section's source code: ###")] * Writes and maintains: - Windows drivers - Linux proprietary drivers * Full control over hardware documentation and behavior ##### - Writes and maintains: - Windows drivers - The official Linux driver stack (AMDGPU kernel driver + Mesa user-space components)[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=42 "Edit section: - Writes and maintains: - Windows drivers - The official Linux driver stack (AMDGPU kernel driver + Mesa user-space components)") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=42 "Edit section's source code: - Writes and maintains: - Windows drivers - The official Linux driver stack (AMDGPU kernel driver + Mesa user-space components)")] * Linux drivers are open source, but still authored and governed by AMD ##### - Writes and maintains: - Windows drivers - Linux drivers (fully open source, upstream-first)[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=43 "Edit section: - Writes and maintains: - Windows drivers - Linux drivers (fully open source, upstream-first)") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=43 "Edit section's source code: - Writes and maintains: - Windows drivers - Linux drivers (fully open source, upstream-first)")] * Intel GPUs are the most openly documented #### - Microsoft, Linux, Apple do not write GPU drivers from scratch[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=44 "Edit section: - Microsoft, Linux, Apple do not write GPU drivers from scratch") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=44 "Edit section's source code: - Microsoft, Linux, Apple do not write GPU drivers from scratch")] * They define: - Driver models (WDDM, DRM/KMS, IOKit) - Validation, signing, and integration rules * They provide interfaces, not hardware-specific code #### GPU drivers are split into layers:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=45 "Edit section: GPU drivers are split into layers:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=45 "Edit section's source code: GPU drivers are split into layers:")] ##### - Memory management[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=46 "Edit section: - Memory management") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=46 "Edit section's source code: - Memory management")] * Scheduling * Security / isolation * Display control (modesetting) ##### - Implements APIs: - Vulkan - OpenGL - DirectX[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=47 "Edit section: - Implements APIs: - Vulkan - OpenGL - DirectX") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=47 "Edit section's source code: - Implements APIs: - Vulkan - OpenGL - DirectX")] * Translates API calls into GPU command streams Both layers are vendor-specific. #### Common misconception:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=48 "Edit section: Common misconception:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=48 "Edit section's source code: Common misconception:")] * Mesa drivers ≠ community guesses * Mesa contains vendor-authored or vendor-blessed code * Even reverse-engineered drivers (e.g., Nouveau) trail far behind #### This is exactly why:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=49 "Edit section: This is exactly why:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=49 "Edit section's source code: This is exactly why:")] * You cannot “go below Vulkan” * Display engines, PCIe, DP, scanout are all hidden * GPU vendors expose only what they want you to see #### GPU vendors write their own drivers; the OS provides the framework, not the implementation.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=50 "Edit section: GPU vendors write their own drivers; the OS provides the framework, not the implementation.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=50 "Edit section's source code: GPU vendors write their own drivers; the OS provides the framework, not the implementation.")] If you want, I can explain how Vulkan drivers differ from DirectX drivers internally, or why driver bugs look the way they do from an engine developer’s perspective. ### User: What are these OS interfaces[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=51 "Edit section: User: What are these OS interfaces") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=51 "Edit section's source code: User: What are these OS interfaces")] What are these OS interfaces ### Assistant: They are formal driver models and kernel interfaces defined by the operating system.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=52 "Edit section: Assistant: They are formal driver models and kernel interfaces defined by the operating system.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=52 "Edit section's source code: Assistant: They are formal driver models and kernel interfaces defined by the operating system.")] They are formal driver models and kernel interfaces defined by the operating system. GPU vendors must implement them to plug their hardware into the OS. Below is a precise breakdown, without hand-waving. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=53 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=53 "Edit section's source code: ###")] This is the core interface. It defines: * How the GPU is scheduled and preempted * Video memory management * Context isolation between processes * Display modesetting and scanout ownership * Power management * Multi-GPU behavior GPU vendors provide: * A kernel-mode driver (dxgkrnl interface) * One or more user-mode drivers: - Direct3D (D3D11/12) - Vulkan - OpenGL Windows itself: * Owns the desktop compositor (DWM) * Enforces security and stability rules * Does not know GPU internals #### Linux splits graphics into several interfaces.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=54 "Edit section: Linux splits graphics into several interfaces.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=54 "Edit section's source code: Linux splits graphics into several interfaces.")] ##### Kernel-space interface that defines:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=55 "Edit section: Kernel-space interface that defines:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=55 "Edit section's source code: Kernel-space interface that defines:")] * GPU memory objects (GEM/TTM) * Command submission * Scheduling and fences * Display control (CRTCs, planes, connectors) * Atomic modesetting Vendors implement: * Kernel drivers (amdgpu, i915, nouveau, nvidia-drm) ##### These sit on top of DRM:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=56 "Edit section: These sit on top of DRM:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=56 "Edit section's source code: These sit on top of DRM:")] * Vulkan (via vendor ICD) * OpenGL (usually via Mesa) * EGL / GBM (buffer management and window system glue) The window system (Wayland/X11) never touches the hardware directly. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=57 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=57 "Edit section's source code: ###")] Apple tightly controls this stack. * GPU drivers are written by Apple (sometimes with vendor cooperation) * Metal is the only first-class graphics API * Display management is integrated into the OS Third-party low-level access does not exist. #### They all define:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=58 "Edit section: They all define:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=58 "Edit section's source code: They all define:")] * How commands enter the GPU * How memory is shared and isolated * How display ownership works * How preemption and fault handling occur They explicitly hide: * Command encodings * Display PHY details (DP/HDMI) * PCIe transactions * Scanout timing internals #### Your code path stops here:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=59 "Edit section: Your code path stops here:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=59 "Edit section's source code: Your code path stops here:")] Your code → Vulkan / DirectX → User-mode driver → Kernel driver (WDDM / DRM) → Hardware You never cross the API boundary. #### OS interfaces are formal contracts between the OS and GPU vendors.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=60 "Edit section: OS interfaces are formal contracts between the OS and GPU vendors.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=60 "Edit section's source code: OS interfaces are formal contracts between the OS and GPU vendors.")] They are not optional, and they are not bypassable in normal applications. If you want, I can map a single Vulkan call all the way down to which OS interface handles it, step by step. ### User: In order to properly design a game on paper, how do i determine the exact hardware constraints?[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=61 "Edit section: User: In order to properly design a game on paper, how do i determine the exact hardware constraints?") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=61 "Edit section's source code: User: In order to properly design a game on paper, how do i determine the exact hardware constraints?")] In order to properly design a game on paper, how do i determine the exact hardware constraints? In other word: mechanic A should not consume more than X resource ### Assistant: This is a good question, and it’s the right way to think if you want designs that actually ship.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=62 "Edit section: Assistant: This is a good question, and it’s the right way to think if you want designs that actually ship.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=62 "Edit section's source code: Assistant: This is a good question, and it’s the right way to think if you want designs that actually ship.")] This is a good question, and it’s the right way to think if you want designs that actually ship. The key is that you do not derive constraints from hardware first. You derive them from a performance budget, which is then mapped onto hardware classes. Below is the correct, practical method used in real engines. #### Everything flows from this.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=63 "Edit section: Everything flows from this.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=63 "Edit section's source code: Everything flows from this.")] Typical targets: * 60 FPS → 16.67 ms per frame * 120 FPS → 8.33 ms per frame * 30 FPS → 33.3 ms per frame This is your total budget for: * CPU * GPU * synchronization * OS overhead If you don’t fix this, all other numbers are meaningless. #### You never design for “a GPU”. You design for classes.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=64 "Edit section: You never design for “a GPU”. You design for classes.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=64 "Edit section's source code: You never design for “a GPU”. You design for classes.")] Example PC tiers: * Minimum: 4-core CPU @ ~3 GHz, GTX 1060 / RX 580–class GPU * Recommended: 6–8 core CPU, RTX 2060 / RX 6600–class GPU * High-end: modern 8–12 core CPU, RTX 4070+ You do not need exact specs—only relative capability. #### Example for 60 FPS:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=65 "Edit section: Example for 60 FPS:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=65 "Edit section's source code: Example for 60 FPS:")] ##### - Total CPU frame time: ≤ 6–8 ms[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=66 "Edit section: - Total CPU frame time: ≤ 6–8 ms") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=66 "Edit section's source code: - Total CPU frame time: ≤ 6–8 ms")] Typical split: * Gameplay logic: 1–2 ms * Physics: 1–2 ms * AI: 0.5–1.5 ms * Rendering submission: 1–2 ms * Misc (audio, scripting): ~1 ms ##### - Total GPU frame time: ≤ 10–12 ms[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=67 "Edit section: - Total GPU frame time: ≤ 10–12 ms") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=67 "Edit section's source code: - Total GPU frame time: ≤ 10–12 ms")] Split roughly into: * Geometry / visibility: 2–4 ms * Lighting / shading: 4–6 ms * Post-processing: 1–2 ms * UI / compositing: <1 ms These are design targets, not measurements. #### Now you can answer:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=68 "Edit section: Now you can answer:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=68 "Edit section's source code: Now you can answer:")] ##### Express limits as:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=69 "Edit section: Express limits as:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=69 "Edit section's source code: Express limits as:")] * Time per frame (ms) * Operations per entity * Entities per frame Example: * Enemy AI update: ≤ 0.02 ms per entity * Physics objects: ≤ 1,000 active bodies * Pathfinding: amortized over multiple frames ##### Express limits as:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=70 "Edit section: Express limits as:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=70 "Edit section's source code: Express limits as:")] * Draw calls * Triangles / vertices * Shader cost * Overdraw * Texture memory Example: * Character model: ≤ 50k triangles * Screen-space effects: ≤ 2 ms GPU * Particles: ≤ 100k sprites total #### This is crucial.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=71 "Edit section: This is crucial.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=71 "Edit section's source code: This is crucial.")] Every mechanic must answer: * What scales with entity count? * What scales with screen resolution? * What scales with view distance? Example: * Crowd system scales by: - LOD level - Animation update rate - AI tick frequency * VFX scale by: - Resolution - Particle density - Shader quality On paper, you write: #### Design for:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=72 "Edit section: Design for:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=72 "Edit section's source code: Design for:")] * Maximum enemies on screen * Worst camera angle * Maximum particle overlap * Peak combat moments If it fits worst-case, it fits everywhere else. #### You cannot:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=73 "Edit section: You cannot:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=73 "Edit section's source code: You cannot:")] * Predict exact GPU ms costs * Predict cache behavior * Predict driver scheduling * Predict shader compilation impact That’s why: * Paper design gives upper bounds * Profiling later validates them #### On paper, you don’t say:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=74 "Edit section: On paper, you don’t say:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=74 "Edit section's source code: On paper, you don’t say:")] You say: That statement is meaningful, testable, and enforceable. #### Design budgets in milliseconds, counts, and scaling rules — not hardware registers or specs.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=75 "Edit section: Design budgets in milliseconds, counts, and scaling rules — not hardware registers or specs.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=75 "Edit section's source code: Design budgets in milliseconds, counts, and scaling rules — not hardware registers or specs.")] That is the deepest level you can reliably go before you have a prototype. If you want, I can help you build a one-page performance budget template you can reuse for any game concept. ### User: Ok.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=76 "Edit section: User: Ok.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=76 "Edit section's source code: User: Ok.")] Ok. But these are all time constraints, what about 'space' constraints ### Assistant: Good — this is where many designs get vague, and where disciplined engines differ from hobby ones.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=77 "Edit section: Assistant: Good — this is where many designs get vague, and where disciplined engines differ from hobby ones.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=77 "Edit section's source code: Assistant: Good — this is where many designs get vague, and where disciplined engines differ from hobby ones.")] Good — this is where many designs get vague, and where disciplined engines differ from hobby ones. “Space” constraints mean memory footprint and bandwidth, not disk size. You handle them with the same budgeting mindset as time. #### Do this early, even if approximate.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=78 "Edit section: Do this early, even if approximate.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=78 "Edit section's source code: Do this early, even if approximate.")] Example PC targets: * Minimum: - System RAM usable by game: 6–8 GB - VRAM usable by game: 3–4 GB * Recommended: - RAM: 12–16 GB - VRAM: 6–8 GB You never assume you own all memory. OS + drivers take a fixed cut. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=79 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=79 "Edit section's source code: ###")] Typical buckets: * World data (level geometry, navmesh) * Gameplay state (entities, components) * AI data * Physics data * Streaming buffers * Audio buffers * Scratch / transient allocations Example (8 GB target): | | | | --- | --- | | | | | | | | | | | | | | | | | | | | | | ##### Buckets must be explicit:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=80 "Edit section: Buckets must be explicit:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=80 "Edit section's source code: Buckets must be explicit:")] | | | | --- | --- | | | | | | | | | | | | | | | | | | | | | | If you don’t reserve headroom, you will stutter or crash. #### Now mechanics get space budgets, not just time budgets.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=81 "Edit section: Now mechanics get space budgets, not just time budgets.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=81 "Edit section's source code: Now mechanics get space budgets, not just time budgets.")] ##### You define:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=82 "Edit section: You define:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=82 "Edit section's source code: You define:")] * Bytes per entity * Maximum active entities Example: * NPC state: 2 KB * Animation state: 8 KB * AI blackboard: 4 KB → 14 KB per NPC At 1,000 NPCs: → ~14 MB RAM (acceptable) ##### Define per-asset limits:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=83 "Edit section: Define per-asset limits:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=83 "Edit section's source code: Define per-asset limits:")] * Character texture set: - Albedo 2k - Normal 2k - ORM 2k → ~48 MB uncompressed, ~12–16 MB compressed * Environment prop: - ≤ 10 MB VRAM * Hero character: - ≤ 64 MB VRAM Write these limits into the design. #### Streaming trades space for bandwidth + complexity.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=84 "Edit section: Streaming trades space for bandwidth + complexity.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=84 "Edit section's source code: Streaming trades space for bandwidth + complexity.")] Design rules: * Maximum streamed-in assets at once * Maximum streaming IO per second * Maximum latency tolerance Example: * World tiles: ≤ 256 MB each * Max 3 tiles resident * Streaming buffer: 1 GB RAM * IO budget: ≤ 100 MB/s sustained #### Memory size is useless without bandwidth.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=85 "Edit section: Memory size is useless without bandwidth.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=85 "Edit section's source code: Memory size is useless without bandwidth.")] You must budget: * CPU cache pressure * RAM → GPU transfers * VRAM read/write per frame Examples: * Avoid per-frame full-buffer uploads * Prefer persistent mapped buffers * Cap particle buffer rewrites On paper: #### You should not attempt to:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=86 "Edit section: You should not attempt to:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=86 "Edit section's source code: You should not attempt to:")] * Predict cache line utilization * Predict exact compression ratios * Predict residency behavior Those are profiling-stage concerns. #### Bad:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=87 "Edit section: Bad:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=87 "Edit section's source code: Bad:")] Good: Bad: Good: #### Space constraints are budgets, caps, and per-unit costs.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=88 "Edit section: Space constraints are budgets, caps, and per-unit costs.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=88 "Edit section's source code: Space constraints are budgets, caps, and per-unit costs.")] If every mechanic has: * a per-unit memory cost * a hard cap * a scaling rule Then the game is designable, testable, and shippable. If you want, I can help you turn one of your mechanics into a concrete time + space budget as an example. ### User: So let's say i'm designing an open world action adventure game for a 3770K-based PC with 16GB of DDR3 ram, and a 6600XT…[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=89 "Edit section: User: So let's say i'm designing an open world action adventure game for a 3770K-based PC with 16GB of DDR3 ram, and a 6600XT…") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=89 "Edit section's source code: User: So let's say i'm designing an open world action adventure game for a 3770K-based PC with 16GB of DDR3 ram, and a 6600XT…")] So let's say i'm designing an open world action adventure game for a 3770K-based PC with 16GB of DDR3 ram, and a 6600XT gpu what are my constraints ### Assistant: Below is a sane, conservative constraint set for an open-world action-adventure game targeting exactly:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=90 "Edit section: Assistant: Below is a sane, conservative constraint set for an open-world action-adventure game targeting exactly:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=90 "Edit section's source code: Assistant: Below is a sane, conservative constraint set for an open-world action-adventure game targeting exactly:")] Below is a sane, conservative constraint set for an open-world action-adventure game targeting exactly: * CPU: i7-3770K (4C / 8T, ~3.5–3.9 GHz, Ivy Bridge) * System RAM: 16 GB DDR3 * GPU: RX 6600 XT (8 GB VRAM) * Storage: assume SATA SSD (not NVMe) I am deliberately pessimistic on CPU and memory, optimistic on GPU. This reflects reality for that platform. #### You should target:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=91 "Edit section: You should target:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=91 "Edit section's source code: You should target:")] * 60 FPS @ 1080p * Frame budget: 16.67 ms Do not design for 120 FPS on this CPU. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=92 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=92 "Edit section's source code: ###")] You have: * 4 strong cores * Weak per-core performance by modern standards * Limited cache and memory bandwidth Total CPU time available per frame: → ~7–8 ms usable Anything beyond that will cause stutter regardless of GPU headroom. ##### | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=93 "Edit section: | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=93 "Edit section's source code: | | |")] | --- | --- | | | | | | | | | | | | | | | | | | | You must aggressively multithread, but expect one heavy main thread. ##### On paper, you should cap:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=94 "Edit section: On paper, you should cap:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=94 "Edit section's source code: On paper, you should cap:")] * Active NPCs with full AI: ~100–150 * Simulated physics bodies: ~500 active, rest sleeping * Animation updates: LOD-based, many at reduced tick rate * World streaming updates: amortized across frames Rules you should write explicitly: * AI updates every N frames outside combat * Physics simplified beyond X meters * Animation evaluation rate drops with distance #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=95 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=95 "Edit section's source code: ###")] RX 6600 XT can handle: * 1080p Ultra comfortably * 1440p Medium–High, but CPU may block Budget: * GPU time ≤ 11–12 ms ##### Safe limits at 1080p:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=96 "Edit section: Safe limits at 1080p:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=96 "Edit section's source code: Safe limits at 1080p:")] * On-screen triangles: ≤ 10–15 million * Draw calls: ≤ 2,000 (prefer <1,500) * Shadow maps: 1–2 cascades at 2k * Screen-space effects: ≤ 2 ms total * Particles: ≤ 150k sprites worst case GPU is not your primary design constraint. #### You must assume:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=97 "Edit section: You must assume:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=97 "Edit section's source code: You must assume:")] * OS + background: ~3–4 GB * Practical game budget: ≤ 10–11 GB ##### | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=98 "Edit section: | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=98 "Edit section's source code: | | |")] | --- | --- | | | | | | | | | | | | | | | | | | | | | | Total ≈ 8.4 GB This leaves safety margin. ##### If one NPC costs:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=99 "Edit section: If one NPC costs:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=99 "Edit section's source code: If one NPC costs:")] * State + components: 4 KB * Animation state: 12 KB * AI blackboard: 8 KB → ~24 KB per NPC 1,000 NPCs → 24 MB (fine) 10,000 NPCs → 240 MB (problematic) So: * Simulated NPCs must be capped * Background NPCs must be data-only or despawned #### You should not design to fill all 8 GB.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=100 "Edit section: You should not design to fill all 8 GB.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=100 "Edit section's source code: You should not design to fill all 8 GB.")] Practical budget: * ≤ 6.5–7 GB VRAM ##### | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=101 "Edit section: | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=101 "Edit section's source code: | | |")] | --- | --- | | | | | | | | | | | | | | | | | | | | | | ##### - World textures: mostly 2k, selective 4k[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=102 "Edit section: - World textures: mostly 2k, selective 4k") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=102 "Edit section's source code: - World textures: mostly 2k, selective 4k")] * Hero characters: ≤ 64 MB VRAM each * Common NPC: ≤ 16–24 MB * World prop: ≤ 5–10 MB No unbounded texture sets. #### With DDR3 + SATA SSD:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=103 "Edit section: With DDR3 + SATA SSD:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=103 "Edit section's source code: With DDR3 + SATA SSD:")] * Sustained IO: ~300–500 MB/s * Safe streaming budget: ≤ 100 MB/s Design rules: * World chunks: ≤ 256 MB each * Max resident chunks: 3–4 * Streaming buffer: ≥ 1.5 GB RAM * Never block gameplay on streaming #### You should explicitly avoid designing for:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=104 "Edit section: You should explicitly avoid designing for:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=104 "Edit section's source code: You should explicitly avoid designing for:")] * Massive crowds with full AI * High-frequency physics destruction * Fully dynamic global illumination * Heavy CPU-side procedural generation * Simulation-heavy systemic worlds (e.g. full economy) Those are CPU killers on Ivy Bridge. #### Target: 60 FPS @ 1080p[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=105 "Edit section: Target: 60 FPS @ 1080p") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=105 "Edit section's source code: Target: 60 FPS @ 1080p")] CPU: ≤ 8 ms per frame GPU: ≤ 12 ms per frame RAM: ≤ 10 GB used VRAM: ≤ 7 GB used Every mechanic must specify: * CPU cost per unit * RAM per unit * VRAM per asset * Hard caps * LOD / scaling rules ##### This machine is GPU-strong, CPU-weak by modern standards.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=106 "Edit section: This machine is GPU-strong, CPU-weak by modern standards.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=106 "Edit section's source code: This machine is GPU-strong, CPU-weak by modern standards.")] Your game must be simulation-disciplined, not visually restrained. If you want, next step could be: * Translating one concrete mechanic (e.g. open-world combat encounter, city crowd, wildlife system) into exact time + space budgets on this hardware. ## gpt-5-mini[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=107 "Edit section: gpt-5-mini") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=107 "Edit section's source code: gpt-5-mini")] ### User: How was the cpu/gpu time split determined?[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=108 "Edit section: User: How was the cpu/gpu time split determined?") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=108 "Edit section's source code: User: How was the cpu/gpu time split determined?")] How was the cpu/gpu time split determined? ### Assistant: The CPU/GPU split comes from practical observation, pipeline theory, and the architecture of your target system, not ar…[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=109 "Edit section: Assistant: The CPU/GPU split comes from practical observation, pipeline theory, and the architecture of your target system, not ar…") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=109 "Edit section's source code: Assistant: The CPU/GPU split comes from practical observation, pipeline theory, and the architecture of your target system, not ar…")] The CPU/GPU split comes from practical observation, pipeline theory, and the architecture of your target system, not arbitrary numbers. Let me break it down clearly. #### You target 60 FPS → 16.67 ms per frame.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=110 "Edit section: You target 60 FPS → 16.67 ms per frame.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=110 "Edit section's source code: You target 60 FPS → 16.67 ms per frame.")] This is your hard upper limit for all game logic + rendering. #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=111 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=111 "Edit section's source code: ###")] * Responsible for: - Game logic - AI - Physics - Animation evaluation - Command buffer submission * All of this prepares work for the GPU, but cannot execute pixel shaders. Rule of thumb from real-world engines (Unity, Unreal, proprietary): * Mid-tier CPU-bound system: ~40–50% of frame budget spent on CPU * Mid-tier GPU-bound system: ~50–60% on GPU Why? Because even a “GPU-heavy” frame needs CPU to feed commands and update game state. You cannot ignore the CPU. For your system (i7-3770K): * 4 cores, ~3.5 GHz * Modern GPU is strong (RX 6600 XT) * CPU becomes the bottleneck first in open-world logic-heavy scenarios → ~7–8 ms for CPU, remaining ~9–10 ms for GPU This is what I used in the previous table. ##### - Handles pixel processing, shaders, post-processing, draw calls, etc.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=112 "Edit section: - Handles pixel processing, shaders, post-processing, draw calls, etc.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=112 "Edit section's source code: - Handles pixel processing, shaders, post-processing, draw calls, etc.")] * A mid-range GPU like the 6600 XT has ~10–12 ms to render a full 1080p frame without stuttering. * If your frame budget is 16.67 ms, and CPU takes 7–8 ms, GPU can consume ~9–10 ms, leaving a small margin for OS overhead, swapchain, etc. #### In real engine design, the split is determined by:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=113 "Edit section: In real engine design, the split is determined by:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=113 "Edit section's source code: In real engine design, the split is determined by:")] 1. Profiling similar hardware / engines - Look at existing games on similar GPUs + CPUs - Identify CPU-heavy and GPU-heavy workloads 2. Pipeline theory - Frame time = max(CPU_frame_time, GPU_frame_time) - You can’t push GPU faster than CPU feed rate (CPU becomes limiting), and vice versa 3. Hardware knowledge - CPU: limited cores, cache, memory bandwidth → limits AI/physics - GPU: thousands of cores, high memory bandwidth → can handle visuals more comfortably at 1080p 4. Safety margin - Always leave ~10–15% frame budget as headroom for spikes, OS overhead, and streaming ===== Target: 60 FPS → 16.67 ms/frame ===== Estimate CPU-heavy systems take ~45% of budget: 16.67 × 0.45 ≈ 7.5 ms → CPU 16.67 − 7.5 ≈ 9.17 ms → GPU * Then you break CPU/GPU budgets into subsystems (physics, AI, draw calls, shaders) to guide design. #### Time split is a guideline, not a rule.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=114 "Edit section: Time split is a guideline, not a rule.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=114 "Edit section's source code: Time split is a guideline, not a rule.")] * You aim for CPU ≤ 7–8 ms, GPU ≤ 10 ms. * The final profile may shift depending on scene, complexity, and LOD. * Engines use adaptive techniques to respect these budgets at runtime. If you want, I can make a diagram showing exactly which parts of the frame go to CPU vs GPU, including game logic, physics, rendering submission, and pixel shading, for your 3770K + 6600 XT target. It’s very illustrative. ### User: Ok[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=115 "Edit section: User: Ok") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=115 "Edit section's source code: User: Ok")] Ok ### Assistant: Here’s a clear diagram of how a single frame splits between CPU and GPU for your 3770K + RX 6600 XT system targeting 60…[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=116 "Edit section: Assistant: Here’s a clear diagram of how a single frame splits between CPU and GPU for your 3770K + RX 6600 XT system targeting 60…") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=116 "Edit section's source code: Assistant: Here’s a clear diagram of how a single frame splits between CPU and GPU for your 3770K + RX 6600 XT system targeting 60…")] Here’s a clear diagram of how a single frame splits between CPU and GPU for your 3770K + RX 6600 XT system targeting 60 FPS (16.67 ms per frame). I’ve kept numbers realistic and rounded slightly for clarity. ===== ┌───────────────────────────────────────────────┐ ===== │ TOTAL FRAME: 16.67 ms │ ├─────────────┬──────────────┬─────────────────┤ │ CPU │ GPU │ Notes │ ├─────────────┼──────────────┼─────────────────┤ │ 7.5 ms │ 9.2 ms │ CPU + GPU must run in parallel; frame time is max(CPU, GPU) └─────────────┴──────────────┴─────────────────┘ ##### | | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=117 "Edit section: | | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=117 "Edit section's source code: | | | |")] | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | | | | | ##### | | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=118 "Edit section: | | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=118 "Edit section's source code: | | | |")] | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | ##### 1. CPU-limited mechanics - Cap number of active AI/NPCs to fit 3 ms–4 ms total AI + physics per frame. - Spread expensive updates over multiple frames (tick-scheduling).[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=119 "Edit section: 1. CPU-limited mechanics - Cap number of active AI/NPCs to fit 3 ms–4 ms total AI + physics per frame. - Spread expensive updates over multiple frames (tick-scheduling).") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=119 "Edit section's source code: 1. CPU-limited mechanics - Cap number of active AI/NPCs to fit 3 ms–4 ms total AI + physics per frame. - Spread expensive updates over multiple frames (tick-scheduling).")] 1. GPU-limited mechanics - Keep triangle count ≤ ~10–15M on screen. - Avoid >2k × 2 shadow maps per frame. - Limit full-screen post-process passes to ≤ 2 ms. 2. Scaling - LOD reduces geometry & animation cost with distance. - Streaming reduces memory footprint; chunk updates amortized over frames. If you want, I can overlay this diagram with memory/VRAM budgets so you get a full CPU+GPU+RAM/VRAM constraint table for every mechanic on this exact system. That gives a complete “design on paper” blueprint. ### User: Ok[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=120 "Edit section: User: Ok") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=120 "Edit section's source code: User: Ok")] Ok ### Assistant: Perfect.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=121 "Edit section: Assistant: Perfect.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=121 "Edit section's source code: Assistant: Perfect.")] Perfect. Let’s combine time (CPU/GPU) and space (RAM/VRAM) budgets into a single practical design blueprint for your 3770K + 16 GB RAM + RX 6600 XT system. This gives you a “paper-ready” set of constraints for each game mechanic. #### - Frame rate: 60 FPS → 16.67 ms/frame[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=122 "Edit section: - Frame rate: 60 FPS → 16.67 ms/frame") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=122 "Edit section's source code: - Frame rate: 60 FPS → 16.67 ms/frame")] * CPU: i7-3770K (4C/8T, ~3.5 GHz) * System RAM: 16 GB DDR3 * GPU: RX 6600 XT (8 GB VRAM) * Resolution: 1080p * Storage: SATA SSD #### | | | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=123 "Edit section: | | | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=123 "Edit section's source code: | | | | |")] | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Total: CPU ~7.5 ms, GPU ~9.2 ms #### ###[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=124 "Edit section: ###") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=124 "Edit section's source code: ###")] | | | | | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ##### | | | |[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=125 "Edit section: | | | |") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=125 "Edit section's source code: | | | |")] | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #### When designing each feature, write per-unit budgets:[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=126 "Edit section: When designing each feature, write per-unit budgets:") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=126 "Edit section's source code: When designing each feature, write per-unit budgets:")] | | | | | | | --- | --- | --- | --- | --- | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #### 1. Cap entity counts based on CPU time and RAM usage.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=127 "Edit section: 1. Cap entity counts based on CPU time and RAM usage.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=127 "Edit section's source code: 1. Cap entity counts based on CPU time and RAM usage.")] 1. Cap polygon counts & textures based on VRAM and GPU time. 2. Spread expensive updates over frames (AI, physics, streaming). 3. Use headroom in CPU/GPU budgets to handle spikes. 4. Target worst-case scenarios for mechanics, not average. This gives you a fully constrained design-on-paper template. You can now assign explicit CPU, RAM, and GPU budgets to every mechanic before coding a line. If you want, I can make a visual “budget map” diagram that shows CPU, GPU, RAM, and VRAM all in one frame—it’s very helpful for quick reference while designing. ### User: Ok lets look at it the opposite way, how do i calculate the hardware cost of my game design on paper[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=128 "Edit section: User: Ok lets look at it the opposite way, how do i calculate the hardware cost of my game design on paper") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=128 "Edit section's source code: User: Ok lets look at it the opposite way, how do i calculate the hardware cost of my game design on paper")] Ok lets look at it the opposite way, how do i calculate the hardware cost of my game design on paper ### Assistant: Got it — now we’re flipping the problem.[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=129 "Edit section: Assistant: Got it — now we’re flipping the problem.") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=129 "Edit section's source code: Assistant: Got it — now we’re flipping the problem.")] Got it — now we’re flipping the problem. Instead of “given hardware, what can my game do,” you want “given a game design, what hardware specs are required to run it at target performance.” This is exactly what studios do for “minimum” and “recommended” specs. Here’s a step-by-step method. #### 1. Define your design targets[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=130 "Edit section: 1. Define your design targets") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=130 "Edit section's source code: 1. Define your design targets")] Before estimating hardware, you must know: * Frame rate → e.g., 60 FPS → 16.67 ms/frame * Resolution → e.g., 1080p * Maximum simultaneous entities → NPCs, physics objects, particles * Maximum texture & geometry fidelity → polygons, texture resolution * Maximum post-processing effects → shadows, lighting, screen-space effects These numbers are the design inputs for the calculation. #### 2. Estimate CPU cost per mechanic[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=131 "Edit section: 2. Estimate CPU cost per mechanic") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=131 "Edit section's source code: 2. Estimate CPU cost per mechanic")] For each system, estimate time per unit per frame. | Mechanic | CPU per unit (ms) | Units | Total CPU (ms/frame) | | ----------------- | ----------------- | ----- | -------------------- | | NPC AI | 0.025 | 100 | 2.5 | | Physics body | 0.002 | 500 | 1.0 | | Animation eval | 0.010 | 150 | 1.5 | | Game logic | – | – | 1.0 | | Scripting / audio | – | – | 0.5 | Sum → CPU time per frame Example: 6.5 ms → required CPU must have at least this much per core (or multi-threaded equivalent). #### 3. Estimate GPU cost per mechanic[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=132 "Edit section: 3. Estimate GPU cost per mechanic") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=132 "Edit section's source code: 3. Estimate GPU cost per mechanic")] Same approach, but in GPU milliseconds or complexity units: | Mechanic | GPU cost per unit | Units | Total GPU cost | | ---------------------------- | ----------------- | ----- | -------------- | | Character geometry & shading | 0.05 ms | 50 | 2.5 ms | | Environment props | 0.005 ms | 500 | 2.5 ms | | Particles | 0.01 ms | 200 | 2.0 ms | | Post-processing | – | – | 2.0 ms | | Shadows | – | – | 1.0 ms | Sum → GPU frame time Example: 10 ms → GPU must be able to execute that workload in ≤ 10 ms at the target resolution. #### 4. Convert CPU/GPU time to hardware class[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=133 "Edit section: 4. Convert CPU/GPU time to hardware class") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=133 "Edit section's source code: 4. Convert CPU/GPU time to hardware class")] Once you have total CPU & GPU time per frame: 1. CPU: ```Required CPU performance = total CPU workload / frame time per core``` - Adjust for multithreading and per-core efficiency. - Use benchmark numbers of real CPUs: - e.g., if your design uses 6.5 ms CPU per frame on one “simulation” core, a CPU like i7-3770K (~3.5 GHz) can handle it. If >10 ms, need a stronger CPU. 2. GPU: - Convert total GPU ms → GPU throughput needed: - Vertex throughput (Mvertices/s) - Pixel throughput (MPixels/s) - Shader performance (GFlops) - Compare to benchmarked GPUs. - Example: total shading cost = 10 ms at 1080p → 6600 XT class can handle it. 4K would need stronger GPU. #### 5. Estimate memory requirements[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=134 "Edit section: 5. Estimate memory requirements") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=134 "Edit section's source code: 5. Estimate memory requirements")] ##### RAM[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=135 "Edit section: RAM") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=135 "Edit section's source code: RAM")] 1. Sum all gameplay, physics, AI, audio, streaming buffers. 2. Add OS overhead (3–4 GB for modern Windows). 3. Add safety margin (~10–15%). Example: design requires 8 GB + 4 GB OS + 10% → 13.2 GB → recommend 16 GB RAM minimum. ##### VRAM[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=136 "Edit section: VRAM") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=136 "Edit section's source code: VRAM")] 1. Sum all textures, geometry buffers, render targets, shadows, post effects. 2. Add headroom (0.5–1 GB). 3. Example: 6 GB total → recommend 8 GB GPU. #### 6. Factor in bandwidth[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=137 "Edit section: 6. Factor in bandwidth") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=137 "Edit section's source code: 6. Factor in bandwidth")] * CPU: RAM bandwidth may limit AI/physics-heavy systems. * GPU: Memory bandwidth may limit high-resolution textures or full-screen effects. * Include headroom (~10–20%) in both cases. #### 7. Define minimum / recommended / high-end specs[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=138 "Edit section: 7. Define minimum / recommended / high-end specs") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=138 "Edit section's source code: 7. Define minimum / recommended / high-end specs")] * Minimum → can just hit your frame target at lowest settings. * Recommended → comfortable frame rate, medium-high settings. * High-end → maxed-out settings, higher resolution / FPS. | Tier | CPU | RAM | GPU | Notes | | ----------- | ------------------- | -------- | ----------------------- | ------------------ | | Minimum | ~i5/i7 3rd gen | 16 GB | 6600 XT / GTX 1060 | 1080p 60 FPS | | Recommended | 6–8 cores, 3.5 GHz+ | 16–32 GB | RTX 3060 / 6600 XT high | 1080p Ultra 60 FPS | | High-end | 8+ cores | 32 GB | RTX 4070+ / 6800 XT | 1440p 60–120 FPS | ##### ✅ Key principle[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=139 "Edit section: ✅ Key principle") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=139 "Edit section's source code: ✅ Key principle")] * Start with frame budget and mechanics cost. * Sum per-unit costs to get total CPU/GPU time and memory. * Compare to benchmarked hardware → pick hardware tier. * Iterate: tweak mechanic complexity or entity counts until budget fits desired tier. If you want, I can make a worked example calculation for one specific system, like your 3770K + 6600 XT, showing exactly how to calculate minimum CPU cores, GPU power, RAM, and VRAM from a hypothetical open-world game design. That turns theory into a step-by-step “on-paper hardware calculator.” ## References[[edit](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&veaction=edit§ion=140 "Edit section: References") | [edit source](https://freemwiki.com/index.php?title=Openai/69676758-d944-8003-a3d4-835e33b4e372&action=edit§ion=140 "Edit section's source code: References")] 1. [↑](https://freemwiki.com/wiki/Openai/69676758-d944-8003-a3d4-835e33b4e372#cite_ref-1 "Jump up")["DisplayPort Communication Protocol"](https://chatgpt.com/share/69676758-d944-8003-a3d4-835e33b4e372). ChatGPT. Retrieved 2026-01-15.