~ubuntu-branches/ubuntu/natty/mesa/natty-proposed

« back to all changes in this revision

Viewing changes to src/gallium/auxiliary/tgsi/tgsi_ureg.c

  • Committer: Bazaar Package Importer
  • Author(s): Robert Hooker, Robert Hooker, Christopher James Halse Rogers
  • Date: 2010-09-14 08:55:40 UTC
  • mfrom: (1.2.28 upstream)
  • Revision ID: james.westby@ubuntu.com-20100914085540-m4fpl0hdjlfd4jgz
Tags: 7.9~git20100909-0ubuntu1
[ Robert Hooker ]
* New upstream git snapshot up to commit 94118fe2d4b1e5 (LP: #631413)
* New features include ATI HD5xxx series support in r600, and a vastly
  improved glsl compiler.
* Remove pre-generated .pc's, use the ones generated at build time
  instead.
* Remove all references to mesa-utils now that its no longer shipped
  with the mesa source.
* Disable the experimental ARB_fragment_shader option by default on
  i915, it exposes incomplete functionality that breaks KDE compositing
  among other things. It can be enabled via driconf still. (LP: #628930).

[ Christopher James Halse Rogers ]
* debian/patches/04_osmesa_version.diff:
  - Refresh for new upstream
* Bugs fixed in this release:
  - Fixes severe rendering corruption in Unity on radeon (LP: #628727,
    LP: #596292, LP: #599741, LP: #630315, LP: #613694, LP: #599741).
  - Also fixes rendering in gnome-shell (LP: #578619).
  - Flickering in OpenGL apps on radeon (LP: #626943, LP: #610541).
  - Provides preliminary support for new intel chips (LP: #601052).
* debian/rules:
  - Update configure flags to match upstream reshuffling.
  - Explicitly remove gallium DRI drivers that we don't want to ship.
* Update debian/gbp.conf for this Maverick-specific packaging
* libegl1-mesa-dri-x11,kms: There are no longer separate kms or x11 drivers
  for EGL, libegl1-mesa-drivers now contains a single driver that provides
  both backends.

Show diffs side-by-side

added added

removed removed

Lines of Context:
74
74
#define UREG_MAX_IMMEDIATE 32
75
75
#define UREG_MAX_TEMP 256
76
76
#define UREG_MAX_ADDR 2
77
 
#define UREG_MAX_LOOP 1
78
77
#define UREG_MAX_PRED 1
79
78
 
80
79
struct const_decl {
151
150
 
152
151
   unsigned nr_addrs;
153
152
   unsigned nr_preds;
154
 
   unsigned nr_loops;
155
153
   unsigned nr_instructions;
156
154
 
157
155
   struct ureg_tokens domain[2];
537
535
   return ureg_dst_register( TGSI_FILE_ADDRESS, 0 );
538
536
}
539
537
 
540
 
/* Allocate a new loop register.
541
 
 */
542
 
struct ureg_dst
543
 
ureg_DECL_loop(struct ureg_program *ureg)
544
 
{
545
 
   if (ureg->nr_loops < UREG_MAX_LOOP) {
546
 
      return ureg_dst_register(TGSI_FILE_LOOP, ureg->nr_loops++);
547
 
   }
548
 
 
549
 
   assert(0);
550
 
   return ureg_dst_register(TGSI_FILE_LOOP, 0);
551
 
}
552
 
 
553
538
/* Allocate a new predicate register.
554
539
 */
555
540
struct ureg_dst
747
732
}
748
733
 
749
734
 
750
 
void 
 
735
void
751
736
ureg_emit_src( struct ureg_program *ureg,
752
737
               struct ureg_src src )
753
738
{
754
 
   unsigned size = 1 + (src.Indirect ? 1 : 0) + (src.Dimension ? 1 : 0);
 
739
   unsigned size = 1 + (src.Indirect ? 1 : 0) +
 
740
                   (src.Dimension ? (src.DimIndirect ? 2 : 1) : 0);
755
741
 
756
742
   union tgsi_any_token *out = get_tokens( ureg, DOMAIN_INSN, size );
757
743
   unsigned n = 0;
784
770
   }
785
771
 
786
772
   if (src.Dimension) {
787
 
      out[0].src.Dimension = 1;
788
 
      out[n].dim.Indirect = 0;
789
 
      out[n].dim.Dimension = 0;
790
 
      out[n].dim.Padding = 0;
791
 
      out[n].dim.Index = src.DimensionIndex;
 
773
      if (src.DimIndirect) {
 
774
         out[0].src.Dimension = 1;
 
775
         out[n].dim.Indirect = 1;
 
776
         out[n].dim.Dimension = 0;
 
777
         out[n].dim.Padding = 0;
 
778
         out[n].dim.Index = src.DimensionIndex;
 
779
         n++;
 
780
         out[n].value = 0;
 
781
         out[n].src.File = src.DimIndFile;
 
782
         out[n].src.SwizzleX = src.DimIndSwizzle;
 
783
         out[n].src.SwizzleY = src.DimIndSwizzle;
 
784
         out[n].src.SwizzleZ = src.DimIndSwizzle;
 
785
         out[n].src.SwizzleW = src.DimIndSwizzle;
 
786
         out[n].src.Index = src.DimIndIndex;
 
787
      } else {
 
788
         out[0].src.Dimension = 1;
 
789
         out[n].dim.Indirect = 0;
 
790
         out[n].dim.Dimension = 0;
 
791
         out[n].dim.Padding = 0;
 
792
         out[n].dim.Index = src.DimensionIndex;
 
793
      }
792
794
      n++;
793
795
   }
794
796
 
1158
1160
   out[0].decl.Type = TGSI_TOKEN_TYPE_DECLARATION;
1159
1161
   out[0].decl.NrTokens = 2;
1160
1162
   out[0].decl.File = file;
1161
 
   out[0].decl.UsageMask = 0xf;
 
1163
   out[0].decl.UsageMask = TGSI_WRITEMASK_XYZW;
1162
1164
   out[0].decl.Interpolate = TGSI_INTERPOLATE_CONSTANT;
1163
1165
   out[0].decl.Semantic = 0;
1164
1166
 
1180
1182
   out[0].decl.Type = TGSI_TOKEN_TYPE_DECLARATION;
1181
1183
   out[0].decl.NrTokens = 3;
1182
1184
   out[0].decl.File = file;
1183
 
   out[0].decl.UsageMask = 0xf;
 
1185
   out[0].decl.UsageMask = TGSI_WRITEMASK_XYZW;
1184
1186
   out[0].decl.Interpolate = TGSI_INTERPOLATE_CONSTANT;
1185
1187
   out[0].decl.Dimension = 1;
1186
1188
 
1251
1253
      assert(ureg->processor == TGSI_PROCESSOR_GEOMETRY);
1252
1254
 
1253
1255
      emit_property(ureg,
1254
 
                    TGSI_PROPERTY_GS_MAX_VERTICES,
 
1256
                    TGSI_PROPERTY_GS_MAX_OUTPUT_VERTICES,
1255
1257
                    ureg->property_gs_max_vertices);
1256
1258
   }
1257
1259
 
1356
1358
                       0, ureg->nr_addrs );
1357
1359
   }
1358
1360
 
1359
 
   if (ureg->nr_loops) {
1360
 
      emit_decl_range(ureg,
1361
 
                      TGSI_FILE_LOOP,
1362
 
                      0,
1363
 
                      ureg->nr_loops);
1364
 
   }
1365
 
 
1366
1361
   if (ureg->nr_preds) {
1367
1362
      emit_decl_range(ureg,
1368
1363
                      TGSI_FILE_PREDICATE,
1489
1484
}
1490
1485
 
1491
1486
 
 
1487
void ureg_free_tokens( const struct tgsi_token *tokens )
 
1488
{
 
1489
   FREE((struct tgsi_token *)tokens);
 
1490
}
 
1491
 
 
1492
 
1492
1493
struct ureg_program *ureg_create( unsigned processor )
1493
1494
{
1494
1495
   struct ureg_program *ureg = CALLOC_STRUCT( ureg_program );