aboutsummaryrefslogtreecommitdiffstats
path: root/src/gallium/drivers/svga/svga_context.h
diff options
context:
space:
mode:
authorNeha Bhende <[email protected]>2020-05-26 21:29:50 +0530
committerMarge Bot <[email protected]>2020-06-05 06:36:54 +0000
commitba37d408da30d87b6848d76242d9d797dbef80a0 (patch)
tree87447cb12f6f5b7ca80c69308ae636639842b4c0 /src/gallium/drivers/svga/svga_context.h
parentccb4ea5a43e89fcc93fff98c881639223f1538e5 (diff)
svga: Performance fixes
This is a squash commit of in house performance fixes and misc bug fixes for GL4.1 support. Performance fixes: * started using system memory for constant buffer to gain 3X performance boost with metro redux Misc bug fixes: * fixed usage of vertexid in shader * added empty control point phase in hull shader for zero ouput control point * misc shader signature fixes * fixed clip_distance input declaration * clearing the dirty bit for the surface while using direct map if surface is already flushed and there is no pending primitive This patch also uses SVGA_RETRY macro for commands retries. Part of it is already used in previous patch. Reviewed-by: Brian Paul <[email protected]> Reviewed-by: Charmaine Lee <[email protected]> Signed-off-by: Neha Bhende <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5317>
Diffstat (limited to 'src/gallium/drivers/svga/svga_context.h')
-rw-r--r--src/gallium/drivers/svga/svga_context.h20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/gallium/drivers/svga/svga_context.h b/src/gallium/drivers/svga/svga_context.h
index c0c315119f6..4d3a9f101dc 100644
--- a/src/gallium/drivers/svga/svga_context.h
+++ b/src/gallium/drivers/svga/svga_context.h
@@ -258,6 +258,10 @@ struct svga_velems_state {
SVGA3dElementLayoutId id; /**< VGPU10 */
};
+struct svga_constant_buffer {
+ struct svga_winsys_surface *handle;
+ unsigned size;
+};
/* Use to calculate differences between state emitted to hardware and
* current driver-calculated state.
@@ -308,6 +312,8 @@ struct svga_state
unsigned num_vertex_buffers;
enum pipe_prim_type reduced_prim;
+ unsigned vertex_id_bias;
+
struct {
unsigned flag_1d;
unsigned flag_srgb;
@@ -391,7 +397,8 @@ struct svga_hw_draw_state
struct svga_shader_variant *cs;
/** Currently bound constant buffer, per shader stage */
- struct pipe_resource *constbuf[PIPE_SHADER_TYPES];
+ struct pipe_resource *constbuf[PIPE_SHADER_TYPES][SVGA_MAX_CONST_BUFS];
+ struct svga_constant_buffer constbufoffsets[PIPE_SHADER_TYPES][SVGA_MAX_CONST_BUFS];
/** Bitmask of enabled constant buffers */
unsigned enabled_constbufs[PIPE_SHADER_TYPES];
@@ -699,8 +706,18 @@ struct svga_context
#define SVGA_NEW_TCS_CONST_BUFFER ((uint64_t) 0x1000000000)
#define SVGA_NEW_TES_CONST_BUFFER ((uint64_t) 0x2000000000)
#define SVGA_NEW_TCS_PARAM ((uint64_t) 0x4000000000)
+#define SVGA_NEW_FS_CONSTS ((uint64_t) 0x8000000000)
+#define SVGA_NEW_VS_CONSTS ((uint64_t) 0x10000000000)
+#define SVGA_NEW_GS_CONSTS ((uint64_t) 0x20000000000)
+#define SVGA_NEW_TCS_CONSTS ((uint64_t) 0x40000000000)
+#define SVGA_NEW_TES_CONSTS ((uint64_t) 0x800000000000)
#define SVGA_NEW_ALL ((uint64_t) 0xFFFFFFFFFFFFFFFF)
+#define SVGA_NEW_CONST_BUFFER \
+ (SVGA_NEW_FS_CONST_BUFFER | SVGA_NEW_VS_CONST_BUFFER | \
+ SVGA_NEW_GS_CONST_BUFFER | \
+ SVGA_NEW_TCS_CONST_BUFFER | SVGA_NEW_TES_CONST_BUFFER)
+
void svga_init_state_functions( struct svga_context *svga );
void svga_init_flush_functions( struct svga_context *svga );
@@ -739,6 +756,7 @@ void svga_context_finish(struct svga_context *svga);
void svga_hwtnl_flush_retry( struct svga_context *svga );
void svga_hwtnl_flush_buffer( struct svga_context *svga,
struct pipe_resource *buffer );
+boolean svga_hwtnl_has_pending_prim(struct svga_hwtnl *);
void svga_surfaces_flush(struct svga_context *svga);