v3dv: expose geometry shaders
A run of dEQP-VK.*geom* has 6328 test passes and 16 failures. 14 of these failures are related to a CTS bug affecting atomic operations for which I submitted a CL to Khronos. Another fail looks like it might be a case of the error threshold in CTS being slightly low. There is only one test fail in that list that looks like it might be an actual driver bug, but it is a variable pointers test, so it might be unrelated to geometry shaders in the end. Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11783>
This commit is contained in:
@@ -947,7 +947,7 @@ v3dv_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,
|
||||
.fullDrawIndexUint32 = false, /* Only available since V3D 4.4.9.1 */
|
||||
.imageCubeArray = true,
|
||||
.independentBlend = true,
|
||||
.geometryShader = false,
|
||||
.geometryShader = true,
|
||||
.tessellationShader = false,
|
||||
.sampleRateShading = true,
|
||||
.dualSrcBlend = false,
|
||||
@@ -974,7 +974,7 @@ v3dv_GetPhysicalDeviceFeatures(VkPhysicalDevice physicalDevice,
|
||||
.pipelineStatisticsQuery = false,
|
||||
.vertexPipelineStoresAndAtomics = true,
|
||||
.fragmentStoresAndAtomics = true,
|
||||
.shaderTessellationAndGeometryPointSize = false,
|
||||
.shaderTessellationAndGeometryPointSize = true,
|
||||
.shaderImageGatherExtended = false,
|
||||
.shaderStorageImageExtendedFormats = true,
|
||||
.shaderStorageImageMultisample = false,
|
||||
@@ -1243,11 +1243,11 @@ v3dv_GetPhysicalDeviceProperties(VkPhysicalDevice physicalDevice,
|
||||
.maxTessellationEvaluationOutputComponents = 0,
|
||||
|
||||
/* Geometry limits */
|
||||
.maxGeometryShaderInvocations = 0,
|
||||
.maxGeometryInputComponents = 0,
|
||||
.maxGeometryOutputComponents = 0,
|
||||
.maxGeometryOutputVertices = 0,
|
||||
.maxGeometryTotalOutputComponents = 0,
|
||||
.maxGeometryShaderInvocations = 32,
|
||||
.maxGeometryInputComponents = 64,
|
||||
.maxGeometryOutputComponents = 64,
|
||||
.maxGeometryOutputVertices = 256,
|
||||
.maxGeometryTotalOutputComponents = 1024,
|
||||
|
||||
/* Fragment limits */
|
||||
.maxFragmentInputComponents = max_varying_components,
|
||||
|
||||
@@ -39,17 +39,16 @@
|
||||
|
||||
/* Our Vulkan resource indices represent indices in descriptor maps which
|
||||
* include all shader stages, so we need to size the arrays below
|
||||
* accordingly. For now we only support a maximum of 2 stages for VS and
|
||||
* FS.
|
||||
* accordingly. For now we only support a maximum of 3 stages: VS, GS, FS.
|
||||
*/
|
||||
#define MAX_STAGES 2
|
||||
#define MAX_STAGES 3
|
||||
|
||||
#define MAX_TOTAL_TEXTURE_SAMPLERS (V3D_MAX_TEXTURE_SAMPLERS * MAX_STAGES)
|
||||
struct texture_bo_list {
|
||||
struct v3dv_bo *tex[MAX_TOTAL_TEXTURE_SAMPLERS];
|
||||
};
|
||||
|
||||
/* This tracks state BOs forboth textures and samplers, so we
|
||||
/* This tracks state BOs for both textures and samplers, so we
|
||||
* multiply by 2.
|
||||
*/
|
||||
#define MAX_TOTAL_STATES (2 * V3D_MAX_TEXTURE_SAMPLERS * MAX_STAGES)
|
||||
|
||||
Reference in New Issue
Block a user