Code Monkey home page Code Monkey logo

njraa-wdf's Introduction

How crazy is that? My most advanced projects are:

I've started my career as a game developer, but eventually decided that tools and environments matter a lot.

Note that I'm mostly user-oriented (aka UX/UI). Join me to make the software that makes people around the world happy and their days less stressful!

njraa-wdf's People

Contributors

peyty avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

samsuper12

njraa-wdf's Issues

Find GPU specs and DRM for Intel 500/630/750

Elaborate:

  • Correct PCI IDs and generation aliases/common names/mesa|drm names for the provided GPUs
  • Find correct firmware in linux-firmware

Devices:

  • Intel HD Graphics 500 (Gen. 9 (Skylake))
  • Intel UHD Graphics 630 (Gen. 9.5 (Kaby Lake))
  • Intel UHD Graphics 750 (Gen. 12 (Rocket Lake-S))
  • Iris Xe Graphics G7 (Gen. 12 (Tiger Lake-U))

PDF's must contain:

  • List of GPU registers (at least, ones from Mesa code)
  • List of packets for GPU engine
  • Optionally: init routine, memory management, whatever

Code must contain:

  • Linux DRM part related to the exact GPU generation linux\drivers\gpu\drm
  • Mesa counterpart

Find out how to compile shader bytecode with LLVM and Intel

Reference:

Goals:

  • Generate shader binary to be uploaded into GPU for quick testing. Not SPIR-V/etc. It must be CPU/model specific.

  • Check if its possible to decompile shader / output ASM with -S flag.

  • Find shader decompilers, so we can decompile shaders binaries generated by the NjRAA for verification

  • Oland (GCN 1)

  • Intel 630/750 of @Samsuper12's

Find out which firmware files are important for a GCN (SI+) GPU

Note that we do not need a KMS (kernel mode setting) part (which supposedly runs at bootloader stage to show a boot logo and that's it), only actual thing that enables GCN "engines" and whole functionality.

Notice: GCN aliased as "SI" (Southern Islands, Sea Islands) and GFX6 (gfx601), our point of interest is Oland CPU only for now.

Find out what is the difference between uppercase & lowercase firmware files, and radeon vs amdgpu ones:

DRM code is here linux\drivers\gpu\drm

Points of interest:

  • amd\amdgpu\gfx_v6_0.c line MODULE_FIRMWARE("amdgpu/oland_pfp.bin"); (note amdgpu/ part)
  • amd\amdgpu\amdgpu_cgs.c line trcpy(fw_name, "radeon/oland_k_smc.bin"); (note radeon/ part)
  • radeon\si.c line MODULE_FIRMWARE("radeon/OLAND_smc.bin"); and lowercase MODULE_FIRMWARE("radeon/oland_smc.bin"); (note radeon/ part)

Create initial Linux PCI driver

Note: only raw PCI driver required, not DRI/DRM.

It must also create some APIs to be controlled from users pace.

It must use WDF-like framework for PNP, so we don't have to implement power management manually.

Reference:

Learn from basic Intel driver implementation

Must be checked against Intel Ivy Bridge w/ HD Graphics 4000 spec (supposedly Gen 7, pre-DX12 GPU) PCI\VEN_8086\DEV_0162

What experience we can reuse? Command ring/buffer layout, memory allocation, DMA mapping, etc

Find out what implements WDF on Linux

https://www.codeproject.com/Articles/13090/Building-and-deploying-a-basic-WDF-Kernel-Mode-Dri

For those of you who don't know what WDF is: it is the best invention since sliced bread. Until recently, if you needed a device driver, you had to use the Windows Driver Model (WDM). WDM provides a low level framework for creating device drivers. Using this framework, your driver had to accept PNP, Power management, and IO requests, and figure out what to do with them, based on the state of your driver.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.