X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fintel%2Fvulkan%2Fanv_device.c;h=e64790e9685e27d0eac2eadb413d0dfda16c0253;hb=90ab43d1bbb825cef6fe9acd04a1e8e18cddb372;hp=f864248596c4d59ac5d48348d3e26ebdee688375;hpb=a1e69930e43f2876f662042bb94b76124dbe7dfc;p=mesa.git diff --git a/src/intel/vulkan/anv_device.c b/src/intel/vulkan/anv_device.c index f864248596c..e64790e9685 100644 --- a/src/intel/vulkan/anv_device.c +++ b/src/intel/vulkan/anv_device.c @@ -28,7 +28,7 @@ #include #include "anv_private.h" -#include "git_sha1.h" +#include "anv_timestamp.h" #include "util/strtod.h" #include "util/debug.h" @@ -182,6 +182,12 @@ static const VkExtensionProperties global_extensions[] = { .specVersion = 5, }, #endif +#ifdef VK_USE_PLATFORM_XLIB_KHR + { + .extensionName = VK_KHR_XLIB_SURFACE_EXTENSION_NAME, + .specVersion = 5, + }, +#endif #ifdef VK_USE_PLATFORM_WAYLAND_KHR { .extensionName = VK_KHR_WAYLAND_SURFACE_EXTENSION_NAME, @@ -372,15 +378,15 @@ void anv_GetPhysicalDeviceFeatures( .robustBufferAccess = true, .fullDrawIndexUint32 = true, .imageCubeArray = false, - .independentBlend = pdevice->info->gen >= 8, + .independentBlend = true, .geometryShader = true, .tessellationShader = false, - .sampleRateShading = false, + .sampleRateShading = true, .dualSrcBlend = true, .logicOp = true, .multiDrawIndirect = false, .drawIndirectFirstInstance = false, - .depthClamp = false, + .depthClamp = true, .depthBiasClamp = false, .fillModeNonSolid = true, .depthBounds = false, @@ -426,7 +432,7 @@ void anv_device_get_cache_uuid(void *uuid) { memset(uuid, 0, VK_UUID_SIZE); - snprintf(uuid, VK_UUID_SIZE, "anv-%s", MESA_GIT_SHA1 + 4); + snprintf(uuid, VK_UUID_SIZE, "anv-%s", ANV_TIMESTAMP); } void anv_GetPhysicalDeviceProperties( @@ -438,6 +444,10 @@ void anv_GetPhysicalDeviceProperties( const float time_stamp_base = devinfo->gen >= 9 ? 83.333 : 80.0; + /* See assertions made when programming the buffer surface state. */ + const uint32_t max_raw_buffer_sz = devinfo->gen >= 7 ? + (1ul << 30) : (1ul << 27); + VkSampleCountFlags sample_counts = isl_device_get_sample_counts(&pdevice->isl_dev); @@ -448,8 +458,8 @@ void anv_GetPhysicalDeviceProperties( .maxImageDimensionCube = (1 << 14), .maxImageArrayLayers = (1 << 11), .maxTexelBufferElements = 128 * 1024 * 1024, - .maxUniformBufferRange = UINT32_MAX, - .maxStorageBufferRange = UINT32_MAX, + .maxUniformBufferRange = (1ul << 27), + .maxStorageBufferRange = max_raw_buffer_sz, .maxPushConstantsSize = MAX_PUSH_CONSTANTS_SIZE, .maxMemoryAllocationCount = UINT32_MAX, .maxSamplerAllocationCount = 64 * 1024, @@ -520,9 +530,9 @@ void anv_GetPhysicalDeviceProperties( .maxTexelOffset = 7, .minTexelGatherOffset = -8, .maxTexelGatherOffset = 7, - .minInterpolationOffset = 0, /* FIXME */ - .maxInterpolationOffset = 0, /* FIXME */ - .subPixelInterpolationOffsetBits = 0, /* FIXME */ + .minInterpolationOffset = -0.5, + .maxInterpolationOffset = 0.4375, + .subPixelInterpolationOffsetBits = 4, .maxFramebufferWidth = (1 << 14), .maxFramebufferHeight = (1 << 14), .maxFramebufferLayers = (1 << 10), @@ -878,7 +888,7 @@ VkResult anv_CreateDevice( anv_bo_init_new(&device->workaround_bo, device, 1024); - anv_block_pool_init(&device->scratch_block_pool, device, 0x10000); + anv_scratch_pool_init(device, &device->scratch_pool); anv_queue_init(device, &device->queue); @@ -947,7 +957,7 @@ void anv_DestroyDevice( anv_block_pool_finish(&device->instruction_block_pool); anv_state_pool_finish(&device->surface_state_pool); anv_block_pool_finish(&device->surface_state_block_pool); - anv_block_pool_finish(&device->scratch_block_pool); + anv_scratch_pool_finish(device, &device->scratch_pool); close(device->fd);