v3d: Emit the VCM_CACHE_SIZE packet.
[mesa.git] / src / gallium / drivers / v3d / v3d_screen.c
index 2eba557a64fe74480984f3b7737e2ffede7b69c0..28334aeba4ccb14f4934c6e4d2a4455b0bbbcf13 100644 (file)
@@ -46,7 +46,7 @@ v3d_screen_get_name(struct pipe_screen *pscreen)
 
         if (!screen->name) {
                 screen->name = ralloc_asprintf(screen,
-                                               "VC5 V3D %d.%d",
+                                               "V3D %d.%d",
                                                screen->devinfo.ver / 10,
                                                screen->devinfo.ver % 10);
         }
@@ -109,6 +109,7 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
         case PIPE_CAP_DRAW_INDIRECT:
         case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
         case PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET:
+        case PIPE_CAP_TGSI_CAN_READ_OUTPUTS:
                 return 1;
 
         case PIPE_CAP_INDEP_BLEND_ENABLE:
@@ -260,6 +261,7 @@ v3d_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
         case PIPE_CAP_TILE_RASTER_ORDER:
         case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS:
         case PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:
+       case PIPE_CAP_FRAMEBUFFER_MSAA_CONSTRAINTS:
         case PIPE_CAP_CONTEXT_PRIORITY_MASK:
         case PIPE_CAP_CONSTBUF0_FLAGS:
         case PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_TRIANGLES:
@@ -439,15 +441,18 @@ v3d_screen_is_format_supported(struct pipe_screen *pscreen,
                                enum pipe_format format,
                                enum pipe_texture_target target,
                                unsigned sample_count,
+                               unsigned storage_sample_count,
                                unsigned usage)
 {
         struct v3d_screen *screen = v3d_screen(pscreen);
 
+        if (MAX2(1, sample_count) != MAX2(1, storage_sample_count))
+                return false;
+
         if (sample_count > 1 && sample_count != VC5_MAX_SAMPLES)
                 return FALSE;
 
-        if ((target >= PIPE_MAX_TEXTURE_TYPES) ||
-            !util_format_is_supported(format, usage)) {
+        if (target >= PIPE_MAX_TEXTURE_TYPES) {
                 return FALSE;
         }
 
@@ -580,6 +585,8 @@ v3d_get_device_info(struct v3d_screen *screen)
         uint32_t minor = (ident1.value >> 0) & 0xf;
         screen->devinfo.ver = major * 10 + minor;
 
+        screen->devinfo.vpm_size = (ident1.value >> 28 & 0xf) * 1024;
+
         switch (screen->devinfo.ver) {
         case 33:
         case 41: