pvr: Move PBE START_POS into csb enum helpers header
authorKarmjit Mahil <Karmjit.Mahil@imgtec.com>
Mon, 9 Jan 2023 16:03:53 +0000 (16:03 +0000)
committerMarge Bot <emma+marge@anholt.net>
Fri, 24 Feb 2023 14:36:36 +0000 (14:36 +0000)
This commit adds 'pvr_pbestate_source_pos()' and moves
`enum pvr_pbe_source_start_pos` into pvr_csb_enum_helpers.h .
The enum will be needed in other files in the commits following.

Signed-off-by: Karmjit Mahil <Karmjit.Mahil@imgtec.com>
Reviewed-by: Frank Binns <frank.binns@imgtec.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/21386>

src/imagination/vulkan/pvr_csb_enum_helpers.h
src/imagination/vulkan/pvr_job_common.c
src/imagination/vulkan/pvr_job_common.h

index 5a4d525..55c0dac 100644 (file)
@@ -92,6 +92,49 @@ pvr_pdsinst_doutu_sample_rate_from_rogue(enum rogue_msaa_mode msaa_mode)
 }
 
 /******************************************************************************
+   PBESTATE
+ ******************************************************************************/
+
+enum pvr_pbe_source_start_pos {
+   PVR_PBE_STARTPOS_BIT0,
+   PVR_PBE_STARTPOS_BIT32,
+   PVR_PBE_STARTPOS_BIT64,
+   PVR_PBE_STARTPOS_BIT96,
+   /* The below values are available if has_eight_output_registers feature is
+    * enabled.
+    */
+   PVR_PBE_STARTPOS_BIT128,
+   PVR_PBE_STARTPOS_BIT160,
+   PVR_PBE_STARTPOS_BIT192,
+   PVR_PBE_STARTPOS_BIT224,
+};
+
+static inline enum ROGUE_PBESTATE_SOURCE_POS
+pvr_pbestate_source_pos(enum pvr_pbe_source_start_pos pos)
+{
+   switch (pos) {
+   case PVR_PBE_STARTPOS_BIT0:
+   case PVR_PBE_STARTPOS_BIT128:
+      return ROGUE_PBESTATE_SOURCE_POS_START_BIT0;
+
+   case PVR_PBE_STARTPOS_BIT32:
+   case PVR_PBE_STARTPOS_BIT160:
+      return ROGUE_PBESTATE_SOURCE_POS_START_BIT32;
+
+   case PVR_PBE_STARTPOS_BIT64:
+   case PVR_PBE_STARTPOS_BIT192:
+      return ROGUE_PBESTATE_SOURCE_POS_START_BIT64;
+
+   case PVR_PBE_STARTPOS_BIT96:
+   case PVR_PBE_STARTPOS_BIT224:
+      return ROGUE_PBESTATE_SOURCE_POS_START_BIT96;
+
+   default:
+      unreachable("Undefined PBE source pos.");
+   }
+}
+
+/******************************************************************************
    TA
  ******************************************************************************/
 
index fb8f31b..6e47b75 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "hwdef/rogue_hw_defs.h"
 #include "hwdef/rogue_hw_utils.h"
+#include "pvr_csb_enum_helpers.h"
 #include "pvr_device_info.h"
 #include "pvr_job_common.h"
 #include "pvr_private.h"
@@ -201,10 +202,13 @@ void pvr_pbe_pack_state(
 
       state.source_format = surface_params->source_format;
 
-      pvr_pbe_get_src_pos(dev_info,
-                          render_params->source_start,
-                          &state.source_pos,
-                          &state.source_pos_offset_128);
+      state.source_pos = pvr_pbestate_source_pos(render_params->source_start);
+      if (PVR_HAS_FEATURE(dev_info, eight_output_registers)) {
+         state.source_pos_offset_128 = render_params->source_start >=
+                                       PVR_PBE_STARTPOS_BIT128;
+      } else {
+         assert(render_params->source_start < PVR_PBE_STARTPOS_BIT128);
+      }
 
       /* MRT index (Use 0 for a single render target)/ */
       state.mrt_index = render_params->mrt_index;
index 88a3950..8bba8f8 100644 (file)
@@ -29,6 +29,7 @@
 #include <vulkan/vulkan.h>
 
 #include "hwdef/rogue_hw_defs.h"
+#include "pvr_csb_enum_helpers.h"
 #include "pvr_private.h"
 #include "pvr_types.h"
 
@@ -41,20 +42,6 @@ enum pvr_pbe_gamma {
    PVR_PBE_GAMMA_ENABLED,
 };
 
-enum pvr_pbe_source_start_pos {
-   PVR_PBE_STARTPOS_BIT0,
-   PVR_PBE_STARTPOS_BIT32,
-   PVR_PBE_STARTPOS_BIT64,
-   PVR_PBE_STARTPOS_BIT96,
-   /* The below ones are available if has_eight_output_registers feature is
-    * enabled.
-    */
-   PVR_PBE_STARTPOS_BIT128,
-   PVR_PBE_STARTPOS_BIT160,
-   PVR_PBE_STARTPOS_BIT192,
-   PVR_PBE_STARTPOS_BIT224,
-};
-
 /**
  * These are parameters specific to the surface being set up and hence can be
  * typically set up at surface creation time.