r600g: fix fragment shader size calculation
authorChristian König <deathsimple@vodafone.de>
Sat, 5 Mar 2011 00:46:31 +0000 (01:46 +0100)
committerChristian König <deathsimple@vodafone.de>
Sat, 5 Mar 2011 00:52:44 +0000 (01:52 +0100)
bc.ndw is altered in r600_bc_build, respect that
in fragment shader size calculation.

src/gallium/drivers/r600/r600_asm.c

index 6777be804024d35509908358226d8bb928b6b2d2..626eb711468b4be6a4ac9efa3a6dcb6640e891c2 100644 (file)
@@ -2196,14 +2196,6 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru
 
        r600_bc_add_cfinst(&bc, BC_INST(&bc, V_SQ_CF_WORD1_SQ_CF_INST_RETURN));
 
-       /* use PIPE_BIND_VERTEX_BUFFER so we use the cache buffer manager */
-       ve->fetch_shader = r600_bo(rctx->radeon, bc.ndw*4, 256, PIPE_BIND_VERTEX_BUFFER, 0);
-       if (ve->fetch_shader == NULL) {
-               r600_bc_clear(&bc);
-               return -ENOMEM;
-       }
-
-       ve->fs_size = bc.ndw*4;
        if ((r = r600_bc_build(&bc))) {
                r600_bc_clear(&bc);
                return r;
@@ -2218,6 +2210,15 @@ int r600_vertex_elements_build_fetch_shader(struct r600_pipe_context *rctx, stru
                fprintf(stderr, "______________________________________________________________\n");
        }
 
+       ve->fs_size = bc.ndw*4;
+
+       /* use PIPE_BIND_VERTEX_BUFFER so we use the cache buffer manager */
+       ve->fetch_shader = r600_bo(rctx->radeon, ve->fs_size, 256, PIPE_BIND_VERTEX_BUFFER, 0);
+       if (ve->fetch_shader == NULL) {
+               r600_bc_clear(&bc);
+               return -ENOMEM;
+       }
+
        bytecode = r600_bo_map(rctx->radeon, ve->fetch_shader, 0, NULL);
        if (bytecode == NULL) {
                r600_bc_clear(&bc);