gallium: switch boolean -> bool at the interface definitions
[mesa.git] / src / gallium / drivers / freedreno / freedreno_screen.c
index 38a459e73aae8cd31376f98b8864e205b36b7ac5..4fbe6dd92238d00b61b6691c5ffed5bd74924467 100644 (file)
@@ -87,8 +87,7 @@ static const struct debug_named_value debug_options[] = {
                {"hiprio",    FD_DBG_HIPRIO, "Force high-priority context"},
                {"ttile",     FD_DBG_TTILE,  "Enable texture tiling (a5xx)"},
                {"perfcntrs", FD_DBG_PERFC,  "Expose performance counters"},
-               {"softpin",   FD_DBG_SOFTPIN,"Enable softpin command submission (experimental)"},
-               {"ubwc",      FD_DBG_UBWC,   "Enable UBWC for all internal buffers (experimental)"},
+               {"noubwc",    FD_DBG_NOUBWC, "Disable UBWC for all internal buffers"},
                DEBUG_NAMED_VALUE_END
 };
 
@@ -102,7 +101,7 @@ static const char *
 fd_screen_get_name(struct pipe_screen *pscreen)
 {
        static char buffer[128];
-       util_snprintf(buffer, sizeof(buffer), "FD%03d",
+       snprintf(buffer, sizeof(buffer), "FD%03d",
                        fd_screen(pscreen)->device_id);
        return buffer;
 }
@@ -200,6 +199,10 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_PACKED_UNIFORMS:
                return !is_a2xx(screen);
 
+       case PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR:
+       case PIPE_CAP_DEVICE_RESET_STATUS_QUERY:
+               return screen->has_robustness;
+
        case PIPE_CAP_VERTEXID_NOBASE:
                return is_a3xx(screen) || is_a4xx(screen);
 
@@ -214,7 +217,9 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE:
                return 0;
 
-       case PIPE_CAP_SM3:
+       case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD:
+       case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES:
+       case PIPE_CAP_VERTEX_SHADER_SATURATE:
        case PIPE_CAP_PRIMITIVE_RESTART:
        case PIPE_CAP_TGSI_INSTANCEID:
        case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
@@ -303,6 +308,15 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
        case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
                return 0;
 
+       case PIPE_CAP_FBFETCH:
+               if (fd_device_version(screen->dev) >= FD_VERSION_GMEM_BASE &&
+                               is_a6xx(screen))
+                       return 1;
+               return 0;
+       case PIPE_CAP_SAMPLE_SHADING:
+               if (is_a6xx(screen)) return 1;
+               return 0;
+
        case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION:
                return 0;
 
@@ -347,6 +361,7 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
                return 0;
        case PIPE_CAP_STREAM_OUTPUT_PAUSE_RESUME:
        case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS:
+       case PIPE_CAP_TGSI_FS_POSITION_IS_SYSVAL:
                if (is_ir3(screen))
                        return 1;
                return 0;
@@ -357,7 +372,8 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
                return 0;
 
        /* Texturing. */
-       case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
+       case PIPE_CAP_MAX_TEXTURE_2D_SIZE:
+               return 1 << (MAX_MIP_LEVELS - 1);
        case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
                return MAX_MIP_LEVELS;
        case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
@@ -380,9 +396,6 @@ fd_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
                /* only a4xx, requires new enough kernel so we know max_freq: */
                return (screen->max_freq > 0) && (is_a4xx(screen) || is_a5xx(screen) || is_a6xx(screen));
 
-       case PIPE_CAP_MAX_FRAMES_IN_FLIGHT:
-               return 2;
-
        case PIPE_CAP_VENDOR_ID:
                return 0x5143;
        case PIPE_CAP_DEVICE_ID:
@@ -595,7 +608,7 @@ fd_get_compute_param(struct pipe_screen *pscreen, enum pipe_shader_ir ir_type,
 
        case PIPE_COMPUTE_CAP_IR_TARGET:
                if (ret)
-                       sprintf(ret, ir);
+                       sprintf(ret, "%s", ir);
                return strlen(ir) * sizeof(char);
 
        case PIPE_COMPUTE_CAP_GRID_DIMENSION:
@@ -654,7 +667,7 @@ fd_get_compiler_options(struct pipe_screen *pscreen,
        return ir2_get_compiler_options();
 }
 
-boolean
+bool
 fd_screen_bo_get_handle(struct pipe_screen *pscreen,
                struct fd_bo *bo,
                struct renderonly_scanout *scanout,
@@ -667,14 +680,14 @@ fd_screen_bo_get_handle(struct pipe_screen *pscreen,
                return fd_bo_get_name(bo, &whandle->handle) == 0;
        } else if (whandle->type == WINSYS_HANDLE_TYPE_KMS) {
                if (renderonly_get_handle(scanout, whandle))
-                       return TRUE;
+                       return true;
                whandle->handle = fd_bo_handle(bo);
-               return TRUE;
+               return true;
        } else if (whandle->type == WINSYS_HANDLE_TYPE_FD) {
                whandle->handle = fd_bo_dmabuf(bo);
-               return TRUE;
+               return true;
        } else {
-               return FALSE;
+               return false;
        }
 }
 
@@ -778,6 +791,10 @@ fd_screen_create(struct fd_device *dev, struct renderonly *ro)
        }
        screen->gmemsize_bytes = val;
 
+       if (fd_device_version(dev) >= FD_VERSION_GMEM_BASE) {
+               fd_pipe_get_param(screen->pipe, FD_GMEM_BASE, &screen->gmem_base);
+       }
+
        if (fd_pipe_get_param(screen->pipe, FD_DEVICE_ID, &val)) {
                DBG("could not get device-id");
                goto fail;
@@ -822,6 +839,11 @@ fd_screen_create(struct fd_device *dev, struct renderonly *ro)
                screen->priority_mask = (1 << val) - 1;
        }
 
+       if ((fd_device_version(dev) >= FD_VERSION_ROBUSTNESS) &&
+                       (fd_pipe_get_param(screen->pipe, FD_PP_PGTABLE, &val) == 0)) {
+               screen->has_robustness = val;
+       }
+
        struct sysinfo si;
        sysinfo(&si);
        screen->ram_size = si.totalram;
@@ -860,6 +882,7 @@ fd_screen_create(struct fd_device *dev, struct renderonly *ro)
                fd4_screen_init(pscreen);
                break;
        case 530:
+       case 540:
                fd5_screen_init(pscreen);
                break;
        case 630: