mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 02:38:04 +02:00
amd: Move ac_hw_stage to its own file
Otherwise ACO has to include ac_shader_util.h which also includes NIR. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Friedrich Vock <friedrich.vock@gmx.de> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/23906>
This commit is contained in:
parent
82aaf1893d
commit
20beebb041
6 changed files with 109 additions and 98 deletions
105
src/amd/common/ac_hw_stage.h
Normal file
105
src/amd/common/ac_hw_stage.h
Normal file
|
|
@ -0,0 +1,105 @@
|
|||
/*
|
||||
* Copyright 2023 Advanced Micro Devices, Inc.
|
||||
* SPDX-License-Identifier: MIT
|
||||
*/
|
||||
|
||||
#ifndef AC_HW_STAGE_H
|
||||
#define AC_HW_STAGE_H
|
||||
|
||||
/**
|
||||
* Shader stages as understood by AMD HW.
|
||||
*
|
||||
* Every HW generation has a dedicated stage for compute and PS,
|
||||
* but it varies greatly over other geometry processing stages.
|
||||
*
|
||||
* Valid graphics shader configurations:
|
||||
* (-> = merged with the next stage)
|
||||
*
|
||||
* -------------------------|-----|-----|----|----|----
|
||||
* API shaders: VS | TCS | TES | GS |copy| FS
|
||||
* Are compiled as: | | | | |
|
||||
* GFX6-8 ------------------|-----|-----|----|----|----
|
||||
* - VS & PS: VS | | | | | PS
|
||||
* - with GS: ES | | | GS | VS | PS
|
||||
* - with tess: LS | HS | VS | | | PS
|
||||
* - with both: LS | HS | ES | GS | VS | PS
|
||||
* GFX9-10.3/legacy --------|-----|-----|----|----|----
|
||||
* - VS & PS: VS | | | | | PS
|
||||
* - with GS: -> | | | GS | VS | PS
|
||||
* - with tess: -> | HS | VS | | | PS
|
||||
* - with both: -> | HS | -> | GS | VS | PS
|
||||
* GFX10+/NGG --------------|-----|-----|----|----|----
|
||||
* - VS & PS: GS | | | | | PS
|
||||
* - with GS: -> | | | GS | | PS
|
||||
* - with tess: -> | HS | GS | | | PS
|
||||
* - with both: -> | HS | -> | GS | | PS
|
||||
* -------------------------|-----|-----|----|----|----
|
||||
*
|
||||
* Valid mesh shading graphics pipeline configurations:
|
||||
*
|
||||
* -------------------------------|---------------|----
|
||||
* API shaders: TS | MS | FS
|
||||
* Are compiled as: | |
|
||||
* GFX10.3+/NGG ------------------|---------------|----
|
||||
* - mesh only: | GS | PS
|
||||
* - task & mesh: CS | GS | PS
|
||||
* -------------------------------|---------------|----
|
||||
*
|
||||
*/
|
||||
enum ac_hw_stage
|
||||
{
|
||||
/* GFX6-8 only, merged into HS on GFX9+:
|
||||
* - vertex shader (when tess is used)
|
||||
*/
|
||||
AC_HW_LOCAL_SHADER,
|
||||
|
||||
/* GFX6-8:
|
||||
* - tess control shader
|
||||
*
|
||||
* GFX9+:
|
||||
* Also known as surface shader.
|
||||
* - merged vertex and tess control shader
|
||||
*/
|
||||
AC_HW_HULL_SHADER,
|
||||
|
||||
/* GFX6-8 only, merged into GS on GFX9+:
|
||||
* - vertex shader before GS (when tess is not used)
|
||||
* - tess eval shader before GS (when tess is used)
|
||||
*/
|
||||
AC_HW_EXPORT_SHADER,
|
||||
|
||||
/* GFX6-8:
|
||||
* - geometry shader
|
||||
* GFX9-10/legacy:
|
||||
* - merged vertex + geometry (when tess is not used)
|
||||
* - merged tess eval + geometry (when tess is used)
|
||||
*/
|
||||
AC_HW_LEGACY_GEOMETRY_SHADER,
|
||||
|
||||
/* GFX6-10/legacy only:
|
||||
* - vertex shader (when tess and GS are not used)
|
||||
* - tess eval shader (when GS is not used),
|
||||
* - "GS copy" shader (always when GS is used)
|
||||
*/
|
||||
AC_HW_VERTEX_SHADER,
|
||||
|
||||
/* GFX10+/NGG:
|
||||
* All pre-rasterization stages (after tess). Also known as primitive shader.
|
||||
* - vertex shader (when tess and GS are not used)
|
||||
* - tess eval shader (when GS is not used)
|
||||
* - merged vertex + geometry shader (when GS is used but tess is not)
|
||||
* - merged tess eval + geometry shader (when both tess and GS are used)
|
||||
* - mesh shader
|
||||
*/
|
||||
AC_HW_NEXT_GEN_GEOMETRY_SHADER,
|
||||
|
||||
/* Fragment shader.
|
||||
* Call it "pixel shader" because that is how HW docs call it.
|
||||
*/
|
||||
AC_HW_PIXEL_SHADER,
|
||||
|
||||
/* Compute and compute-like shaders, such as task shader and ray tracing. */
|
||||
AC_HW_COMPUTE_SHADER,
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
@ -141,102 +141,6 @@ enum ac_descriptor_type
|
|||
AC_DESC_PLANE_2,
|
||||
};
|
||||
|
||||
/**
|
||||
* Shader stages as understood by AMD HW.
|
||||
*
|
||||
* Every HW generation has a dedicated stage for compute and PS,
|
||||
* but it varies greatly over other geometry processing stages.
|
||||
*
|
||||
* Valid graphics shader configurations:
|
||||
* (-> = merged with the next stage)
|
||||
*
|
||||
* -------------------------|-----|-----|----|----|----
|
||||
* API shaders: VS | TCS | TES | GS |copy| FS
|
||||
* Are compiled as: | | | | |
|
||||
* GFX6-8 ------------------|-----|-----|----|----|----
|
||||
* - VS & PS: VS | | | | | PS
|
||||
* - with GS: ES | | | GS | VS | PS
|
||||
* - with tess: LS | HS | VS | | | PS
|
||||
* - with both: LS | HS | ES | GS | VS | PS
|
||||
* GFX9-10.3/legacy --------|-----|-----|----|----|----
|
||||
* - VS & PS: VS | | | | | PS
|
||||
* - with GS: -> | | | GS | VS | PS
|
||||
* - with tess: -> | HS | VS | | | PS
|
||||
* - with both: -> | HS | -> | GS | VS | PS
|
||||
* GFX10+/NGG --------------|-----|-----|----|----|----
|
||||
* - VS & PS: GS | | | | | PS
|
||||
* - with GS: -> | | | GS | | PS
|
||||
* - with tess: -> | HS | GS | | | PS
|
||||
* - with both: -> | HS | -> | GS | | PS
|
||||
* -------------------------|-----|-----|----|----|----
|
||||
*
|
||||
* Valid mesh shading graphics pipeline configurations:
|
||||
*
|
||||
* -------------------------------|---------------|----
|
||||
* API shaders: TS | MS | FS
|
||||
* Are compiled as: | |
|
||||
* GFX10.3+/NGG ------------------|---------------|----
|
||||
* - mesh only: | GS | PS
|
||||
* - task & mesh: CS | GS | PS
|
||||
* -------------------------------|---------------|----
|
||||
*
|
||||
*/
|
||||
enum ac_hw_stage
|
||||
{
|
||||
/* GFX6-8 only, merged into HS on GFX9+:
|
||||
* - vertex shader (when tess is used)
|
||||
*/
|
||||
AC_HW_LOCAL_SHADER,
|
||||
|
||||
/* GFX6-8:
|
||||
* - tess control shader
|
||||
*
|
||||
* GFX9+:
|
||||
* Also known as surface shader.
|
||||
* - merged vertex and tess control shader
|
||||
*/
|
||||
AC_HW_HULL_SHADER,
|
||||
|
||||
/* GFX6-8 only, merged into GS on GFX9+:
|
||||
* - vertex shader before GS (when tess is not used)
|
||||
* - tess eval shader before GS (when tess is used)
|
||||
*/
|
||||
AC_HW_EXPORT_SHADER,
|
||||
|
||||
/* GFX6-8:
|
||||
* - geometry shader
|
||||
* GFX9-10/legacy:
|
||||
* - merged vertex + geometry (when tess is not used)
|
||||
* - merged tess eval + geometry (when tess is used)
|
||||
*/
|
||||
AC_HW_LEGACY_GEOMETRY_SHADER,
|
||||
|
||||
/* GFX6-10/legacy only:
|
||||
* - vertex shader (when tess and GS are not used)
|
||||
* - tess eval shader (when GS is not used),
|
||||
* - "GS copy" shader (always when GS is used)
|
||||
*/
|
||||
AC_HW_VERTEX_SHADER,
|
||||
|
||||
/* GFX10+/NGG:
|
||||
* All pre-rasterization stages (after tess). Also known as primitive shader.
|
||||
* - vertex shader (when tess and GS are not used)
|
||||
* - tess eval shader (when GS is not used)
|
||||
* - merged vertex + geometry shader (when GS is used but tess is not)
|
||||
* - merged tess eval + geometry shader (when both tess and GS are used)
|
||||
* - mesh shader
|
||||
*/
|
||||
AC_HW_NEXT_GEN_GEOMETRY_SHADER,
|
||||
|
||||
/* Fragment shader.
|
||||
* Call it "pixel shader" because that is how HW docs call it.
|
||||
*/
|
||||
AC_HW_PIXEL_SHADER,
|
||||
|
||||
/* Compute and compute-like shaders, such as task shader and ray tracing. */
|
||||
AC_HW_COMPUTE_SHADER,
|
||||
};
|
||||
|
||||
unsigned ac_get_spi_shader_z_format(bool writes_z, bool writes_stencil, bool writes_samplemask,
|
||||
bool writes_mrt0_alpha);
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@
|
|||
#include "util/compiler.h"
|
||||
|
||||
#include "ac_binary.h"
|
||||
#include "ac_shader_util.h"
|
||||
#include "ac_hw_stage.h"
|
||||
#include "amd_family.h"
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
|
|
|
|||
|
|
@ -27,8 +27,8 @@
|
|||
#ifndef ACO_SHADER_INFO_H
|
||||
#define ACO_SHADER_INFO_H
|
||||
|
||||
#include "ac_hw_stage.h"
|
||||
#include "ac_shader_args.h"
|
||||
#include "ac_shader_util.h"
|
||||
#include "amd_family.h"
|
||||
#include "shader_enums.h"
|
||||
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
|
||||
/* this will convert from radv shader info to the ACO one. */
|
||||
|
||||
#include "ac_hw_stage.h"
|
||||
#include "aco_shader_info.h"
|
||||
|
||||
#define ASSIGN_FIELD(x) aco_info->x = radv->x
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
|
||||
#include "si_shader_internal.h"
|
||||
#include "si_pipe.h"
|
||||
#include "ac_hw_stage.h"
|
||||
#include "aco_interface.h"
|
||||
|
||||
static void
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue