Skip to content

Commit e775dc2

Browse files
fix(shader): replace prototype shader path with runtime loader
Load HLSL or CSO shaders from the configured shader directory during swapchain processing so the PR's shader work changes the virtual display output. Remove the dead generated shader blobs and stale shader scaffolding, and restore the docs and install script behavior reviewers need to validate it. Made-with: Cursor
1 parent 6a3ae8a commit e775dc2

15 files changed

Lines changed: 883 additions & 1266 deletions

File tree

Common/Include/AdapterOption.h

Lines changed: 0 additions & 134 deletions
Original file line numberDiff line numberDiff line change
@@ -65,100 +65,6 @@ vector<GPUInfo> getAvailableGPUs() {
6565
return gpus;
6666
}
6767

68-
// #--- // Find the integrated GPU (iGPU) from available adapters
69-
// #--- // Returns optional LUID if iGPU is found, nullopt otherwise
70-
// #--- inline std::optional<LUID> findiGPU() {
71-
// #--- auto gpus = getAvailableGPUs();
72-
// #--- if (gpus.empty()) {
73-
// #--- return std::nullopt;
74-
// #--- }
75-
// #---
76-
// #--- // iGPU detection criteria:
77-
// #--- // 1. Not a software adapter (has dedicated video memory > 0)
78-
// #--- // 2. Low dedicated video memory (typically < 512MB for integrated)
79-
// #--- // 3. Usually Intel HD/UHD graphics (Vendor ID 0x8086) or AMD APU (Vendor ID 0x1002)
80-
// #--- // 4. Often the GPU with least dedicated memory (excluding software adapters)
81-
// #---
82-
// #--- const UINT64 iGPUMemoryThreshold = 512ULL * 1024ULL * 1024ULL; // 512MB threshold
83-
// #--- const UINT intelVendorId = 0x8086; // Intel
84-
// #--- const UINT amdVendorId = 0x1002; // AMD (for APUs)
85-
// #---
86-
// #--- std::optional<LUID> iGPULuid = std::nullopt;
87-
// #--- UINT64 minDedicatedMemory = UINT64_MAX;
88-
// #--- const GPUInfo* candidateGPU = nullptr;
89-
// #---
90-
// #--- // First pass: Look for Intel or AMD integrated graphics with low memory
91-
// #--- for (const auto& gpu : gpus) {
92-
// #--- const auto& desc = gpu.desc;
93-
// #---
94-
// #--- // Skip software adapters (zero dedicated memory)
95-
// #--- if (desc.DedicatedVideoMemory == 0) {
96-
// #--- continue;
97-
// #--- }
98-
// #---
99-
// #--- // Check for integrated GPU characteristics
100-
// #--- bool isLikelyiGPU = false;
101-
// #---
102-
// #--- // Check by vendor ID (Intel or AMD APU)
103-
// #--- if (desc.VendorId == intelVendorId || desc.VendorId == amdVendorId) {
104-
// #--- // Intel HD/UHD graphics typically have specific naming patterns
105-
// #--- wstring name = desc.Description;
106-
// #--- if (name.find(L"Intel") != wstring::npos &&
107-
// #--- (name.find(L"HD") != wstring::npos || name.find(L"UHD") != wstring::npos)) {
108-
// #--- isLikelyiGPU = true;
109-
// #--- }
110-
// #--- // Check if it has low dedicated memory (typical for iGPU)
111-
// #--- if (desc.DedicatedVideoMemory < iGPUMemoryThreshold) {
112-
// #--- isLikelyiGPU = true;
113-
// #--- }
114-
// #--- }
115-
// #---
116-
// #--- // Track the GPU with least dedicated memory (usually iGPU)
117-
// #--- if (desc.DedicatedVideoMemory < minDedicatedMemory) {
118-
// #--- minDedicatedMemory = desc.DedicatedVideoMemory;
119-
// #--- // Prioritize Intel/AMD candidates, but also consider low memory GPUs
120-
// #--- if (isLikelyiGPU || desc.DedicatedVideoMemory < iGPUMemoryThreshold) {
121-
// #--- candidateGPU = &gpu;
122-
// #--- }
123-
// #--- }
124-
// #--- }
125-
// #---
126-
// #--- // If we found a candidate with Intel/AMD or low memory, return it
127-
// #--- if (candidateGPU != nullptr) {
128-
// #--- return candidateGPU->desc.AdapterLuid;
129-
// #--- }
130-
// #---
131-
// #--- // Fallback: If no clear iGPU found by vendor, return the GPU with least memory
132-
// #--- // (assuming discrete GPUs typically have more memory)
133-
// #--- if (minDedicatedMemory != UINT64_MAX && minDedicatedMemory < iGPUMemoryThreshold) {
134-
// #--- for (const auto& gpu : gpus) {
135-
// #--- if (gpu.desc.DedicatedVideoMemory == minDedicatedMemory) {
136-
// #--- return gpu.desc.AdapterLuid;
137-
// #--- }
138-
// #--- }
139-
// #--- }
140-
// #---
141-
// #--- return std::nullopt;
142-
// #--- }
143-
144-
// #--- // Get iGPU name if available
145-
// #--- inline wstring getiGPUName() {
146-
// #--- auto luidOpt = findiGPU();
147-
// #--- if (!luidOpt.has_value()) {
148-
// #--- return L"";
149-
// #--- }
150-
// #---
151-
// #--- auto gpus = getAvailableGPUs();
152-
// #--- for (const auto& gpu : gpus) {
153-
// #--- if (gpu.desc.AdapterLuid.LowPart == luidOpt.value().LowPart &&
154-
// #--- gpu.desc.AdapterLuid.HighPart == luidOpt.value().HighPart) {
155-
// #--- return gpu.name;
156-
// #--- }
157-
// #--- }
158-
// #---
159-
// #--- return L"";
160-
// #--- }
161-
16268
// Resolve an adapter LUID from a PCI bus number by enumerating display devices (SetupAPI).
16369
// Returns nullopt if no match is found or if the system doesn't expose the LUID property.
16470
inline std::optional<LUID> ResolveAdapterLuidFromPciBus(uint32_t targetBusIndex) {
@@ -227,12 +133,6 @@ class AdapterOption {
227133
LUID adapterLuid{}; // Adapter's unique identifier (LUID)
228134
wstring target_name{}; // Target adapter name
229135

230-
// #--- // --- iGPU SUPPORT ---
231-
// #--- bool hasiGPU{}; // Indicates if an iGPU was detected
232-
// #--- LUID iGPULuid{}; // Integrated GPU's unique identifier (LUID)
233-
// #--- wstring iGPU_name{}; // Integrated GPU name
234-
// #--- // --- END iGPU SUPPORT ---
235-
236136
// Select the best GPU based on dedicated video memory
237137
wstring selectBestGPU() {
238138
auto gpus = getAvailableGPUs();
@@ -287,40 +187,6 @@ class AdapterOption {
287187
}
288188
}
289189

290-
// #--- // --- iGPU DETECTION METHODS ---
291-
// #--- // Detect and select the integrated GPU (iGPU)
292-
// #--- // Returns true if iGPU is found and set, false otherwise
293-
// #--- bool selectiGPU() {
294-
// #--- auto luidOpt = findiGPU();
295-
// #--- if (luidOpt.has_value()) {
296-
// #--- iGPULuid = luidOpt.value();
297-
// #--- iGPU_name = getiGPUName();
298-
// #--- hasiGPU = true;
299-
// #--- return true;
300-
// #--- }
301-
// #--- hasiGPU = false;
302-
// #--- return false;
303-
// #--- }
304-
// #---
305-
// #--- // Get the iGPU LUID if available
306-
// #--- std::optional<LUID> getiGPULuid() const {
307-
// #--- if (hasiGPU) {
308-
// #--- return iGPULuid;
309-
// #--- }
310-
// #--- return std::nullopt;
311-
// #--- }
312-
// #---
313-
// #--- // Check if iGPU is available
314-
// #--- bool hasIntegratedGPU() const {
315-
// #--- return hasiGPU;
316-
// #--- }
317-
// #---
318-
// #--- // Get iGPU name
319-
// #--- wstring getiGPUName() const {
320-
// #--- return iGPU_name;
321-
// #--- }
322-
// #--- // --- END iGPU DETECTION METHODS ---
323-
324190
private:
325191
// Find and set the adapter by name, optionally using "name,bus" where bus is the PCI bus number.
326192
bool findAndSetAdapter(const wstring& adapterSpec) {

0 commit comments

Comments
 (0)