mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
pvr: rework pds_state array length logic
This attempts to avoid needing hwdefs in headers. It's not perfect, but hopefully a step in the right direction. Reviewed-by: Frank Binns <frank.binns@imgtec.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38352>
This commit is contained in:
parent
1eab712245
commit
4490275332
4 changed files with 15 additions and 14 deletions
|
|
@ -1653,7 +1653,7 @@ static VkResult pvr_clear_color_attachment_static(
|
|||
USC_MRT_RESOURCE_TYPE_MEMORY;
|
||||
const struct pvr_pds_clear_attachment_program_info *clear_attachment_program;
|
||||
struct pvr_pds_pixel_shader_sa_program texture_program;
|
||||
uint32_t pds_state[PVR_STATIC_CLEAR_PDS_STATE_COUNT];
|
||||
uint32_t pds_state[PVR_PDS_STATE_LENGTH];
|
||||
struct pvr_suballoc_bo *pds_texture_program_bo;
|
||||
struct pvr_static_clear_ppp_template template;
|
||||
struct pvr_suballoc_bo *const_shareds_buffer;
|
||||
|
|
|
|||
|
|
@ -37,8 +37,15 @@
|
|||
#include "vk_alloc.h"
|
||||
#include "vk_log.h"
|
||||
|
||||
static_assert(PVR_STATIC_CLEAR_PPP_PDS_TYPE_TEXTUREDATABASE + 1 ==
|
||||
PVR_STATIC_CLEAR_PDS_STATE_COUNT,
|
||||
#define PVR_STATIC_CLEAR_PDS_STATE_COUNT \
|
||||
(pvr_cmd_length(TA_STATE_PDS_SHADERBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_TEXUNICODEBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_SIZEINFO1) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_SIZEINFO2) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_VARYINGBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_TEXTUREDATABASE))
|
||||
|
||||
static_assert(PVR_PDS_STATE_LENGTH == PVR_STATIC_CLEAR_PDS_STATE_COUNT,
|
||||
"pvr_static_clear_ppp_pds_state_type might require fixing.");
|
||||
|
||||
static void pvr_device_setup_graphics_static_clear_ppp_base(
|
||||
|
|
|
|||
|
|
@ -35,14 +35,6 @@
|
|||
#define PVR_CLEAR_VERTEX_COUNT 4
|
||||
#define PVR_CLEAR_VERTEX_COORDINATES 3
|
||||
|
||||
#define PVR_STATIC_CLEAR_PDS_STATE_COUNT \
|
||||
(pvr_cmd_length(TA_STATE_PDS_SHADERBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_TEXUNICODEBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_SIZEINFO1) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_SIZEINFO2) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_VARYINGBASE) + \
|
||||
pvr_cmd_length(TA_STATE_PDS_TEXTUREDATABASE))
|
||||
|
||||
/* These can be used as offsets within a PVR_STATIC_CLEAR_PDS_STATE_COUNT dwords
|
||||
* sized array to get the respective state word.
|
||||
*
|
||||
|
|
@ -62,6 +54,8 @@ enum pvr_static_clear_ppp_pds_state_type {
|
|||
PVR_STATIC_CLEAR_PPP_PDS_TYPE_TEXTUREDATABASE = 5,
|
||||
};
|
||||
|
||||
#define PVR_PDS_STATE_LENGTH (PVR_STATIC_CLEAR_PPP_PDS_TYPE_TEXTUREDATABASE + 1)
|
||||
|
||||
#define PVR_STATIC_CLEAR_VARIANT_COUNT (VK_IMAGE_ASPECT_STENCIL_BIT << 1U)
|
||||
|
||||
struct pvr_bo;
|
||||
|
|
@ -97,7 +91,7 @@ struct pvr_static_clear_ppp_template {
|
|||
* Note: this is a pointer to an array of const uint32_t and not an array
|
||||
* of pointers or a function pointer.
|
||||
*/
|
||||
const uint32_t (*pds_state)[PVR_STATIC_CLEAR_PDS_STATE_COUNT];
|
||||
const uint32_t (*pds_state)[PVR_PDS_STATE_LENGTH];
|
||||
|
||||
struct ROGUE_TA_REGION_CLIP0 region_clip0;
|
||||
struct ROGUE_TA_REGION_CLIP1 region_clip1;
|
||||
|
|
|
|||
|
|
@ -3443,7 +3443,7 @@ static VkResult pvr_cs_write_load_op_for_view(struct pvr_cmd_buffer *cmd_buffer,
|
|||
const struct pvr_device *device = cmd_buffer->device;
|
||||
struct pvr_static_clear_ppp_template template =
|
||||
device->static_clear_state.ppp_templates[VK_IMAGE_ASPECT_COLOR_BIT];
|
||||
uint32_t pds_state[PVR_STATIC_CLEAR_PDS_STATE_COUNT];
|
||||
uint32_t pds_state[PVR_PDS_STATE_LENGTH];
|
||||
struct pvr_pds_upload shareds_update_program;
|
||||
struct pvr_suballoc_bo *pvr_bo;
|
||||
VkResult result;
|
||||
|
|
@ -7852,7 +7852,7 @@ static void pvr_insert_transparent_obj(struct pvr_cmd_buffer *const cmd_buffer,
|
|||
*/
|
||||
struct pvr_static_clear_ppp_template clear =
|
||||
device->static_clear_state.ppp_templates[VK_IMAGE_ASPECT_COLOR_BIT];
|
||||
uint32_t pds_state[PVR_STATIC_CLEAR_PDS_STATE_COUNT] = { 0 };
|
||||
uint32_t pds_state[PVR_PDS_STATE_LENGTH] = { 0 };
|
||||
struct pvr_csb *csb = &sub_cmd->control_stream;
|
||||
struct pvr_suballoc_bo *ppp_bo;
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue