mirror of
https://github.com/torvalds/linux.git
synced 2026-01-25 15:03:52 +08:00
drm/amdgpu: Add documentation associated with CSB
Add a description for the get_csb_buffer callback, update the glossary, and add some extra information about RB, which is associated with CSB configuration. Signed-off-by: Rodrigo Siqueira <siqueira@igalia.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
committed by
Alex Deucher
parent
e7164c7ade
commit
ffc7e11c10
@@ -33,6 +33,9 @@ we have a dedicated glossary for Display Core at
|
||||
CS
|
||||
Command Submission
|
||||
|
||||
CSB
|
||||
Clear State Indirect Buffer
|
||||
|
||||
CU
|
||||
Compute Unit
|
||||
|
||||
@@ -134,6 +137,9 @@ we have a dedicated glossary for Display Core at
|
||||
PSP
|
||||
Platform Security Processor
|
||||
|
||||
RB
|
||||
Render Backends. Some people called it ROPs.
|
||||
|
||||
RLC
|
||||
RunList Controller. This name is a remnant of past ages and doesn't have
|
||||
much meaning today. It's a group of general-purpose helper engines for
|
||||
|
||||
@@ -170,10 +170,46 @@ struct amdgpu_kiq {
|
||||
#define AMDGPU_GFX_MAX_SE 4
|
||||
#define AMDGPU_GFX_MAX_SH_PER_SE 2
|
||||
|
||||
/**
|
||||
* amdgpu_rb_config - Configure a single Render Backend (RB)
|
||||
*
|
||||
* Bad RBs are fused off and there is a harvest register the driver reads to
|
||||
* determine which RB(s) are fused off so that the driver can configure the
|
||||
* hardware state so that nothing gets sent to them. There are also user
|
||||
* harvest registers that the driver can program to disable additional RBs,
|
||||
* etc., for testing purposes.
|
||||
*/
|
||||
struct amdgpu_rb_config {
|
||||
/**
|
||||
* @rb_backend_disable:
|
||||
*
|
||||
* The value captured from register RB_BACKEND_DISABLE indicates if the
|
||||
* RB backend is disabled or not.
|
||||
*/
|
||||
uint32_t rb_backend_disable;
|
||||
|
||||
/**
|
||||
* @user_rb_backend_disable:
|
||||
*
|
||||
* The value captured from register USER_RB_BACKEND_DISABLE indicates
|
||||
* if the User RB backend is disabled or not.
|
||||
*/
|
||||
uint32_t user_rb_backend_disable;
|
||||
|
||||
/**
|
||||
* @raster_config:
|
||||
*
|
||||
* To set up all of the states, it is necessary to have two registers
|
||||
* to keep all of the states. This field holds the first register.
|
||||
*/
|
||||
uint32_t raster_config;
|
||||
|
||||
/**
|
||||
* @raster_config_1:
|
||||
*
|
||||
* To set up all of the states, it is necessary to have two registers
|
||||
* to keep all of the states. This field holds the second register.
|
||||
*/
|
||||
uint32_t raster_config_1;
|
||||
};
|
||||
|
||||
@@ -221,6 +257,13 @@ struct amdgpu_gfx_config {
|
||||
uint32_t macrotile_mode_array[16];
|
||||
|
||||
struct gb_addr_config gb_addr_config_fields;
|
||||
|
||||
/**
|
||||
* @rb_config:
|
||||
*
|
||||
* Matrix that keeps all the Render Backend (color and depth buffer
|
||||
* handling) configuration on the 3D engine.
|
||||
*/
|
||||
struct amdgpu_rb_config rb_config[AMDGPU_GFX_MAX_SE][AMDGPU_GFX_MAX_SH_PER_SE];
|
||||
|
||||
/* gfx configure feature */
|
||||
|
||||
@@ -237,6 +237,20 @@ struct amdgpu_rlc_funcs {
|
||||
void (*unset_safe_mode)(struct amdgpu_device *adev, int xcc_id);
|
||||
int (*init)(struct amdgpu_device *adev);
|
||||
u32 (*get_csb_size)(struct amdgpu_device *adev);
|
||||
|
||||
/**
|
||||
* @get_csb_buffer: Get the clear state to be put into the hardware.
|
||||
*
|
||||
* The parameter adev is used to get the CS data and other gfx info,
|
||||
* and buffer is the RLC CS pointer
|
||||
*
|
||||
* Sometimes, the user space puts a request to clear the state in the
|
||||
* command buffer; this function provides the clear state that gets put
|
||||
* into the hardware. Note that the driver programs Clear State
|
||||
* Indirect Buffer (CSB) explicitly when it sets up the kernel rings,
|
||||
* and it also provides a pointer to it which is used by the firmware
|
||||
* to load the clear state in some cases.
|
||||
*/
|
||||
void (*get_csb_buffer)(struct amdgpu_device *adev, volatile u32 *buffer);
|
||||
int (*get_cp_table_num)(struct amdgpu_device *adev);
|
||||
int (*resume)(struct amdgpu_device *adev);
|
||||
|
||||
Reference in New Issue
Block a user