projects
/
mesa.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
nv50: fix bogus error message about 3d surfaces
[mesa.git]
/
src
/
gallium
/
drivers
/
svga
/
svga_state_vs.c
diff --git
a/src/gallium/drivers/svga/svga_state_vs.c
b/src/gallium/drivers/svga/svga_state_vs.c
index c614281858d3dc73be1980223585897f21d6ed22..ae9a20ebb816e113a106ae2dd7c148517a1fa0e8 100644
(file)
--- a/
src/gallium/drivers/svga/svga_state_vs.c
+++ b/
src/gallium/drivers/svga/svga_state_vs.c
@@
-23,7
+23,7
@@
*
**********************************************************/
*
**********************************************************/
-#include "
pipe/p
_inlines.h"
+#include "
util/u
_inlines.h"
#include "pipe/p_defines.h"
#include "util/u_format.h"
#include "util/u_math.h"
#include "pipe/p_defines.h"
#include "util/u_format.h"
#include "util/u_math.h"
@@
-71,7
+71,7
@@
static enum pipe_error compile_vs( struct svga_context *svga,
struct svga_shader_result **out_result )
{
struct svga_shader_result *result;
struct svga_shader_result **out_result )
{
struct svga_shader_result *result;
- enum pipe_error ret = PIPE_
OK
;
+ enum pipe_error ret = PIPE_
ERROR
;
result = svga_translate_vertex_program( vs, key );
if (result == NULL) {
result = svga_translate_vertex_program( vs, key );
if (result == NULL) {
@@
-80,8
+80,10
@@
static enum pipe_error compile_vs( struct svga_context *svga,
}
result->id = util_bitmask_add(svga->vs_bm);
}
result->id = util_bitmask_add(svga->vs_bm);
- if(result->id == UTIL_BITMASK_INVALID_INDEX)
+ if(result->id == UTIL_BITMASK_INVALID_INDEX) {
+ ret = PIPE_ERROR_OUT_OF_MEMORY;
goto fail;
goto fail;
+ }
ret = SVGA3D_DefineShader(svga->swc,
result->id,
ret = SVGA3D_DefineShader(svga->swc,
result->id,
@@
-150,16
+152,13
@@
static int emit_hw_vs( struct svga_context *svga,
}
if (result != svga->state.hw_draw.vs) {
}
if (result != svga->state.hw_draw.vs) {
- if (id != svga->state.hw_draw.shader_id[PIPE_SHADER_VERTEX]) {
- ret = SVGA3D_SetShader(svga->swc,
- SVGA3D_SHADERTYPE_VS,
- id );
- if (ret)
- return ret;
- }
+ ret = SVGA3D_SetShader(svga->swc,
+ SVGA3D_SHADERTYPE_VS,
+ id );
+ if (ret)
+ return ret;
svga->dirty |= SVGA_NEW_VS_RESULT;
svga->dirty |= SVGA_NEW_VS_RESULT;
- svga->state.hw_draw.shader_id[PIPE_SHADER_VERTEX] = id;
svga->state.hw_draw.vs = result;
}
svga->state.hw_draw.vs = result;
}
@@
-187,13
+186,15
@@
static int update_zero_stride( struct svga_context *svga,
svga->curr.zero_stride_vertex_elements = 0;
svga->curr.num_zero_stride_vertex_elements = 0;
svga->curr.zero_stride_vertex_elements = 0;
svga->curr.num_zero_stride_vertex_elements = 0;
- for (i = 0; i < svga->curr.
num_vertex_elements
; i++) {
- const struct pipe_vertex_element *vel = &svga->curr.ve[i];
+ for (i = 0; i < svga->curr.
velems->count
; i++) {
+ const struct pipe_vertex_element *vel = &svga->curr.ve
lems->velem
[i];
const struct pipe_vertex_buffer *vbuffer = &svga->curr.vb[
vel->vertex_buffer_index];
const struct pipe_vertex_buffer *vbuffer = &svga->curr.vb[
vel->vertex_buffer_index];
+
if (vbuffer->stride == 0) {
unsigned const_idx =
svga->curr.num_zero_stride_vertex_elements;
if (vbuffer->stride == 0) {
unsigned const_idx =
svga->curr.num_zero_stride_vertex_elements;
+ struct pipe_transfer *transfer;
struct translate *translate;
struct translate_key key;
void *mapped_buffer;
struct translate *translate;
struct translate_key key;
void *mapped_buffer;
@@
-219,19
+220,21
@@
static int update_zero_stride( struct svga_context *svga,
assert(vel->src_offset == 0);
assert(vel->src_offset == 0);
- mapped_buffer = pipe_buffer_map_range(
svga->pipe.screen
,
+ mapped_buffer = pipe_buffer_map_range(
&svga->pipe
,
vbuffer->buffer,
vel->src_offset,
util_format_get_blocksize(vel->src_format),
vbuffer->buffer,
vel->src_offset,
util_format_get_blocksize(vel->src_format),
- PIPE_BUFFER_USAGE_CPU_READ);
+ PIPE_TRANSFER_READ,
+ &transfer);
+
translate->set_buffer(translate, vel->vertex_buffer_index,
mapped_buffer,
translate->set_buffer(translate, vel->vertex_buffer_index,
mapped_buffer,
- vbuffer->stride);
- translate->run(translate, 0, 1,
+ vbuffer->stride
, ~0
);
+ translate->run(translate, 0, 1,
0,
svga->curr.zero_stride_constants);
svga->curr.zero_stride_constants);
- pipe_buffer_unmap(
svga->pipe.screen,
- vbuffer->buffer);
+ pipe_buffer_unmap(
&svga->pipe, transfer);
+
translate->release(translate);
}
}
translate->release(translate);
}
}