Buenas gente. Menudo lío tenéis montado, de nuevo, con las APIs de programación
.
Para empezar:
Riwer escribió:Pero siendo una APU mas o menos normal, jaguar, la de PS4, no soporta a nivel de hardware 11.2 ni jarta de vino.
Y por software tampoco puesto que 11.2 es exclusivo de Xbox one y Windows 8.1 (esque ni siquiera en windows 8).
La APU es el todo por decirlo de una forma, CPU-GPU-Controlador de Memoria + insertar aquí todos los chips auxiliares. Los núcleos de la CPU de dicha APU son de tipo Jaguar, por lo q no tiene nada q ver q sea núcleo Jaguar (CPU) con la versión de la API gráfica o con la GPU que monte dicha APU. Perfectamente podrías montar núcleos Jaguar con un derivado de una 7990... aunq en la práctica esto sea imposible debido al calor, espacio, potencia...
Por otro lado XboxOne tb está basada en núcleos Jaguar (mismo núcleo no quiere decir q todo sea igual), la estructura es la misma. La personalización viene de la ESRAM, los DME, el controlador de memoria que habrán tenido q montar, el SHAPE, buses...
Riwer escribió:Esque lo que dices es el PSSL (Play Station Shader language) que son librerias de Sony para Ps4 sobre OpenGL para hacer dichas funciones por software.
Nop, PSSL es el lenguaje de programación de la GPU por decirlo de alguna forma. No so librerías sobre OpenGL para hacer funciones por software. Cuando tu programas shaders (una GPU) necesitas un lenguaje de programación que te permita escribir vertex shaders (programas que se ejecutan por cada vértice que se envia), fragment shaders (sobre cada pixel/fragmento), geometry shaders (emitir primitivas) y tesselation shaders (para controlar la tesselación de un patch y que hacer con los vértices generados).
Básicamente en GPUs de escritorio existen 3: GLSL (usado en OpenGL), HLSL (usado en DirectX) y Cg (creado por Nvidia). GLSL solo se puede usar en OpenGL al igual que HLSL solo se puede usar con DirectX pero...y aquí viene lo mas gracioso Cg se puede usar tanto bajo OpenGL como DirectX. Lo mejor de todo es q los 3 son prácticamente iguales entre si, y de hecho hay herramientas q permiten pasar de un lenguaje a otro muy fácilmente pq en realidad lo q hacen...está basado en lo q puede hacer la GPU a nivel hardware/driver.
Dicho lo cual no le deis mas vueltas: las API son una serie de herramientas para programar y en este caso particular están intimamente ligadas al hardware. Lo q puedes o no puedes hacer con una gráfica no viene determinado por la API sino por su arquitectura y en este caso ambas comparten la misma GCN de AMD. Por lo q lo q pueda hacer una lo podrá hacer la otra y viceversa. No hay diferencia generacional como había en el caso Xbox360/Ps3. Ambas son iguales, la única diferencia radica en la memoria y en el número de unidades (CUs) de cada una y todo lo q ello conlleva.
Los tiles resources es una característica soportada a nivel hardware por las GPUs de la serie 7000 y como me he cansado de decir, disponible desde hace tiempo en OpenGL mediante extensiones. Que una GPU tenga ESRAM no significa nada. A nivel del hardware/driver y SO será desde dnd se le saque partido a o no a dicha ESRAM. Pero para el programador será transparente, es decir existirá una función q pueda usar dicha caracteristica a nivel HARDWARE pq se necesitan, en este caso determinado, una serie de características hardware (direccionamientos, espacio de memoria...) q AMBAS POSEEN.
Cuando se emulan cosas por software el trabajo generalmente se lo come la CPU no la GPU pq si ésta ultima no tiene dicha característica por hardware poco puede hacer debido a q son mucho menos flexibles q una CPU (aunq esto se está difuminando cada vez mas). Si por ejemplo una GPU no tiene unidades de teselación no podrá hacer dicha característica y será la CPU quien se encargue de realizar el trabajo por lo q el rendimiento cae hasta el mismo infierno.
Me autocito en un mensaje q escribí hace tiempo sobre este mismo tema a ver si queda claro:
Imaginarios q quereis escribir una carta (nuestro juego). Para ello necesitaréis un papel dnd escribirla (consola/PC) y un bolígrafo para escribir dicha historia (API gráfica DirectX/OpenGL/La API q sea). A parte vosotros conoceis un numero de palabras y frases para escribir dicha carta (características de la GPU, capacidades, lo q la GPU puede hacer), y por último tb sabéis como escribir/dibujar/pintar dichas palabras/letras (driver).
Si vosotros no sabeis como escribir una palabra por mucho bolígrafo q useis no podréis escribirla. Por contra si vosotros conoceis una palabra y tb sabeis como se traza dará igual si usais un bolígrafo BIC o un Pilot, sabréis escribir la palabra independientemente de la herramienta que useis.
DirectX no está integrado en el hardware y OpenGL no tiene q emular nada. Ambas son herramientas que se usan para usar funciones q vienen integradas en el hardware/driver. Para poner un ejemplo fácil y sencillo que creo q ya he puesto alguna vez por aquí. Cuando se quiere pintar un triángulo en pantalla, a la gráfica se le tienen q enviar los atributos de los 3 vértices q definen el triángulo (posicion, normal, coordenadas de textura...). Para ello las GPUs se sirven de buffers (posiciones de memoria dnd almacenar los atributos), en este caso Vertex Buffers. Dicha característica es nativa del hardware, hay instrucciones para crear/almacenar/transferir dichos atributos. Pues bien, en OpenGL hay funciones q te permiten usar dichos Vertex Buffers con unos nombres determinados y una estructura específica propia de la API, y en DirectX existen las mismas funciones con otro paradigma/nombre. La característica está soportada por el hardware y el driver, y la API lo único q hace es poner una función por encima mas clara para facilitar la tarea, mismo perro distinto collar.
Para terminar la API de Sony es propietaria y específica para la plataforma. Por lo q no es ni DirectX ni OpenGL está hecha por ellos en colaboración con AMD, para sacar el máximo rendimiento al hardware y trabajando codo con codo con el driver y el Sistema Operativo. Las características de esta API son similares/iguales a su homónimo en DirectX/OpenGL mas toooodo lo necesario para explotar las peculiaridades del hardware y los conocimientos previos obtenidos con Ps3 (por ahí hablaron de q los SPURS estaban integrados a nivel API/driver, conocimiento obtenido de tener q lidiar con el CellBE). A parte tendrán mas cositas específicas como mecanismos de sincronización, llamadas a bajo nivel, interrupciones, poder puentear el driver para escribir aún a mas bajo nivel...lo normal jeje.
Un saludo.