r600: add functions to update ls/hs state.
authorDave Airlie <airlied@redhat.com>
Mon, 30 Nov 2015 00:29:12 +0000 (10:29 +1000)
committerDave Airlie <airlied@redhat.com>
Sun, 6 Dec 2015 23:58:59 +0000 (09:58 +1000)
This just adds the two functions, these will get hooked up
later in the shader code.

Signed-off-by: Dave Airlie <airlied@redhat.com>
src/gallium/drivers/r600/evergreen_state.c
src/gallium/drivers/r600/r600_pipe.h

index 0b7414627e55d0c367a2ab99fe47b3b395e58b2d..ef605bdd7202f54451f92ce209e5186de5fbc266 100644 (file)
@@ -3186,6 +3186,31 @@ void evergreen_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader
                S_02881C_USE_VTX_RENDER_TARGET_INDX(rshader->vs_out_layer);
 }
 
+void evergreen_update_hs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+{
+       struct r600_command_buffer *cb = &shader->command_buffer;
+       struct r600_shader *rshader = &shader->shader;
+
+       r600_init_command_buffer(cb, 32);
+       r600_store_context_reg(cb, R_0288BC_SQ_PGM_RESOURCES_HS,
+                              S_0288BC_NUM_GPRS(rshader->bc.ngpr) |
+                              S_0288BC_STACK_SIZE(rshader->bc.nstack));
+       r600_store_context_reg(cb, R_0288B8_SQ_PGM_START_HS,
+                              shader->bo->gpu_address >> 8);
+}
+
+void evergreen_update_ls_state(struct pipe_context *ctx, struct r600_pipe_shader *shader)
+{
+       struct r600_command_buffer *cb = &shader->command_buffer;
+       struct r600_shader *rshader = &shader->shader;
+
+       r600_init_command_buffer(cb, 32);
+       r600_store_context_reg(cb, R_0288D4_SQ_PGM_RESOURCES_LS,
+                              S_0288D4_NUM_GPRS(rshader->bc.ngpr) |
+                              S_0288D4_STACK_SIZE(rshader->bc.nstack));
+       r600_store_context_reg(cb, R_0288D0_SQ_PGM_START_LS,
+                              shader->bo->gpu_address >> 8);
+}
 void *evergreen_create_resolve_blend(struct r600_context *rctx)
 {
        struct pipe_blend_state blend;
index 623fcf95cea8618a4ef2ad67be662647a2c27077..041803df2eedeccf4646c089dd87a397f00adecc 100644 (file)
@@ -603,6 +603,8 @@ void evergreen_update_ps_state(struct pipe_context *ctx, struct r600_pipe_shader
 void evergreen_update_es_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void evergreen_update_gs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void evergreen_update_vs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void evergreen_update_ls_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
+void evergreen_update_hs_state(struct pipe_context *ctx, struct r600_pipe_shader *shader);
 void *evergreen_create_db_flush_dsa(struct r600_context *rctx);
 void *evergreen_create_resolve_blend(struct r600_context *rctx);
 void *evergreen_create_decompress_blend(struct r600_context *rctx);