struct nouveau_screen *screen = nouveau_screen(pscreen);
const uint16_t class_3d = screen->class_3d;
struct nouveau_device *dev = screen->device;
- static bool debug_cap_printed[PIPE_CAP_LAST] = {};
switch (param) {
/* non-boolean caps */
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
case PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE:
case PIPE_CAP_TEXTURE_SWIZZLE:
- case PIPE_CAP_TEXTURE_SHADOW_MAP:
case PIPE_CAP_NPOT_TEXTURES:
case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
case PIPE_CAP_MIXED_COLOR_DEPTH_BITS:
case PIPE_CAP_ANISOTROPIC_FILTER:
case PIPE_CAP_TEXTURE_BUFFER_OBJECTS:
- case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
case PIPE_CAP_DEPTH_CLIP_DISABLE:
case PIPE_CAP_FRAGMENT_SHADER_TEXTURE_LOD:
case PIPE_CAP_FRAGMENT_SHADER_DERIVATIVES:
case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX:
case PIPE_CAP_VS_INSTANCEID:
case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
- case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
case PIPE_CAP_CONDITIONAL_RENDER:
case PIPE_CAP_TEXTURE_BARRIER:
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
case PIPE_CAP_TGSI_TEX_TXF_LZ:
case PIPE_CAP_SHADER_CLOCK:
case PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX:
- case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION:
- case PIPE_CAP_DEST_SURFACE_SRGB_CONTROL:
case PIPE_CAP_TGSI_DIV:
- case PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF:
- case PIPE_CAP_FLATSHADE:
- case PIPE_CAP_POINT_SIZE_FIXED:
- case PIPE_CAP_TWO_SIDED_COLOR:
- case PIPE_CAP_CLIP_PLANES:
- case PIPE_CAP_PACKED_STREAM_OUTPUT:
case PIPE_CAP_CLEAR_SCISSORED:
case PIPE_CAP_FRAMEBUFFER_NO_ATTACHMENT:
case PIPE_CAP_COMPUTE:
- case PIPE_CAP_GL_CLAMP:
- case PIPE_CAP_TEXRECT:
- case PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH:
- case PIPE_CAP_SHAREABLE_SHADERS:
- case PIPE_CAP_PREFER_BACK_BUFFER_REUSE:
case PIPE_CAP_QUERY_MEMORY_INFO:
return 1;
case PIPE_CAP_FORCE_PERSAMPLE_INTERP:
return class_3d >= NVA3_3D_CLASS;
- /* unsupported caps */
- case PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART:
- case PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE:
- case PIPE_CAP_SEAMLESS_CUBE_MAP_PER_TEXTURE:
- case PIPE_CAP_FS_COORD_ORIGIN_LOWER_LEFT:
- case PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER:
- case PIPE_CAP_SHADER_STENCIL_EXPORT:
- case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
- case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_ATTRIB_ELEMENT_ALIGNED_ONLY:
- case PIPE_CAP_TGSI_TEXCOORD:
- case PIPE_CAP_VS_LAYER_VIEWPORT:
- case PIPE_CAP_TEXTURE_GATHER_SM5:
- case PIPE_CAP_FAKE_SW_MSAA:
- case PIPE_CAP_TEXTURE_GATHER_OFFSETS:
- case PIPE_CAP_VS_WINDOW_SPACE_POSITION:
- case PIPE_CAP_DRAW_INDIRECT:
- case PIPE_CAP_MULTI_DRAW_INDIRECT:
- case PIPE_CAP_MULTI_DRAW_INDIRECT_PARAMS:
- case PIPE_CAP_MULTISAMPLE_Z_RESOLVE: /* potentially supported on some hw */
- case PIPE_CAP_RESOURCE_FROM_USER_MEMORY:
- case PIPE_CAP_RESOURCE_FROM_USER_MEMORY_COMPUTE_ONLY:
- case PIPE_CAP_DEVICE_RESET_STATUS_QUERY:
- case PIPE_CAP_MAX_SHADER_PATCH_VARYINGS:
- case PIPE_CAP_DRAW_PARAMETERS:
- case PIPE_CAP_SHADER_PACK_HALF_FLOAT:
- case PIPE_CAP_FS_POSITION_IS_SYSVAL:
- case PIPE_CAP_FS_POINT_IS_SYSVAL:
- case PIPE_CAP_GENERATE_MIPMAP:
- case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY:
- case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
- case PIPE_CAP_QUERY_BUFFER_OBJECT:
case PIPE_CAP_PCI_GROUP:
case PIPE_CAP_PCI_BUS:
case PIPE_CAP_PCI_DEVICE:
case PIPE_CAP_PCI_FUNCTION:
- case PIPE_CAP_ROBUST_BUFFER_ACCESS_BEHAVIOR:
- case PIPE_CAP_SHADER_GROUP_VOTE:
- case PIPE_CAP_POLYGON_OFFSET_UNITS_UNSCALED:
- case PIPE_CAP_STREAM_OUTPUT_INTERLEAVE_BUFFERS:
- case PIPE_CAP_SHADER_CAN_READ_OUTPUTS:
- case PIPE_CAP_NATIVE_FENCE_FD:
- case PIPE_CAP_FBFETCH:
- case PIPE_CAP_DOUBLES:
- case PIPE_CAP_INT64:
- case PIPE_CAP_INT64_DIVMOD:
- case PIPE_CAP_POLYGON_MODE_FILL_RECTANGLE:
- case PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE:
- case PIPE_CAP_SHADER_BALLOT:
- case PIPE_CAP_TES_LAYER_VIEWPORT:
- case PIPE_CAP_POST_DEPTH_COVERAGE:
- case PIPE_CAP_BINDLESS_TEXTURE:
- case PIPE_CAP_NIR_SAMPLERS_AS_DEREF:
- case PIPE_CAP_QUERY_SO_OVERFLOW:
- case PIPE_CAP_LOAD_CONSTBUF:
- case PIPE_CAP_TILE_RASTER_ORDER:
- case PIPE_CAP_FRAMEBUFFER_MSAA_CONSTRAINTS:
- case PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET:
- case PIPE_CAP_CONTEXT_PRIORITY_MASK:
- case PIPE_CAP_FENCE_SIGNAL:
- case PIPE_CAP_CONSTBUF0_FLAGS:
- case PIPE_CAP_PACKED_UNIFORMS:
- case PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_TRIANGLES:
- case PIPE_CAP_CONSERVATIVE_RASTER_POST_SNAP_POINTS_LINES:
- case PIPE_CAP_CONSERVATIVE_RASTER_PRE_SNAP_TRIANGLES:
- case PIPE_CAP_CONSERVATIVE_RASTER_PRE_SNAP_POINTS_LINES:
- case PIPE_CAP_CONSERVATIVE_RASTER_POST_DEPTH_COVERAGE:
- case PIPE_CAP_MAX_CONSERVATIVE_RASTER_SUBPIXEL_PRECISION_BIAS:
- case PIPE_CAP_PROGRAMMABLE_SAMPLE_LOCATIONS:
- case PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS:
- case PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTERS:
- case PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS:
- case PIPE_CAP_SURFACE_SAMPLE_COUNT:
- case PIPE_CAP_IMAGE_ATOMIC_FLOAT_ADD:
- case PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE:
- case PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND:
- case PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS:
- case PIPE_CAP_NIR_COMPACT_ARRAYS:
- case PIPE_CAP_IMAGE_LOAD_FORMATTED:
- case PIPE_CAP_IMAGE_STORE_FORMATTED:
- case PIPE_CAP_COMPUTE_SHADER_DERIVATIVES:
- case PIPE_CAP_ATOMIC_FLOAT_MINMAX:
- case PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE:
- case PIPE_CAP_FRAGMENT_SHADER_INTERLOCK:
- case PIPE_CAP_FBFETCH_COHERENT:
- case PIPE_CAP_IMAGE_ATOMIC_INC_WRAP:
- case PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION:
- case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE:
- case PIPE_CAP_OPENCL_INTEGER_FUNCTIONS:
+ return 0;
+
+ case PIPE_CAP_MULTISAMPLE_Z_RESOLVE: /* potentially supported on some hw */
case PIPE_CAP_INTEGER_MULTIPLY_32X16: /* could be done */
- case PIPE_CAP_FRONTEND_NOOP:
- case PIPE_CAP_GL_SPIRV:
- case PIPE_CAP_SHADER_SAMPLES_IDENTICAL:
- case PIPE_CAP_TEXTURE_SHADOW_LOD:
- case PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED:
- case PIPE_CAP_PSIZ_CLAMPED:
- case PIPE_CAP_VIEWPORT_SWIZZLE:
- case PIPE_CAP_VIEWPORT_MASK:
- case PIPE_CAP_TEXTURE_BUFFER_SAMPLER:
- case PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0:
case PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE: /* when we fix MT stuff */
- case PIPE_CAP_ALPHA_TO_COVERAGE_DITHER_CONTROL:
- case PIPE_CAP_SHADER_ATOMIC_INT64:
- case PIPE_CAP_GLSL_ZERO_INIT:
- case PIPE_CAP_BLEND_EQUATION_ADVANCED:
- case PIPE_CAP_NO_CLIP_ON_COPY_TEX:
- case PIPE_CAP_DEVICE_PROTECTED_SURFACE:
case PIPE_CAP_NIR_IMAGES_AS_DEREF:
- case PIPE_CAP_SAMPLER_REDUCTION_MINMAX:
- case PIPE_CAP_SAMPLER_REDUCTION_MINMAX_ARB:
- case PIPE_CAP_DRAW_VERTEX_STATE:
- case PIPE_CAP_PREFER_POT_ALIGNED_VARYINGS:
- case PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE:
- case PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE:
- case PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS:
- case PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS:
- case PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY:
- case PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD:
case PIPE_CAP_HARDWARE_GL_SELECT:
return 0;
return nouveau_screen(pscreen)->is_uma;
default:
- if (!debug_cap_printed[param]) {
- debug_printf("%s: unhandled cap %d\n", __func__, param);
- debug_cap_printed[param] = true;
- }
- FALLTHROUGH;
- /* caps where we want the default value */
- case PIPE_CAP_DMABUF:
- case PIPE_CAP_THROTTLE:
return u_pipe_screen_get_param_defaults(pscreen, param);
}
}
const uint16_t class_3d = nouveau_screen(pscreen)->class_3d;
const struct nouveau_screen *screen = nouveau_screen(pscreen);
struct nouveau_device *dev = screen->device;
- static bool debug_cap_printed[PIPE_CAP_LAST] = {};
switch (param) {
/* non-boolean caps */
case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
case PIPE_CAP_TEXTURE_MIRROR_CLAMP_TO_EDGE:
case PIPE_CAP_TEXTURE_SWIZZLE:
- case PIPE_CAP_TEXTURE_SHADOW_MAP:
case PIPE_CAP_NPOT_TEXTURES:
case PIPE_CAP_MIXED_FRAMEBUFFER_SIZES:
case PIPE_CAP_MIXED_COLOR_DEPTH_BITS:
case PIPE_CAP_PRIMITIVE_RESTART_FIXED_INDEX:
case PIPE_CAP_VS_INSTANCEID:
case PIPE_CAP_VERTEX_ELEMENT_INSTANCE_DIVISOR:
- case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
case PIPE_CAP_CONDITIONAL_RENDER:
case PIPE_CAP_TEXTURE_BARRIER:
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
case PIPE_CAP_START_INSTANCE:
- case PIPE_CAP_BUFFER_MAP_PERSISTENT_COHERENT:
case PIPE_CAP_DRAW_INDIRECT:
case PIPE_CAP_USER_VERTEX_BUFFERS:
case PIPE_CAP_TEXTURE_QUERY_LOD:
case PIPE_CAP_SHADER_CLOCK:
case PIPE_CAP_COMPUTE:
case PIPE_CAP_CAN_BIND_CONST_BUFFER_AS_VERTEX:
- case PIPE_CAP_ALLOW_MAPPED_BUFFERS_DURING_EXECUTION:
case PIPE_CAP_QUERY_SO_OVERFLOW:
- case PIPE_CAP_DEST_SURFACE_SRGB_CONTROL:
case PIPE_CAP_TGSI_DIV:
case PIPE_CAP_IMAGE_ATOMIC_INC_WRAP:
case PIPE_CAP_DEMOTE_TO_HELPER_INVOCATION:
case PIPE_CAP_DEVICE_RESET_STATUS_QUERY:
- case PIPE_CAP_PREFER_IMM_ARRAYS_AS_CONSTBUF:
- case PIPE_CAP_FLATSHADE:
- case PIPE_CAP_ALPHA_TEST:
- case PIPE_CAP_POINT_SIZE_FIXED:
- case PIPE_CAP_TWO_SIDED_COLOR:
- case PIPE_CAP_CLIP_PLANES:
case PIPE_CAP_TEXTURE_SHADOW_LOD:
- case PIPE_CAP_PACKED_STREAM_OUTPUT:
case PIPE_CAP_CLEAR_SCISSORED:
- case PIPE_CAP_GL_CLAMP:
case PIPE_CAP_IMAGE_STORE_FORMATTED:
- case PIPE_CAP_TEXRECT:
- case PIPE_CAP_ALLOW_DYNAMIC_VAO_FASTPATH:
- case PIPE_CAP_SHAREABLE_SHADERS:
- case PIPE_CAP_PREFER_BACK_BUFFER_REUSE:
case PIPE_CAP_QUERY_MEMORY_INFO:
return 1;
case PIPE_CAP_TEXTURE_TRANSFER_MODES:
case PIPE_CAP_NIR_IMAGES_AS_DEREF:
return 0;
- /* unsupported caps */
- case PIPE_CAP_EMULATE_NONFIXED_PRIMITIVE_RESTART:
- case PIPE_CAP_DEPTH_CLIP_DISABLE_SEPARATE:
- case PIPE_CAP_FS_COORD_ORIGIN_LOWER_LEFT:
- case PIPE_CAP_FS_COORD_PIXEL_CENTER_INTEGER:
- case PIPE_CAP_SHADER_STENCIL_EXPORT:
- case PIPE_CAP_TGSI_CAN_COMPACT_CONSTANTS:
- case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
- case PIPE_CAP_VERTEX_ATTRIB_ELEMENT_ALIGNED_ONLY:
- case PIPE_CAP_FAKE_SW_MSAA:
- case PIPE_CAP_VS_WINDOW_SPACE_POSITION:
- case PIPE_CAP_RESOURCE_FROM_USER_MEMORY:
- case PIPE_CAP_FS_POSITION_IS_SYSVAL:
- case PIPE_CAP_FS_POINT_IS_SYSVAL:
- case PIPE_CAP_GENERATE_MIPMAP:
- case PIPE_CAP_BUFFER_SAMPLER_VIEW_RGBA_ONLY:
- case PIPE_CAP_SURFACE_REINTERPRET_BLOCKS:
case PIPE_CAP_PCI_GROUP:
case PIPE_CAP_PCI_BUS:
case PIPE_CAP_PCI_DEVICE:
case PIPE_CAP_PCI_FUNCTION:
- case PIPE_CAP_SHADER_CAN_READ_OUTPUTS:
- case PIPE_CAP_NATIVE_FENCE_FD:
- case PIPE_CAP_SPARSE_BUFFER_PAGE_SIZE:
- case PIPE_CAP_NIR_SAMPLERS_AS_DEREF:
- case PIPE_CAP_LOAD_CONSTBUF:
- case PIPE_CAP_TILE_RASTER_ORDER:
- case PIPE_CAP_MAX_COMBINED_SHADER_OUTPUT_RESOURCES:
- case PIPE_CAP_FRAMEBUFFER_MSAA_CONSTRAINTS:
- case PIPE_CAP_SIGNED_VERTEX_BUFFER_OFFSET:
- case PIPE_CAP_CONTEXT_PRIORITY_MASK:
- case PIPE_CAP_FENCE_SIGNAL:
- case PIPE_CAP_CONSTBUF0_FLAGS:
- case PIPE_CAP_PACKED_UNIFORMS:
- case PIPE_CAP_CONSERVATIVE_RASTER_PRE_SNAP_POINTS_LINES:
- case PIPE_CAP_MAX_COMBINED_SHADER_BUFFERS:
- case PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTERS:
- case PIPE_CAP_MAX_COMBINED_HW_ATOMIC_COUNTER_BUFFERS:
- case PIPE_CAP_SURFACE_SAMPLE_COUNT:
- case PIPE_CAP_QUERY_PIPELINE_STATISTICS_SINGLE:
- case PIPE_CAP_RGB_OVERRIDE_DST_ALPHA_BLEND:
- case PIPE_CAP_GLSL_TESS_LEVELS_AS_INPUTS:
- case PIPE_CAP_NIR_COMPACT_ARRAYS:
- case PIPE_CAP_IMAGE_LOAD_FORMATTED:
- case PIPE_CAP_COMPUTE_SHADER_DERIVATIVES:
- case PIPE_CAP_ATOMIC_FLOAT_MINMAX:
- case PIPE_CAP_CONSERVATIVE_RASTER_INNER_COVERAGE:
- case PIPE_CAP_FRAGMENT_SHADER_INTERLOCK:
- case PIPE_CAP_FBFETCH_COHERENT:
- case PIPE_CAP_TGSI_TG4_COMPONENT_IN_SWIZZLE:
+ return 0;
+
case PIPE_CAP_OPENCL_INTEGER_FUNCTIONS: /* could be done */
case PIPE_CAP_INTEGER_MULTIPLY_32X16: /* could be done */
- case PIPE_CAP_FRONTEND_NOOP:
- case PIPE_CAP_SHADER_SAMPLES_IDENTICAL:
- case PIPE_CAP_VIEWPORT_TRANSFORM_LOWERED:
- case PIPE_CAP_PSIZ_CLAMPED:
- case PIPE_CAP_TEXTURE_BUFFER_SAMPLER:
- case PIPE_CAP_PREFER_REAL_BUFFER_IN_CONSTBUF0:
case PIPE_CAP_MAP_UNSYNCHRONIZED_THREAD_SAFE: /* when we fix MT stuff */
case PIPE_CAP_ALPHA_TO_COVERAGE_DITHER_CONTROL: /* TODO */
case PIPE_CAP_SHADER_ATOMIC_INT64: /* TODO */
- case PIPE_CAP_GLSL_ZERO_INIT:
- case PIPE_CAP_BLEND_EQUATION_ADVANCED:
- case PIPE_CAP_NO_CLIP_ON_COPY_TEX:
- case PIPE_CAP_DEVICE_PROTECTED_SURFACE:
- case PIPE_CAP_SAMPLER_REDUCTION_MINMAX_ARB:
- case PIPE_CAP_DRAW_VERTEX_STATE:
- case PIPE_CAP_PREFER_POT_ALIGNED_VARYINGS:
- case PIPE_CAP_MAX_SPARSE_TEXTURE_SIZE:
- case PIPE_CAP_MAX_SPARSE_3D_TEXTURE_SIZE:
- case PIPE_CAP_MAX_SPARSE_ARRAY_TEXTURE_LAYERS:
- case PIPE_CAP_SPARSE_TEXTURE_FULL_ARRAY_CUBE_MIPMAPS:
- case PIPE_CAP_QUERY_SPARSE_TEXTURE_RESIDENCY:
- case PIPE_CAP_CLAMP_SPARSE_TEXTURE_LOD:
case PIPE_CAP_HARDWARE_GL_SELECT:
return 0;
return nouveau_screen(pscreen)->is_uma;
default:
- if (!debug_cap_printed[param]) {
- debug_printf("%s: unhandled cap %d\n", __func__, param);
- debug_cap_printed[param] = true;
- }
- FALLTHROUGH;
- /* caps where we want the default value */
- case PIPE_CAP_DMABUF:
- case PIPE_CAP_ESSL_FEATURE_LEVEL:
- case PIPE_CAP_THROTTLE:
return u_pipe_screen_get_param_defaults(pscreen, param);
}
}