void *draw; /**< private, for draw module (temporary?) */
/**
- * Stream uploaders created by the driver. All drivers, state trackers, and
+ * Stream uploaders created by the driver. All drivers, gallium frontends, and
* modules should use them.
*
* Use u_upload_alloc or u_upload_data as many times as you want.
*/
void (*render_condition)( struct pipe_context *pipe,
struct pipe_query *query,
- boolean condition,
+ bool condition,
enum pipe_render_cond_flag mode );
/**
void (*destroy_query)(struct pipe_context *pipe,
struct pipe_query *q);
- boolean (*begin_query)(struct pipe_context *pipe, struct pipe_query *q);
+ bool (*begin_query)(struct pipe_context *pipe, struct pipe_query *q);
bool (*end_query)(struct pipe_context *pipe, struct pipe_query *q);
/**
* \param wait if true, this query will block until the result is ready
* \return TRUE if results are ready, FALSE otherwise
*/
- boolean (*get_query_result)(struct pipe_context *pipe,
- struct pipe_query *q,
- boolean wait,
- union pipe_query_result *result);
+ bool (*get_query_result)(struct pipe_context *pipe,
+ struct pipe_query *q,
+ bool wait,
+ union pipe_query_result *result);
/**
* Get results of a query, storing into resource. Note that this may not
*/
void (*get_query_result_resource)(struct pipe_context *pipe,
struct pipe_query *q,
- boolean wait,
+ bool wait,
enum pipe_query_value_type result_type,
int index,
struct pipe_resource *resource,
* Set whether all current non-driver queries except TIME_ELAPSED are
* active or paused.
*/
- void (*set_active_query_state)(struct pipe_context *pipe, boolean enable);
+ void (*set_active_query_state)(struct pipe_context *pipe, bool enable);
+
+ /**
+ * INTEL Performance Query
+ */
+ /*@{*/
+
+ unsigned (*init_intel_perf_query_info)(struct pipe_context *pipe);
+
+ void (*get_intel_perf_query_info)(struct pipe_context *pipe,
+ unsigned query_index,
+ const char **name,
+ uint32_t *data_size,
+ uint32_t *n_counters,
+ uint32_t *n_active);
+
+ void (*get_intel_perf_query_counter_info)(struct pipe_context *pipe,
+ unsigned query_index,
+ unsigned counter_index,
+ const char **name,
+ const char **desc,
+ uint32_t *offset,
+ uint32_t *data_size,
+ uint32_t *type_enum,
+ uint32_t *data_type_enum,
+ uint64_t *raw_max);
+
+ struct pipe_query *(*new_intel_perf_query_obj)(struct pipe_context *pipe,
+ unsigned query_index);
+
+ bool (*begin_intel_perf_query)(struct pipe_context *pipe, struct pipe_query *q);
+
+ void (*end_intel_perf_query)(struct pipe_context *pipe, struct pipe_query *q);
+
+ void (*delete_intel_perf_query)(struct pipe_context *pipe, struct pipe_query *q);
+
+ void (*wait_intel_perf_query)(struct pipe_context *pipe, struct pipe_query *q);
+
+ bool (*is_intel_perf_query_ready)(struct pipe_context *pipe, struct pipe_query *q);
+
+ void (*get_intel_perf_query_data)(struct pipe_context *pipe,
+ struct pipe_query *q,
+ size_t data_size,
+ uint32_t *data,
+ uint32_t *bytes_written);
/*@}*/
const struct pipe_scissor_state * );
void (*set_window_rectangles)( struct pipe_context *,
- boolean include,
+ bool include,
unsigned num_rectangles,
const struct pipe_scissor_state * );
void (*set_sampler_views)(struct pipe_context *,
enum pipe_shader_type shader,
unsigned start_slot, unsigned num_views,
- struct pipe_sampler_view **);
+ struct pipe_sampler_view **views);
void (*set_tess_state)(struct pipe_context *,
const float default_outer_level[4],
* should contain at least \a count elements
* unless it's NULL, in which case no buffers will
* be bound.
+ * \param writable_bitmask If bit i is not set, buffers[i] will only be
+ * used with loads. If unsure, set to ~0.
*/
void (*set_shader_buffers)(struct pipe_context *,
enum pipe_shader_type shader,
unsigned start_slot, unsigned count,
- const struct pipe_shader_buffer *buffers);
+ const struct pipe_shader_buffer *buffers,
+ unsigned writable_bitmask);
/**
* Bind an array of hw atomic buffers for use by all shaders.
/*@}*/
+ /**
+ * INTEL_blackhole_render
+ */
+ /*@{*/
+
+ void (*set_frontend_noop)(struct pipe_context *,
+ bool enable);
+
+ /*@}*/
+
+
/**
* Resource functions for blit-like functionality
*
* The entire buffers are cleared (no scissor, no colormask, etc).
*
* \param buffers bitfield of PIPE_CLEAR_* values.
+ * \param scissor_state the scissored region to clear
* \param color pointer to a union of fiu array for each of r, g, b, a.
* \param depth depth clear value in [0,1].
* \param stencil stencil clear value
*/
void (*clear)(struct pipe_context *pipe,
unsigned buffers,
+ const struct pipe_scissor_state *scissor_state,
const union pipe_color_union *color,
double depth,
unsigned stencil);
* Generate mipmap.
* \return TRUE if mipmap generation succeeds, FALSE otherwise
*/
- boolean (*generate_mipmap)(struct pipe_context *ctx,
- struct pipe_resource *resource,
- enum pipe_format format,
- unsigned base_level,
- unsigned last_level,
- unsigned first_layer,
- unsigned last_layer);
+ bool (*generate_mipmap)(struct pipe_context *ctx,
+ struct pipe_resource *resource,
+ enum pipe_format format,
+ unsigned base_level,
+ unsigned last_level,
+ unsigned first_layer,
+ unsigned last_layer);
/**
* Create a 64-bit texture handle.