OSDN Git Service

r600g/llvm: Don't emit CALL_FS for vertex shaders
authorTom Stellard <thomas.stellard@amd.com>
Fri, 3 May 2013 18:15:55 +0000 (11:15 -0700)
committerTom Stellard <thomas.stellard@amd.com>
Mon, 6 May 2013 17:54:52 +0000 (10:54 -0700)
The LLVM backend takes care of this now.

src/gallium/drivers/r600/r600_shader.c
src/gallium/drivers/radeon/LLVM_REVISION.txt

index 9afd57f..b3b124e 100644 (file)
@@ -1371,13 +1371,6 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
        for (i = 0; i < TGSI_FILE_COUNT; i++) {
                ctx.file_offset[i] = 0;
        }
-       if (ctx.type == TGSI_PROCESSOR_VERTEX) {
-               ctx.file_offset[TGSI_FILE_INPUT] = 1;
-               r600_bytecode_add_cfinst(ctx.bc, CF_OP_CALL_FS);
-       }
-       if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chip_class >= EVERGREEN) {
-               ctx.file_offset[TGSI_FILE_INPUT] = evergreen_gpr_count(&ctx);
-       }
 
 #ifdef R600_USE_LLVM
        if (use_llvm && ctx.info.indirect_files && (ctx.info.indirect_files & (1 << TGSI_FILE_CONSTANT)) != ctx.info.indirect_files) {
@@ -1387,6 +1380,15 @@ static int r600_shader_from_tgsi(struct r600_screen *rscreen,
                use_llvm = 0;
        }
 #endif
+       if (ctx.type == TGSI_PROCESSOR_VERTEX) {
+               ctx.file_offset[TGSI_FILE_INPUT] = 1;
+               if (!use_llvm) {
+                       r600_bytecode_add_cfinst(ctx.bc, CF_OP_CALL_FS);
+               }
+       }
+       if (ctx.type == TGSI_PROCESSOR_FRAGMENT && ctx.bc->chip_class >= EVERGREEN) {
+               ctx.file_offset[TGSI_FILE_INPUT] = evergreen_gpr_count(&ctx);
+       }
        ctx.use_llvm = use_llvm;
 
        if (use_llvm) {