#include "state_tracker/st_api.h"
#include "main/fbobject.h"
#include "state_tracker/st_atom.h"
+#include "util/u_helpers.h"
#include "util/u_inlines.h"
#include "util/list.h"
#include "vbo/vbo.h"
boolean has_shader_model3;
boolean has_etc1;
boolean has_etc2;
+ boolean has_astc_2d_ldr;
boolean prefer_blit_based_texture_transfer;
boolean force_persample_in_shader;
boolean has_shareable_shaders;
boolean has_half_float_packing;
boolean has_multi_draw_indirect;
+ boolean has_single_pipe_stat;
boolean can_bind_const_buffer_as_vertex;
/**
GLuint poly_stipple[32]; /**< In OpenGL's bottom-to-top order */
GLuint fb_orientation;
+
+ bool enable_sample_locations;
+ unsigned sample_locations_samples;
+ uint8_t sample_locations[
+ PIPE_MAX_SAMPLE_LOCATION_GRID_SIZE *
+ PIPE_MAX_SAMPLE_LOCATION_GRID_SIZE * 32];
} state;
uint64_t dirty; /**< dirty states */
/** This masks out unused shader resources. Only valid in draw calls. */
uint64_t active_states;
+ unsigned pin_thread_counter; /* for L3 thread pinning on AMD Zen */
+
/* If true, further analysis of states is required to know if something
* has changed. Used mainly for shaders.
*/
struct pipe_sampler_state sampler;
struct pipe_sampler_state atlas_sampler;
enum pipe_format tex_format;
- void *vs;
struct st_bitmap_cache cache;
} bitmap;
/** for glDraw/CopyPixels */
struct {
void *zs_shaders[4];
- void *vert_shaders[2]; /**< ureg shaders */
} drawpix;
/** Cache of glDrawPixels images */
/** for drawing with st_util_vertex */
struct pipe_vertex_element util_velems[3];
- void *passthrough_fs; /**< simple pass-through frag shader */
+ /** passthrough vertex shader matching the util_velem attributes */
+ void *passthrough_vs;
enum pipe_texture_target internal_target;
/* Winsys buffers */
struct list_head winsys_buffers;
- /* For the initial pushdown, keep the list of vbo inputs. */
- struct vbo_inputs draw_arrays;
+ /* Throttling for texture uploads and similar operations to limit memory
+ * usage by limiting the number of in-flight operations based on
+ * the estimated allocated size needed to execute those operations.
+ */
+ struct util_throttle throttle;
};