Commit 1bc7bafe authored by Erik Faye-Lund 's avatar Erik Faye-Lund

new mesa3d.org website

Here's my proposal for a new website for mesa3d.org, minus most of the
content. This consists of a front-page and a news-archive, and not much
more. The rest of the content will be linked to docs.mesa3d.org, which
will contain the technical documentation.

This separation between techincal documentation and a "marketing"
website, allows us to use the best tools for each purpose:
- Sphix is great at creating techical documentation, but lacks features
  like pagination for news archives, and is not very flexible in how
  much can be specialized.
- Hugo is great for building websites, but can't easily generate other
  documentation formats, and it's tree-structure isn't as nice for
  in-tree documentation.

There's only the front-page (and the 404-page) for now. In particular,
here's what's missing as of this commit:
1. The news will be converted from the main repo by some scripts in a
   later commmit.
2. Similarly, link-compatibility redirects will be converted from the
   main repo in a later commit as well.
3. The release archive is missing. We never advertised this under
   mesa3d.org, but rather mesa.freedesktop.org. The fact that these
   sites point to the same one is an implementation-detail.
4. Any custom pages are left out for now. We can iterate on the
   separation between this and the docs site after we've landed the
   initial version, I think.
parents
/resources/
/public
baseURL: http://www.mesa3d.org
title: The Mesa 3D Graphics Library
disableKinds:
- taxonomy
- taxonomyTerm
params:
DocsURL: https://docs.mesa3d.org
GitLabURL: https://gitlab.freedesktop.org/mesa/mesa3d.org
LatestVersion: 20.0.1
menu:
main:
- name: Getting Started
url: https://docs.mesa3d.org/download.html
weight: 20
- name: Documentation
url: https://docs.mesa3d.org/
weight: 30
---
Menu: main
Title: Home
Weight: -10
---
---
Menu: main
Title: News
Weight: 10
---
- name: OpenGL
logo: OpenGL_RGB_June16.svg
body: >-
OpenGL is a cross-platform, industry standard graphics
programming API for 3D graphics.
url: https://www.opengl.org/
- name: OpenGL ES
logo: OpenGL ES_RGB_Nov19.svg
body: >-
OpenGL ES is the mobile subset of OpenGL. It's supported on all
major mobile platforms, and is also the base for WebGL.
url: https://www.khronos.org/opengles/
- name: Vulkan
logo: Vulkan_RGB_Dec16.svg
body: >-
Vulkan is the next-generation graphics programming API from The
Khronos® Group.
url: https://www.khronos.org/vulkan/
- name: EGL
logo: EGL_RGB_June16.svg
body: >-
EGL is an interface between Khronos rendering APIs such as OpenGL
or OpenVG and the underlying native platform window system.
url: https://www.khronos.org/egl/
- name: OpenMAX
logo: OpenMAX_RGB_June16.svg
body: >-
OpenMAX is a non-proprietary and royalty-free cross-platform set
of C-language programming interfaces, provides abstractions for
processing of audio, video, and still images.
url: https://www.khronos.org/openmax/
- name: OpenCL
body: >-
OpenCL is a framework for writing programs that execute across
heterogeneous platforms consisting of CPUs, GPUs, DSPs, FPGAs
and other processors or hardware accelerators.
url: https://www.khronos.org/opencl/
- name: VDPAU
body: >-
VDPAU is the Video Decode and Presentation API for UNIX. It
provides an interface to video decode acceleration and
presentation hardware present in modern GPUs.
url: https://www.freedesktop.org/wiki/Software/VDPAU/
- name: VA API
body: >-
VA API is an open-source library and API specification, which
provides access to graphics hardware acceleration capabilities
for video processing.
url: https://freedesktop.org/wiki/Software/vaapi/
- name: XvMC
body: >-
XvMC is an extension of the X video extension (Xv) for the X Window
System. The XvMC API allows video programs to offload portions of
the video decoding process to the GPU hardware.
url: https://en.wikipedia.org/wiki/X-Video_Motion_Compensation
- name: AMD R200
description: >-
The R200 driver supports AMD's Radeon R200 GPU series. Due to the
age of the hardware, it's no longer very actively developed, and
it's entirely community maintained.
- name: AMD R300
description: >-
The R300 driver supports AMD's Radeon R300 GPU series. Due to the
age of the hardware, it's no longer very actively developed, and
it's entirely community maintained.
- name: AMD R600
description: >-
The R600 driver supports AMD's Radeon HD 2000 GPU series. It's
officially supported by AMD, and is one of two Linux drivers for
the hardware.
- name: AMD RadeonSI
external_url: https://www.amd.com/en/support/kb/release-notes/amdgpu-installation
description: >-
The RadeonSI driver supports AMD's Southern Island GPUs and later.
It's officially supported by AMD, and is one of two Linux drivers
for the hardware.
- name: AMD RADV
external_url: https://www.amd.com/en/support/kb/release-notes/amdgpu-installation
description: >-
The AMD RADV driver supports AMD's Southern Island GPUs and
later. It's not officially supported by AMD, but it's based on
public information provided by AMD.
- name: Broadcom V3D
description: >-
The V3D driver supports Broadcom's VC5 and later GPUs, which is
found in the Raspberry Pi 4. It's officially supported by
Broadcom, and is the official Linux driver for the hardware.
- name: Broadcom VC4
external_url: https://github.com/anholt/mesa/wiki/VC4
description: >-
The VC4 driver supports Broadcom's VC4 GPU, which is found among
other other things in most of the Raspberry Pis. It's officially
supported by Broadcom, and is one of two Linux drivers for the
hardware.
- name: Etnaviv
external_url: https://github.com/etnaviv
description: >-
The Etnaviv driver supports the Vivante GCxxx series of embedded
GPUs. It's a reverse-engineered, community-developed driver, and
is not endorsed by Vivante.
- name: Freedreno
external_url: https://github.com/freedreno
description: >-
The Freedreno driver supports the Qualcomm Adreno GPUs, from the
A2xx series to the A6xx series. It's a reverse-engineered,
community-developed driver, and is not endorsed by Qualcomm.
- name: Intel ANV
external_url: https://01.org/linuxgraphics/community/mesa
description: >-
The ANV vulkan driver supports Intel's Gen 7 hardware and later.
It's officially supported by Intel and is their official Vulkan
driver for Linux.
- name: i915
description: >-
The i915 driver supports Intel's GMA 916G as well as the i830,
i845 and i865 integrated GPU series. Due to the age of the
hardware, it's no longer very actively developed, and it's
entirely community maintained.
- name: Intel i965
external_url: https://01.org/linuxgraphics/community/mesa
description: >-
The i965 driver supports Intel's Gen 4 hardware and later. It's
officially supported by Intel and is their default OpenGL driver
for Linux.
- name: Intel Iris
external_url: https://01.org/linuxgraphics/community/mesa
description: >-
The Iris driver supports Intel's Gen 8 hardware and later. It's
officially supported by Intel and is their next-generation Linux
OpenGL driver.
- name: Lima
external_url: https://gitlab.freedesktop.org/lima
description: >-
Lima is a free and open source driver for the ARM Mali-4xx family
of GPUs. It's reverse-engineered, community-developed driver, and
is not endorsed by ARM.
- name: LLVMPipe
docs_article: llvmpipe.html
description: >-
The LLVMPipe driver is a high-performance software renderer. It's
useful for systems without a dedicated GPU, or in the process of
bringing up a platform. It uses LLVM as a code-generator to
dynamically compile efficient machine code for the CPU.
- name: Nouveau
external_url: https://nouveau.freedesktop.org/wiki/
description: >-
The Nouveau drivers supports a large set of NVIDIA chips, ranging
from NV04 found in the Riva TNT card to NVF0 found in the GeForce
GTX 780, as well as most of the Tegra GPUs. It's a
reverse-engineered, community-developed driver, and is not
endorsed by NVIDIA.
- name: Panfrost
external_url: https://panfrost.freedesktop.org/
description: >-
Panfrost is a free and open source driver for the ARM Mali Midgard
and Bifrost GPUs. It's reverse-engineered, community-developed
driver, and is not endorsed by ARM.
- name: VirGL
external_url: https://virgil3d.github.io/
description: >-
The VirGL driver is a virtual GPU driver for sharing a GPU with a
host for virtual machines. It uses OpenGL or OpenGL ES on the host
to accelerate rendering.
- name: Zink
description: >-
The Zink driver is a Gallium driver that emits Vulkan API calls instead of
targeting a specific GPU architecture. This can be used to get full desktop
OpenGL support on devices that only support Vulkan.
\ No newline at end of file
{{ define "main"}}
<div class="my-3 text-center">
<h1 class="display-2">404</h1>
<p class="lead">Page not found :(</p>
<p>The requested page could not be found.</p>
</div>
{{ end }}
\ No newline at end of file
<!DOCTYPE html>
<html class="h-100" lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="icon" href="{{ "/favicon.ico" | relURL }}">
<link rel="stylesheet" href="{{ "/assets/screen.css" | relURL }}">
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
</head>
<body class="d-flex flex-column h-100">
{{ partial "navbar.html" . }}
{{ block "main" . }}
{{ end }}
{{ partial "footer.html" . }}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
\ No newline at end of file
{{- define "main" -}}
<main class="container pt-3">
{{ $pages := .Paginator.Pages }}
{{ range $pages.ByPublishDate.Reverse }}
<h2>{{ .Title | markdownify }}</h2>
{{ index (split .Content "</p>") 0 | safeHTML }}</p>
<a href="{{ .Permalink }}">Read full post</a>
<hr>
{{ end }}
{{ $pag := .Paginator }}
{{ if gt $pag.TotalPages 1 }}
{{ $trail_before := 2 }}
{{ $trail_after := 2 }}
{{ $min_center := add $trail_before 1 }}
{{ $max_center := sub $pag.TotalPages $trail_after }}
{{ $path_center := $pag.PageNumber }}
{{ $path_center := cond (ge $path_center $min_center) $path_center $min_center }}
{{ $path_center := cond (le $path_center $max_center) $path_center $max_center }}
{{ $lower_limit := sub $path_center $trail_before }}
{{ $upper_limit := add $path_center $trail_after }}
{{ $trail := seq $lower_limit $upper_limit }}
<nav aria-label="Page navigation">
<ul class="pagination">
{{ with $pag.HasPrev }}
<li class="page-item">
<a class="page-link" href="{{ $pag.First.URL }}">&laquo;</a>
</li>
<li class="page-item">
<a class="page-link" href="{{ $pag.Prev.URL }}">&lsaquo;</a>
</li>
{{ else }}
<li class="page-item disabled">
<span class="page-link">&laquo;</span>
</li>
<li class="page-item disabled">
<span class="page-link">&lsaquo;</span>
</li>
{{ end }}
{{ range where $pag.Pagers "PageNumber" "in" (seq $lower_limit $upper_limit) }}
<li class="page-item{{ if eq . $pag }} active{{ end }}">
<a class="page-link" href="{{ .URL }}">{{ .PageNumber }}</a>
</li>
{{ end }}
{{ if $pag.HasNext }}
<li class="page-item">
<a class="page-link" href="{{ $pag.Next.URL }}">&rsaquo;</a>
</li>
<li class="page-item">
<a class="page-link" href="{{ $pag.Last.URL }}">&raquo;</a>
</li>
{{ else }}
<li class="page-item disabled">
<span class="page-link">&rsaquo;</span>
</li>
<li class="page-item disabled">
<span class="page-link">&raquo;</span>
</li>
{{ end }}
</ul>
</nav>
{{ end }}
</main>
{{- end -}}
{{- define "main" -}}
<main class="container pt-3">
<h1>{{ .Title | markdownify }}</h1>
{{ .Content }}
</main>
{{- end -}}
{{ define "main" }}
{{ partial "jumbotron.html" . }}
<main class="container">
<style>
[data-toggle="collapse"] > a > svg {
display: inline-block;
float: right;
width: 1em;
height: 1em;
transition: all 0.2s;
}
[data-toggle="collapse"].collapsed > a > svg {
transform: rotate(180deg);
}
@media (min-width: 1200px) {
.collapse.open-on-xl {
display: block !important;
height: auto !important;
visibility: visible;
}
}
</style>
<h2 class="collapsed d-xl-none" data-toggle="collapse" data-target="#apis-collapse" aria-expanded="false" aria-controls="apis-collapse">
<a role="button">
Featured APIs
{{ partial "chevron-up.svg" . }}
</a>
</h2>
<p class="h2 d-none d-xl-block">Featured APIs</p>
{{ partial "apis.html" . }}
<hr>
<h2 class="collapsed" data-toggle="collapse" data-target="#drivers-collapse" aria-expanded="false" aria-controls="drivers-collapse">
<a role="button">
Supported Drivers
{{ partial "chevron-up.svg" . }}
</a>
</h2>
{{ partial "drivers.html" . }}
<hr>
<h2>Latest news</h2>
{{ $newsPages := where .Site.RegularPages "Type" "news" }}
{{ range first 3 $newsPages.ByPublishDate.Reverse }}
<h3>{{ .Title }}</h3>
{{ index (split .Content "</p>") 0 | safeHTML }}</p>
<a href="{{ .Permalink }}">Read full post</a>
<hr>
{{ end }}
<a href="{{ "/news/" | relURL }}">Read all news</a>
</main>
{{ end }}
<div class="collapse open-on-xl" id="apis-collapse">
<div class="row pt-3">
{{ range $.Site.Data.apis }}
<div class="col-12 col-md-6 col-xl-4 pb-3">
{{ if .logo }}
<img class="img-fluid" style="height: 3.5rem" src="{{ printf "/assets/apis/%s" .logo | relURL }}" alt="{{ .name }}">
{{ else }}
<h3>{{ .name }}</h3>
{{ end }}
<p>{{ .body }}</p>
<p><a class="btn btn-secondary" href="{{ .url }}" role="button">Read more »</a></p>
</div>
{{ end }}
<div class="col-12 alert alert-warning">
<h5>Note</h5>
<p>
Even though Mesa provides implementations of the APIs listed above,
not all combinations of drivers and APIs are formally conformant to
their respective specifications.
</p>
</div>
</div>
</div>
<svg xmlns="http://www.w3.org/2000/svg" width="10" height="16" viewBox="0 0 10 16"><path fill-rule="evenodd" d="M10 10l-1.5 1.5L5 7.75 1.5 11.5 0 10l5-5 5 5z"/></svg>
\ No newline at end of file
<dl class="row pt-3 collapse" id="drivers-collapse">
{{ range $.Site.Data.drivers }}
<dt class="col-md-3 col-lg-2">{{ .name }}</dt>
<dd class="col-md-9 col-lg-10">
<p>{{ .description }}
{{ if .external_url }}
<a href="{{ .external_url }}">More information&hellip;</a>
{{ else if .docs_article }}
<a href="{{ .Site.DocsURL }}/{{ .docs_article }}">More information&hellip;</a>
{{ end }}
</p>
</dd>
{{ end }}
</dl>
<footer class="footer mt-3 py-3 bg-light">
<div class="container">
<div class="row">
<div class="col">
<strong>Documentation</strong>
<ul class="list-unstyled">
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/license.html">License</a></li>
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/faq.html">FAQ</a></li>
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/download.html">Getting Started</a></li>
</ul>
</div>
<div class="col">
<strong>Community</strong>
<ul class="list-unstyled">
<li><a class="text-muted" href="https://gitlab.freedesktop.org/mesa">GitLab</a></li>
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/lists.html">Mailing Lists</a></li>
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/bugs.html">Report a Bug</a></li>
</ul>
</div>
<div class="col">
<strong>More</strong>
<ul class="list-unstyled">
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/webmaster.html">Webmaster</a></li>
<li><a class="text-muted" href="{{ .Site.Params.DocsURL }}/thanks.html">Acknowledgements</a></li>
<li><a class="text-muted" href="https://dri.freedesktop.org/wiki/">Mesa / DRI Wiki</a></li>
</ul>
</div>
<div class="col">
<ul class="list-unstyled">
<li class="text-muted pb-2">Hosted by <a class="text-muted" href="https://www.freedesktop.org/">Freedesktop.org</a></li>
<li><a class="text-muted" href="{{ .Site.Params.GitLabURL }}/blob/master/{{ .Page.Path }}">Edit this page</a></li>
</ul>
</div>
</div>
</div>
</footer>
<svg id="gears" viewBox="0 0 12.8 12.9">
<path id="cog-red" fill="#cc1a00" d="M4.008 4.213l-.338.04L3.498 5l-.275.078-.537-.547-.311.143.068.763-.238.16-.68-.355-.252.233.301.705-.178.224-.755-.127-.166.297.504.578-.1.27-.758.113-.068.334.658.395-.012.287-.685.34.039.34.748.171.078.276-.547.537.143.31.763-.068.158.238-.353.68.23.25.707-.299.225.176-.129.758.299.166.578-.504.27.1.111.757.336.067.394-.657.286.01.341.688.34-.041.17-.746.278-.079.537.547.308-.142-.066-.764.238-.16.68.355.25-.232-.301-.705.178-.225.756.127.168-.297-.504-.578.1-.27.757-.11.066-.337-.658-.394L8 8.55l.688-.342-.042-.34-.748-.172-.076-.275.547-.537-.142-.31-.764.068-.16-.239.355-.68-.232-.25-.705.301-.225-.177.127-.756-.299-.168-.578.504-.267-.1-.114-.758-.334-.066-.394.658L4.35 4.9l-.342-.687zM4.35 7.55l.308.049.28.14.22.223.143.277.049.31-.05.31-.142.279-.22.22-.28.143-.308.049-.309-.049-.28-.143-.22-.22-.143-.28-.048-.308.048-.31.143-.278.22-.223.28-.14.309-.05z">
</path>
<path id="cog-green" fill="#0c3" d="M10.818 6.229l-.369.671-.258.02-.466-.606-.342.143.097.758-.197.168-.734-.215-.194.314.526.559-.06.25-.721.26.029.367.752.143.1.238-.432.633.24.279.691-.326.221.135.024.765.357.086.367-.672.26-.02.467.606.342-.14-.098-.76.197-.168.735.215.191-.315-.523-.556.06-.252.72-.258-.029-.37-.751-.14-.1-.24.432-.633-.24-.28-.692.327-.22-.135-.024-.766-.358-.085zm-.447 1.828l.307.048.217.217.048.307-.14.275-.276.139-.304-.047-.22-.219-.046-.304.139-.276.275-.14z">
</path>
<path id="cog-blue" fill="#33f" d="M4.168.002l-.367.041-.115.756-.237.107-.646-.408-.272.25.352.68-.13.224-.763.051-.072.361.684.344.029.256-.59.49.154.336.754-.125.176.192-.19.742.323.181.537-.544.254.052.283.711.367-.043.115-.756.237-.107.646.408.272-.248-.352-.68.13-.226.763-.049.072-.361-.684-.344-.029-.258.59-.488-.154-.336-.754.123-.176-.191.19-.74L5.241.22l-.537.543L4.45.712 4.167.001zm.24 1.059l.729.337.388.704-.097.796-.547.588-.79.155-.728-.34-.388-.703.097-.797.547-.588.79-.152z">
</path>
<style>
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
#cog-red,
#cog-green,
#cog-blue {
animation-name: spin;
animation-iteration-count: infinite;
animation-timing-function: linear;
animation-play-state: paused;
}
#cog-red {
animation-duration: 5.142857s;
transform-origin: 4.35px 8.55px;
animation-direction: reverse;
}
#cog-green,
#cog-blue {
animation-duration: 2.5714285s;
}
#cog-green {
transform-origin: 10.45px 8.55px;
}
#cog-blue {
transform-origin: 4.25px 2.35px;
}
</style>
</svg>
<header class="jumbotron jumbotron-fluid overflow-hidden">
<div class="container">
<div class="position-relative">
<div id="jumbotron-content">
<div id="text">
<h1>The Mesa 3D Graphics Library</h1>
<p>
Open source implementations of <a href="https://www.opengl.org/">OpenGL</a>,
<a href="https://www.khronos.org/opengles/">OpenGL ES</a>,
<a href="https://www.khronos.org/vulkan/">Vulkan</a>,
<a href="https://www.khronos.org/opencl/">OpenCL</a>, and more!
</p>
</div>
<a class="btn btn-primary btn-lg" href="{{ .Site.Params.DocsURL }}/intro.html" role="button">Read more »</a>
</div>
<div id="gears-container">
{{ partial "gears.svg" . }}
</div>
</div>
</div>
<style>
.jumbotron {
flex-shrink: 0;
}
#jumbotron-content {
position: relative;
z-index: 1;
}
#jumbotron-text {
text-shadow: 0 0 5px #f8f9fa;
}
#gears-container {
position: absolute;
top: 0;
right: 0;
width: 100%;
max-height: 100%;
z-index: 0;
height: 100%;
}
svg#gears {
opacity: 0.25;
float: right;
height: 100%;
transform: scale(1.75);
}
@media (min-width: 576px) {
svg#gears {
transform: scale(2);
}
}
@media (min-width: 768px) {
svg#gears {
transform: translateX(-75%) scale(2.5);
}
}
@media (hover: hover) {
.jumbotron:hover #cog-red,
.jumbotron:hover #cog-green,
.jumbotron:hover #cog-blue {
animation-play-state: running;
}
}
</style>
</header>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<div class="d-flex flex-row">
<a class="navbar-brand" href="{{ "/" | relURL }}">
<img src="{{ "/assets/logo.svg" | relURL }}" width="30" height="30" alt="">
Mesa 3D
</a>
<a class="navbar-text" href="{{ .Site.Params.DocsURL }}/relnotes/{{ .Site.Params.LatestVersion }}.html">
{{ .Site.Params.LatestVersion }}
</a>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>