Ich gebe zu, bei Treiberentwicklung bin ich etwas ungebildet.
Aber wäre es von der Treiberarchitektur her nicht sowieso seh ähnlich wenn man GCN1.0 bis die aktuellste Version hin unterstützt? Lediglich fehlende Features unterstützt man halt mit GCN1-3 nicht und hätte damit ja kaum mehr Arbeit... oder irre ich mich und ist das Pflegen der alten Produkte im Gegensatz zu den neueren Versionen so viel mehr Aufwand?
Ich kenne die Kostenrechnung auch nicht, entsprechend ist es schwer ein Urteil zu fällen, ab wann man flapsig gesagt einem Unternehmen vorwerfen kann, faul bzw. knauserig zu sein.
Du hast recht damit das in vielerlei Hinsicht GCN1-5 sehr ähnlich ausfallen und viele Kernkomponenten gleich sind, allerdings gibt es im Detail dann doch viele Unterschiede zwischen den Generationen, die man bedenken muss und wo es hier und da nicht so einfach ist fehlende Features nicht zu unterstützen, da diese teils zwangsweise vorhanden sein müssen.
Z.B. ist AMDs Compute-Stack ROCm darauf angewiesen, dass die Compute-Queue-Scheduling-Fähigkeiten auf dem Niveau von GCN3 sind, dass müsste man anders und gesondert für GCN1 implementieren (Man hat es für Hawaii/GCN2 getan).
AMD hat unter Linux auch einen neuen Display-Code geschrieben, welcher allerdings erst ab GCN3 unterstützt wird.
Ebenso wird der Kernel-Treiber AMDGPU bei Linux erst ab GCN3 als Standardeinstellung verwendet und GCN1&2 verwenden als Default noch den Radeon-Kerneltreiber.
Bei AMDGPU und auch DAL (neuer Display-Treiber) wurde auch ewig daran geschraubt, dass mit GCN1&2 kompatibler zu gestalten und man kann diese auch verwenden, aber als Default gibt es die nach wie vor nicht, da es einige Randbereiche gibt, wo es zu Problemen kommen kann.
Und wenn man selbst in der aktiven Supportphase so lange gebraucht hat, um einen gewissen Grundsupport aufzubauen, dann kann man sich schon vorstellen, dass AMD keine Lust hat sieben Produktgenerationen zu pflegen, denn Code und Features entwickeln sich immer weiter und immer mehr Randbedingungen kommen hinzu, die nervig sein können.
Also man kann schon einige Unterschiede aufzählen, zwischen GCN1, 2 und 3.
Wie schon erwähnt verfügt GCN1 nur über starre Implementierung von Async Compute bzw. Compute-Queue-Scheduling.
Kein Microcode-Support, keine virtuelles Scheduling der Queues, iirc keine Möglichkeit eine Priorisierung der Queues zu unterstützen.
Die Display-Engine unterstützt kein FreeSync, hat noch Support für analoge Displayausgänge, welche z.B. DAL auf Linux gar nicht unterstützt.
Bei Windows könnte es ebenso sein, dass AMD eine andere Treiberinfrastruktur hat und nicht ewig unterschiedliche Code-Bereiche mittragen und pflegen möchte.
Es gibt auch bei jeder Hardware Bugs und einige notwendige SW-Workarounds, dass erschwert die Verwaltung auch noch, vor allem wenn man dann halt wirklich sieben Generationen und über 30 unterschiedliche Chips oder so betrachten muss.
GCN3 hat einige Änderungen bei der 3D-Engine mitgebracht, Tessellation kann teils anders gehandhabt werden, Delta Color Compression wurde eingeführt, es gibt neue Instruktionen und Funktionsweisen wie für Cross-Lane-Operations, die AMD auch über Shader Intrinsics zugänglich gemacht hat.
Das ist bei GCN1&2 noch hier und da sehr unterschiedlich implementiert.
Wie gesagt, ich finde es etwas schwerer technische Argumente zu finden, warum man auch GCN3 abschneidet, obwohl da noch sehr viele Ähnlichkeiten zu GCN4 bestehen, aber auch dort gab es ein paar Änderungen bei den CUs, der Geometry-Engine, viele IP-Blocks wurden auch bei der Funktionalität aktualisiert.