i965/fs: allow fs-generator use without gl_fragment_program
authorTopi Pohjolainen <topi.pohjolainen@intel.com>
Wed, 27 Nov 2013 14:21:11 +0000 (16:21 +0200)
committerTopi Pohjolainen <topi.pohjolainen@intel.com>
Fri, 27 Dec 2013 09:58:46 +0000 (11:58 +0200)
Prepares the generator to accept hand-crafted blorp programs.

Signed-off-by: Topi Pohjolainen <topi.pohjolainen@intel.com>
Reviewed-by: Matt Turner <mattst88@gmail.com>
src/mesa/drivers/dri/i965/brw_fs_generator.cpp

index 2381fb0ad22b4a576dc7c81f66bbe2decee97dfd..2bbf687c590255a9207b9b33a33be087ba5ab091 100644 (file)
@@ -116,7 +116,7 @@ fs_generator::generate_fb_write(fs_inst *inst)
    brw_set_mask_control(p, BRW_MASK_DISABLE);
    brw_set_compression_control(p, BRW_COMPRESSION_NONE);
 
-   if (fp->UsesKill || c->key.alpha_test_func) {
+   if ((fp && fp->UsesKill) || c->key.alpha_test_func) {
       struct brw_reg pixel_mask;
 
       if (brw->gen >= 6)
@@ -1304,9 +1304,12 @@ fs_generator::generate_code(exec_list *instructions)
       if (shader) {
          printf("Native code for fragment shader %d (%d-wide dispatch):\n",
                 prog->Name, dispatch_width);
-      } else {
+      } else if (fp) {
          printf("Native code for fragment program %d (%d-wide dispatch):\n",
                 fp->Base.Id, dispatch_width);
+      } else {
+         printf("Native code for blorp program (%d-wide dispatch):\n",
+                dispatch_width);
       }
    }
 
@@ -1344,7 +1347,7 @@ fs_generator::generate_code(exec_list *instructions)
                else {
                   const prog_instruction *fpi;
                   fpi = (const prog_instruction *)inst->ir;
-                  printf("%d: ", (int)(fpi - fp->Base.Instructions));
+                  printf("%d: ", (int)(fpi - (fp ? fp->Base.Instructions : 0)));
                   _mesa_fprint_instruction_opt(stdout,
                                                fpi,
                                                0, PROG_PRINT_DEBUG, NULL);