mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-22 07:00:12 +01:00
gallium: add QUERY_TIMESTAMP cap and get_timestamp screen function
This commit is contained in:
parent
d5a7866902
commit
bcc735aaca
11 changed files with 18 additions and 1 deletions
|
|
@ -209,6 +209,7 @@ i915_get_param(struct pipe_screen *screen, enum pipe_cap cap)
|
||||||
case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
|
case PIPE_CAP_VERTEX_COLOR_UNCLAMPED:
|
||||||
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
||||||
|
|
|
||||||
|
|
@ -207,6 +207,7 @@ llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
case PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT:
|
||||||
return 16;
|
return 16;
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* should only get here on unhandled cases */
|
/* should only get here on unhandled cases */
|
||||||
|
|
|
||||||
|
|
@ -116,6 +116,7 @@ nv30_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
||||||
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
|
case PIPE_CAP_MIXED_COLORBUFFER_FORMATS:
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
||||||
|
|
|
||||||
|
|
@ -172,6 +172,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_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_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
|
NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
|
||||||
|
|
|
||||||
|
|
@ -150,6 +150,7 @@ nvc0_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_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_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
default:
|
default:
|
||||||
NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
|
NOUVEAU_ERR("unknown PIPE_CAP %d\n", param);
|
||||||
|
|
|
||||||
|
|
@ -148,6 +148,7 @@ static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
case PIPE_CAP_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION:
|
||||||
case PIPE_CAP_COMPUTE:
|
case PIPE_CAP_COMPUTE:
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* SWTCL-only features. */
|
/* SWTCL-only features. */
|
||||||
|
|
|
||||||
|
|
@ -412,6 +412,7 @@ static int r600_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
|
||||||
case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
|
case PIPE_CAP_FRAGMENT_COLOR_CLAMPED:
|
||||||
case PIPE_CAP_VERTEX_COLOR_CLAMPED:
|
case PIPE_CAP_VERTEX_COLOR_CLAMPED:
|
||||||
case PIPE_CAP_USER_VERTEX_BUFFERS:
|
case PIPE_CAP_USER_VERTEX_BUFFERS:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Stream output. */
|
/* Stream output. */
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,7 @@ softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_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_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* should only get here on unhandled cases */
|
/* should only get here on unhandled cases */
|
||||||
|
|
|
||||||
|
|
@ -254,6 +254,7 @@ svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
|
||||||
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_BUFFER_STRIDE_4BYTE_ALIGNED_ONLY:
|
||||||
case PIPE_CAP_COMPUTE:
|
case PIPE_CAP_COMPUTE:
|
||||||
case PIPE_CAP_START_INSTANCE:
|
case PIPE_CAP_START_INSTANCE:
|
||||||
|
case PIPE_CAP_QUERY_TIMESTAMP:
|
||||||
return 0;
|
return 0;
|
||||||
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
case PIPE_CAP_VERTEX_ELEMENT_SRC_OFFSET_4BYTE_ALIGNED_ONLY:
|
||||||
return 1;
|
return 1;
|
||||||
|
|
|
||||||
|
|
@ -485,7 +485,8 @@ enum pipe_cap {
|
||||||
PIPE_CAP_USER_INDEX_BUFFERS = 69,
|
PIPE_CAP_USER_INDEX_BUFFERS = 69,
|
||||||
PIPE_CAP_USER_CONSTANT_BUFFERS = 70,
|
PIPE_CAP_USER_CONSTANT_BUFFERS = 70,
|
||||||
PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT = 71,
|
PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT = 71,
|
||||||
PIPE_CAP_START_INSTANCE = 72
|
PIPE_CAP_START_INSTANCE = 72,
|
||||||
|
PIPE_CAP_QUERY_TIMESTAMP = 73
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -108,6 +108,13 @@ struct pipe_screen {
|
||||||
enum pipe_compute_cap param,
|
enum pipe_compute_cap param,
|
||||||
void *ret);
|
void *ret);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Query a timestamp in nanoseconds. The returned value should match
|
||||||
|
* PIPE_QUERY_TIMESTAMP. This function returns immediately and doesn't
|
||||||
|
* wait for rendering to complete (which cannot be achieved with queries).
|
||||||
|
*/
|
||||||
|
uint64_t (*get_timestamp)(struct pipe_screen *);
|
||||||
|
|
||||||
struct pipe_context * (*context_create)( struct pipe_screen *,
|
struct pipe_context * (*context_create)( struct pipe_screen *,
|
||||||
void *priv );
|
void *priv );
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue