tgsi: add caps for fragment coord conventions (v3)
[mesa.git] / src / gallium / drivers / r300 / r300_screen.c
index e9727e99df461bbe251007807f5d13860fa1adef..f311284d15df2e412d79f8b861527d53b54b1ebc 100644 (file)
@@ -113,6 +113,9 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
              * ~ C.
              */
             return 1;
+        case PIPE_CAP_DUAL_SOURCE_BLEND:
+            /* XXX need to figure out how to do it */
+            return 0;
         case PIPE_CAP_ANISOTROPIC_FILTER:
             return 1;
         case PIPE_CAP_POINT_SPRITE:
@@ -149,6 +152,16 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
             } else {
                 return 0;
             }
+        case PIPE_CAP_INDEP_BLEND_ENABLE:
+            return 1;
+        case PIPE_CAP_INDEP_BLEND_FUNC:
+            return 0;
+        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
+        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
+           return 1;
+        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
+        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
+            return 0;
         default:
             debug_printf("r300: Implementation error: Bad param %d\n",
                 param);
@@ -192,6 +205,12 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
     uint32_t retval = 0;
     boolean is_r500 = r300_screen(screen)->caps->is_r500;
 
+    if (target >= PIPE_MAX_TEXTURE_TYPES) {
+        debug_printf("r300: Implementation error: Received bogus texture "
+            "target %d in %s\n", target, __FUNCTION__);
+        return FALSE;
+    }
+
     switch (format) {
         /* Supported formats. */
         /* Colorbuffer */
@@ -213,6 +232,7 @@ static boolean r300_is_format_supported(struct pipe_screen* screen,
         case PIPE_FORMAT_DXT5_RGBA:
         case PIPE_FORMAT_YCBCR:
         case PIPE_FORMAT_L8_UNORM:
+        case PIPE_FORMAT_A8_UNORM:
         case PIPE_FORMAT_A8L8_UNORM:
             retval = usage & PIPE_TEXTURE_USAGE_SAMPLER;
             break;